diff --git a/api/src/routes/guilds/#guild_id/channels.ts b/api/src/routes/guilds/#guild_id/channels.ts
index b53c9a5a..7b0e94b6 100644
--- a/api/src/routes/guilds/#guild_id/channels.ts
+++ b/api/src/routes/guilds/#guild_id/channels.ts
@@ -1,5 +1,5 @@
import { Router, Response, Request } from "express";
-import { Channel, toObject, ChannelUpdateEvent, getPermission, emitEvent } from "@fosscord/util";
+import { Channel, ChannelUpdateEvent, getPermission, emitEvent } from "@fosscord/util";
import { HTTPError } from "lambert-server";
import { ChannelModifySchema } from "../../../schema/Channel";
@@ -48,15 +48,19 @@ router.patch(
if (x.parent_id) {
opts.parent_id = x.parent_id;
- const parent_channel = await Channel.findOneOrFail({ id: x.parent_id, guild_id }, { permission_overwrites: true });
+ const parent_channel = await Channel.findOneOrFail({
+ where: { id: x.parent_id, guild_id },
+ select: ["permission_overwrites"]
+ });
if (x.lock_permissions) {
opts.permission_overwrites = parent_channel.permission_overwrites;
}
}
- const channel = await Channel.findOneOrFailAndUpdate({ id: x.id, guild_id }, opts, { new: true });
+ await Channel.update({ guild_id, id: x.id }, opts);
+ const channel = await Channel.findOneOrFail({ guild_id, id: x.id });
- await emitEvent({ event: "CHANNEL_UPDATE", data: channel), channel_id: x.id, guild_id } as ChannelUpdateEvent;
+ await emitEvent({ event: "CHANNEL_UPDATE", data: channel, channel_id: x.id, guild_id } as ChannelUpdateEvent);
})
]);
diff --git a/api/src/routes/guilds/#guild_id/templates.ts b/api/src/routes/guilds/#guild_id/templates.ts
index 13917dbd..e1d2f5fd 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, Guild, getPermission, toObject, User, 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,22 +7,22 @@ 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;
@@ -34,14 +34,14 @@ router.get("/", async (req: Request, res: Response) => {
router.post("/", check(TemplateCreateSchema), async (req: Request, res: Response) => {
const { guild_id } = req.params;
- const guild = await Guild.findOneOrFail({ id: guild_id }, TemplateGuildProjection);
+ 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 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,
@@ -51,7 +51,7 @@ router.post("/", check(TemplateCreateSchema), async (req: Request, res: Response
serialized_source_guild: guild
}).save();
- res.json(template)).send(;
+ res.json(template);
});
router.delete("/:code", async (req: Request, res: Response) => {
@@ -61,37 +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 Template.findOneOrFailAndDelete({
+ const template = await Template.delete({
code
});
- res.send(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 Guild.findOneOrFail({ id: guild_id }, TemplateGuildProjection);
+ 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 Template.findOneOrFailAndUpdate({ code }, { serialized_source_guild: guild }, { new: true });
+ const template = await new Template({ code, serialized_source_guild: guild }).save();
- res.json(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 Template.findOneOrFailAndUpdate({ code }, { name: req.body.name, description: req.body.description }, { new: true });
+ const template = await new Template({ code, name: name, description: description }).save();
- res.json(template)).send(;
+ res.json(template);
});
export default router;
diff --git a/api/src/routes/guilds/templates/index.ts b/api/src/routes/guilds/templates/index.ts
index ad8b676b..b8c1012d 100644
--- a/api/src/routes/guilds/templates/index.ts
+++ b/api/src/routes/guilds/templates/index.ts
@@ -1,9 +1,8 @@
import { Request, Response, Router } from "express";
const router: Router = Router();
-import { TemplateModel, Guild, toObject, User, Role, Snowflake, Guild, Config } from "@fosscord/util";
+import { Template, Guild, Role, Snowflake, Config, User } from "@fosscord/util";
import { HTTPError } from "lambert-server";
import { GuildTemplateCreateSchema } from "../../../schema/Guild";
-import { getPublicUser } from "../../../util/User";
import { check } from "../../../util/instanceOf";
import { addMember } from "../../../util/Member";
@@ -12,7 +11,7 @@ router.get("/:code", async (req: Request, res: Response) => {
const template = await Template.findOneOrFail({ code: code });
- res.json(template)).send(;
+ res.json(template);
});
router.post("/:code", check(GuildTemplateCreateSchema), async (req: Request, res: Response) => {
@@ -20,7 +19,7 @@ router.post("/:code", check(GuildTemplateCreateSchema), async (req: Request, res
const body = req.body as GuildTemplateCreateSchema;
const { maxGuilds } = Config.get().limits.user;
- const user = await getPublicUser(req.user_id, { guilds: true });
+ const user = await User.getPublicUser(req.user_id, { guilds: true });
if (user.guilds.length >= maxGuilds) {
throw new HTTPError(`Maximum number of guilds reached ${maxGuilds}`, 403);
|