diff --git a/api/src/routes/guilds/#guild_id/templates.ts b/api/src/routes/guilds/#guild_id/templates.ts
index e441ee12..a7613abf 100644
--- a/api/src/routes/guilds/#guild_id/templates.ts
+++ b/api/src/routes/guilds/#guild_id/templates.ts
@@ -1,5 +1,5 @@
import { Request, Response, Router } from "express";
-import { TemplateModel, GuildModel, getPermission, toObject, UserModel, Snowflake } from "@fosscord/util";
+import { Guild, getPermission, Template } from "@fosscord/util";
import { HTTPError } from "lambert-server";
import { TemplateCreateSchema, TemplateModifySchema } from "../../../schema/Template";
import { check } from "../../../util/instanceOf";
@@ -7,43 +7,41 @@ import { generateCode } from "../../../util/String";
const router: Router = Router();
-const TemplateGuildProjection = {
- name: true,
- description: true,
- region: true,
- verification_level: true,
- default_message_notifications: true,
- explicit_content_filter: true,
- preferred_locale: true,
- afk_timeout: true,
- roles: true,
- channels: true,
- afk_channel_id: true,
- system_channel_id: true,
- system_channel_flags: true,
- icon_hash: true
-};
+const TemplateGuildProjection: (keyof Guild)[] = [
+ "name",
+ "description",
+ "region",
+ "verification_level",
+ "default_message_notifications",
+ "explicit_content_filter",
+ "preferred_locale",
+ "afk_timeout",
+ "roles",
+ // "channels",
+ "afk_channel_id",
+ "system_channel_id",
+ "system_channel_flags",
+ "icon"
+];
router.get("/", async (req: Request, res: Response) => {
const { guild_id } = req.params;
- var templates = await TemplateModel.find({ source_guild_id: guild_id }).exec();
+ var templates = await Template.find({ source_guild_id: guild_id });
- return res.json(toObject(templates));
+ return res.json(templates);
});
router.post("/", check(TemplateCreateSchema), async (req: Request, res: Response) => {
const { guild_id } = req.params;
- const guild = await GuildModel.findOne({ id: guild_id }, TemplateGuildProjection).exec();
+ const guild = await Guild.findOneOrFail({ where: { id: guild_id }, select: TemplateGuildProjection });
const perms = await getPermission(req.user_id, guild_id);
perms.hasThrow("MANAGE_GUILD");
- const exists = await TemplateModel.findOne({ id: guild_id })
- .exec()
- .catch((e) => {});
+ const exists = await Template.findOneOrFail({ id: guild_id }).catch((e) => {});
if (exists) throw new HTTPError("Template already exists", 400);
- const template = await new TemplateModel({
+ const template = await new Template({
...req.body,
code: generateCode(),
creator_id: req.user_id,
@@ -53,7 +51,7 @@ router.post("/", check(TemplateCreateSchema), async (req: Request, res: Response
serialized_source_guild: guild
}).save();
- res.json(toObject(template)).send();
+ res.json(template);
});
router.delete("/:code", async (req: Request, res: Response) => {
@@ -63,41 +61,39 @@ router.delete("/:code", async (req: Request, res: Response) => {
const perms = await getPermission(req.user_id, guild_id);
perms.hasThrow("MANAGE_GUILD");
- const template = await TemplateModel.findOneAndDelete({
+ const template = await Template.delete({
code
- }).exec();
+ });
- res.send(toObject(template));
+ res.json(template);
});
router.put("/:code", async (req: Request, res: Response) => {
- const guild_id = req.params.guild_id;
- const { code } = req.params;
+ // synchronizes the template
+ const { code, guild_id } = req.params;
- const guild = await GuildModel.findOne({ id: guild_id }, TemplateGuildProjection).exec();
+ const guild = await Guild.findOneOrFail({ where: { id: guild_id }, select: TemplateGuildProjection });
const perms = await getPermission(req.user_id, guild_id);
perms.hasThrow("MANAGE_GUILD");
- const template = await TemplateModel.findOneAndUpdate({ code }, { serialized_source_guild: guild }, { new: true }).exec();
+ const template = await new Template({ code, serialized_source_guild: guild }).save();
- res.json(toObject(template)).send();
+ res.json(template);
});
router.patch("/:code", check(TemplateModifySchema), async (req: Request, res: Response) => {
+ // updates the template description
const { guild_id } = req.params;
const { code } = req.params;
+ const { name, description } = req.body;
const perms = await getPermission(req.user_id, guild_id);
perms.hasThrow("MANAGE_GUILD");
- const template = await TemplateModel.findOneAndUpdate(
- { code },
- { name: req.body.name, description: req.body.description },
- { new: true }
- ).exec();
+ const template = await new Template({ code, name: name, description: description }).save();
- res.json(toObject(template)).send();
+ res.json(template);
});
export default router;
|