diff --git a/src/routes/api/v8/guilds/#id/index.ts b/src/routes/api/v8/guilds/#id/index.ts
new file mode 100644
index 00000000..38fbd5f2
--- /dev/null
+++ b/src/routes/api/v8/guilds/#id/index.ts
@@ -0,0 +1,56 @@
+import { Request, Response, Router } from "express";
+import { getPermission, GuildDeleteEvent, GuildModel, MemberModel } from "fosscord-server-util";
+import { HTTPError } from "lambert-server";
+import { GuildUpdateSchema } from "../../../../../schema/Guild";
+import { emitEvent } from "../../../../../util/Event";
+import { check } from "../../../../../util/instanceOf";
+
+const router = Router();
+
+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");
+
+ 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);
+
+ return res.json(guild);
+});
+
+router.patch("/", check(GuildUpdateSchema), async (req: Request, res: Response) => {
+ const body = req.body as GuildUpdateSchema;
+ const guild_id = BigInt(req.params.id);
+
+ const guild = await GuildModel.findOne({ id: guild_id }).exec();
+ if (!guild) throw new HTTPError("This guild does not exist", 404);
+
+ const perms = await getPermission(req.userid, guild_id);
+ if (!perms.has("MANAGE_GUILD")) throw new HTTPError("You do not have the MANAGE_GUILD permission", 401);
+
+ await GuildModel.updateOne({ id: guild_id }, body).exec();
+ return res.status(204);
+});
+
+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();
+ 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);
+
+ await emitEvent({
+ event: "GUILD_DELETE",
+ data: {
+ id: guild_id,
+ },
+ guild_id: guild_id,
+ } as GuildDeleteEvent);
+
+ await GuildModel.deleteOne({ id: guild_id }).exec();
+
+ return res.status(204).send();
+});
+
+export default router;
diff --git a/src/routes/api/v8/guilds/#id/members.ts b/src/routes/api/v8/guilds/#id/members.ts
new file mode 100644
index 00000000..68434830
--- /dev/null
+++ b/src/routes/api/v8/guilds/#id/members.ts
@@ -0,0 +1,16 @@
+import { Request, Response, Router } from "express";
+import { GuildModel, MemberModel } from "fosscord-server-util";
+import { HTTPError } from "lambert-server";
+
+const router = Router();
+
+// TODO: needs pagination/only send over websocket
+router.get("/:id/members", async (req: Request, res: Response) => {
+ const guild = await GuildModel.findOne({ id: BigInt(req.params.id) }).exec();
+ if (!guild) throw new HTTPError("Guild not found", 404);
+
+ var members = await MemberModel.find({ guild_id: BigInt(req.params.id) }).exec();
+ return res.json(members);
+});
+
+export default router;
diff --git a/src/routes/api/v8/guilds/index.ts b/src/routes/api/v8/guilds/index.ts
index ae118d51..54b2d2a4 100644
--- a/src/routes/api/v8/guilds/index.ts
+++ b/src/routes/api/v8/guilds/index.ts
@@ -1,49 +1,14 @@
import { Router, Request, Response } from "express";
-import {
- GuildDeleteEvent,
- RoleModel,
- GuildModel,
- MemberModel,
- Snowflake,
- getPermission,
- Guild,
-} from "fosscord-server-util";
+import { RoleModel, GuildModel, Snowflake, Guild } from "fosscord-server-util";
import { HTTPError } from "lambert-server";
import { check } from "./../../../../util/instanceOf";
-import { GuildCreateSchema, GuildUpdateSchema } from "../../../../schema/Guild";
-import { emitEvent } from "../../../../util/Event";
+import { GuildCreateSchema } from "../../../../schema/Guild";
import Config from "../../../../util/Config";
import { getPublicUser } from "../../../../util/User";
import { addMember } from "../../../../util/Member";
const router: Router = Router();
-router.get("/:id", 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");
-
- 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);
-
- return res.json(guild);
-});
-
-router.patch("/:id", check(GuildUpdateSchema), async (req: Request, res: Response) => {
- const body = req.body as GuildUpdateSchema;
- const guild_id = BigInt(req.params.id);
-
- const guild = await GuildModel.findOne({ id: guild_id }).exec();
- if (!guild) throw new HTTPError("This guild does not exist", 404);
-
- const perms = await getPermission(req.userid, guild_id);
- if (!perms.has("MANAGE_GUILD")) throw new HTTPError("You do not have the MANAGE_GUILD permission", 401);
-
- await GuildModel.updateOne({ id: guild_id }, body).exec();
- return res.status(204);
-});
-
router.post("/", check(GuildCreateSchema), async (req: Request, res: Response) => {
const body = req.body as GuildCreateSchema;
@@ -113,33 +78,4 @@ router.post("/", check(GuildCreateSchema), async (req: Request, res: Response) =
res.status(201).json({ id: guild.id });
});
-router.delete("/:id", 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();
- 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);
-
- await emitEvent({
- event: "GUILD_DELETE",
- data: {
- id: guild_id,
- },
- guild_id: guild_id,
- } as GuildDeleteEvent);
-
- await GuildModel.deleteOne({ id: guild_id }).exec();
-
- return res.status(204).send();
-});
-
-// TODO: needs pagination/only send over websocket
-router.get("/:id/members", async (req: Request, res: Response) => {
- const guild = await GuildModel.findOne({ id: BigInt(req.params.id) }).exec();
- if (!guild) throw new HTTPError("Guild not found", 404);
-
- var members = await MemberModel.find({ guild_id: BigInt(req.params.id) }).exec();
- return res.json(members);
-});
-
export default router;
|