summary refs log tree commit diff
diff options
context:
space:
mode:
authorIntevel ツ <59223342+Intevel@users.noreply.github.com>2021-02-19 14:58:56 +0100
committerIntevel ツ <59223342+Intevel@users.noreply.github.com>2021-02-19 14:58:56 +0100
commit4d25d98af364dbdc6eefb39e9b45991507dc44c2 (patch)
treeb1b13dcdaeee97fe4d9dc92785b2037a71538fa6
parent:bug: update user model on guild creation (diff)
downloadserver-4d25d98af364dbdc6eefb39e9b45991507dc44c2.tar.xz
Create guilds.ts
-rw-r--r--src/routes/api/v8/users/@me/guilds.ts52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/routes/api/v8/users/@me/guilds.ts b/src/routes/api/v8/users/@me/guilds.ts
new file mode 100644

index 00000000..cabfe7b5 --- /dev/null +++ b/src/routes/api/v8/users/@me/guilds.ts
@@ -0,0 +1,52 @@ +import { Router, Request, Response } from "express"; +import { + GuildModel, + MemberModel, + UserModel, + GuildDeleteEvent, + GuildMemberRemoveEvent +} from "fosscord-server-util"; +import { HTTPError } from "lambert-server"; +import { emitEvent } from "../../../../../util/Event"; + +const router: Router = Router(); + +router.get("/", async (req: Request, res: Response) => { + const user = await UserModel.findOne( + { id: req.userid }, + "guilds username discriminator id public_flags avatar" + ).exec(); + + if (!user) throw new HTTPError("User not found", 404); + + var guildIDs = user.guilds || []; + var guildsss = await GuildModel.find({ id: { $in: guildIDs } }).exec(); + res.json(guildsss) +}); + +router.delete("/:id", async (req: Request, res: Response) => { + const guildID = BigInt(req.params.id); + var user = await UserModel.findOneAndUpdate({ id: req.userid}, { $pull: { guilds: guildID }}).exec(); + await MemberModel.deleteOne({ id: req.userid, guild_id: guildID}).exec(); + await emitEvent({ + event: "GUILD_DELETE", + data: { + id: guildID + }, + user_id: req.userid + } as GuildDeleteEvent); + + await emitEvent({ + event: "GUILD_MEMBER_REMOVE", + data: { + guild_id: guildID, + user: user + }, + guild_id: guildID + } as GuildMemberRemoveEvent); + + + return res.status(204).send(); +}); + +export default router;