diff --git a/api/src/routes/guilds/#guild_id/index.ts b/api/src/routes/guilds/#guild_id/index.ts
index af9ea9d6..d205b164 100644
--- a/api/src/routes/guilds/#guild_id/index.ts
+++ b/api/src/routes/guilds/#guild_id/index.ts
@@ -1,19 +1,5 @@
import { Request, Response, Router } from "express";
-import {
- Channel,
- emitEvent,
- EmojiModel,
- getPermission,
- GuildDeleteEvent,
- Guild,
- GuildUpdateEvent,
- InviteModel,
- Member,
- Message,
- Role,
- toObject,
- User
-} from "@fosscord/util";
+import { emitEvent, getPermission, Guild, GuildUpdateEvent, Member } from "@fosscord/util";
import { HTTPError } from "lambert-server";
import { GuildUpdateSchema } from "../../../schema/Guild";
@@ -26,9 +12,15 @@ const router = Router();
router.get("/", async (req: Request, res: Response) => {
const { guild_id } = req.params;
- const guild = await Guild.findOneOrFail({ id: guild_id }).populate({ path: "joined_at", match: { id: req.user_id } });
- const member = await Member.exists({ guild_id: guild_id, id: req.user_id });
- if (!member) throw new HTTPError("You are not a member of the guild you are trying to access", 401);
+ const [guild, member_count, member] = await Promise.all([
+ Guild.findOneOrFail({ id: guild_id }),
+ Member.count({ guild_id: guild_id, id: req.user_id }),
+ Member.findOneOrFail(req.user_id)
+ ]);
+ if (!member_count) throw new HTTPError("You are not a member of the guild you are trying to access", 401);
+
+ // @ts-ignore
+ guild.joined_at = member?.joined_at;
return res.json(guild);
});
@@ -45,15 +37,12 @@ router.patch("/", check(GuildUpdateSchema), async (req: Request, res: Response)
if (body.banner) body.banner = await handleFile(`/banners/${guild_id}`, body.banner);
if (body.splash) body.splash = await handleFile(`/splashes/${guild_id}`, body.splash);
- const guild = await Guild.findOneOrFailAndUpdate({ id: guild_id }, body, { new: true }).populate({
- path: "joined_at",
- match: { id: req.user_id }
- });
- const data = guild;
+ const guild = await Guild.findOneOrFail({ id: guild_id });
+ guild.assign(body);
- emitEvent({ event: "GUILD_UPDATE", data: data, guild_id } as GuildUpdateEvent);
+ await Promise.all([guild.save(), emitEvent({ event: "GUILD_UPDATE", data: guild, guild_id } as GuildUpdateEvent)]);
- return res.json(data);
+ return res.json(guild);
});
export default router;
|