summary refs log tree commit diff
path: root/src/routes/api/v8/guilds/#id/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes/api/v8/guilds/#id/index.ts')
-rw-r--r--src/routes/api/v8/guilds/#id/index.ts23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/routes/api/v8/guilds/#id/index.ts b/src/routes/api/v8/guilds/#id/index.ts

index 38fbd5f2..09f2a5c2 100644 --- a/src/routes/api/v8/guilds/#id/index.ts +++ b/src/routes/api/v8/guilds/#id/index.ts
@@ -1,5 +1,16 @@ import { Request, Response, Router } from "express"; -import { getPermission, GuildDeleteEvent, GuildModel, MemberModel } from "fosscord-server-util"; +import { + ChannelModel, + EmojiModel, + getPermission, + GuildDeleteEvent, + GuildModel, + InviteModel, + MemberModel, + MessageModel, + RoleModel, + UserModel, +} from "fosscord-server-util"; import { HTTPError } from "lambert-server"; import { GuildUpdateSchema } from "../../../../../schema/Guild"; import { emitEvent } from "../../../../../util/Event"; @@ -11,7 +22,7 @@ router.get("/", async (req: Request, res: Response) => { const guild_id = BigInt(req.params.id); const guild = await GuildModel.findOne({ id: guild_id }).exec(); - if (!guild) throw new HTTPError("Guild does not exist"); + if (!guild) throw new HTTPError("Guild does not exist", 404); const member = await MemberModel.findOne({ guild_id: guild_id, id: req.userid }, "id").exec(); if (!member) throw new HTTPError("You are not a member of the guild you are trying to access", 401); @@ -36,7 +47,7 @@ router.patch("/", check(GuildUpdateSchema), async (req: Request, res: Response) router.delete("/", async (req: Request, res: Response) => { var guild_id = BigInt(req.params.id); - const guild = await GuildModel.findOne({ id: BigInt(req.params.id) }, "owner_id").exec(); + const guild = await GuildModel.findOne({ id: guild_id }, "owner_id").exec(); if (!guild) throw new HTTPError("This guild does not exist", 404); if (guild.owner_id !== req.userid) throw new HTTPError("You are not the owner of this guild", 401); @@ -49,6 +60,12 @@ router.delete("/", async (req: Request, res: Response) => { } as GuildDeleteEvent); await GuildModel.deleteOne({ id: guild_id }).exec(); + await UserModel.updateMany({ guilds: guild_id }, { $pull: { guilds: guild_id } }).exec(); + await RoleModel.deleteMany({ guild_id }).exec(); + await ChannelModel.deleteMany({ guild_id }).exec(); + await EmojiModel.deleteMany({ guild_id }).exec(); + await InviteModel.deleteMany({ guild_id }).exec(); + await MessageModel.deleteMany({ guild_id }).exec(); return res.status(204).send(); });