From 851897a95a996e3cbfc863d043064f90198807d5 Mon Sep 17 00:00:00 2001 From: xnacly Date: Tue, 9 Feb 2021 19:37:39 +0100 Subject: [PATCH] added guild routes --- package-lock.json | Bin 151949 -> 71132 bytes package.json | 10 +- src/routes/api/v8/guilds/index.ts | 149 +++++++++++++++++++++++++++++- 3 files changed, 153 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 366b5b8ea15df25af8f7bc19eb5e7caccf90f47c..88ea3b9e3a8b257af7100833c00b8157a9907b29 100644 GIT binary patch delta 446 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 { + const member = await db.data.guilds({ id: req.params.id }).members({ id: req.userid }).get({}); + + if (!member) { + throw new HTTPError("you arent a member of the guild you are trying to access", 401); + } + + const guild = await db.data.guilds({ id: req.params.id }).get({ + id: true, + name: true, + icon: true, + // icon_hash: true, + splash: true, + discovery_splash: true, + owner: true, + owner_id: true, + permissions: true, + region: true, + afk_channel_id: true, + afk_timeout: true, + widget_enabled: true, + widget_channel_id: true, + verification_level: true, + default_message_notifications: true, + explicit_content_filter: true, + roles: true, + emojis: true, + features: true, + mfa_level: true, + application_id: true, + system_channel_id: true, + system_channel_flags: true, + rules_channel_id: true, + joined_at: true, + // large: true, + // unavailable: true, + member_count: true, + // voice_states: true, + // members: true, + // channels: true, + // presences: true, + max_presences: true, + max_members: true, + vanity_url_code: true, + description: true, + banner: true, + premium_tier: true, + premium_subscription_count: true, + preferred_locale: true, + public_updates_channel_id: true, + max_video_channel_users: true, + approximate_member_count: true, + approximate_presence_count: true, + // welcome_screen: true, + }); + return res.json(guild); +}); + +// router.put("/:id", check(GuildSchema), async (req: Request, res: Response) => {}); // TODO: add addGuildSchema & createGuildSchema + +// TODO: finish POST route +// router.post("/", check(GuildSchema), async (req: Request, res: Response) => { +// const body = req.body as GuildSchema; +// const guildID = BigInt(); +// const guild: Guild = { +// ...body, // ! contains name & icon values +// afk_channel_id: undefined, +// afk_timeout: undefined, +// application_id: undefined, +// approximate_member_count: undefined, +// approximate_presence_count: undefined, +// banner: undefined, +// channels: [], +// default_message_notifications: undefined, +// description: undefined, +// discovery_splash: undefined, +// emojis: [], +// explicit_content_filter: undefined, +// features: [], +// // icon: undefined, +// id: guildID, +// // joined_at: undefined, +// large: undefined, +// max_members: undefined, +// max_presences: undefined, +// max_video_channel_users: undefined, +// member_count: undefined, +// members: undefined, +// mfa_level: undefined, +// // name: undefined, +// owner_id: req.userid, // ! important +// // owner: undefined, +// permissions: undefined, +// preferred_locale: undefined, +// premium_subscription_count: undefined, +// premium_tier: undefined, +// presences: [], +// public_updates_channel_id: undefined, +// region: undefined, +// roles: [], +// rules_channel_id: undefined, +// splash: undefined, +// system_channel_flags: undefined, +// system_channel_id: undefined, +// unavailable: undefined, +// vanity_url_code: undefined, +// verification_level: undefined, +// voice_states: [], +// welcome_screen: [], +// widget_channel_id: undefined, +// widget_enabled: undefined, +// }; + +// try { +// await db.data.guilds.push(guild); +// } catch (error) { +// throw new HTTPError("Couldnt create Guild", 500); +// } +// res.status(201).json({ id: guild.id }); +// }); + +router.delete("/:id", async (req: Request, res: Response) => { + const { id: guildID } = req.params; + + const guild = await db.data.guilds({ id: guildID }).get({ owner_id: true }); + + if (!guild) { + throw new HTTPError("This guild doesnt exist", 404); + } + + if (!guild.owner_id) { + throw new HTTPError("You arent the owner of this guild", 401); + } + + try { + await db.data.guilds({ id: guildID }).delete(); + } catch (error) { + throw new HTTPError(`Couldnt delete guild: ${error}`, 500); + } + + return res.status(204); +}); + export default router;