diff options
author | Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> | 2021-09-02 21:31:44 +0200 |
---|---|---|
committer | Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> | 2021-09-02 21:31:44 +0200 |
commit | 11af8531cce8cc5080f068b1677634c6027a7d72 (patch) | |
tree | 41523c621addea9984320967ec71ecadb826061d /api/src/routes/guilds | |
parent | Merge branch 'master' of https://github.com/fosscord/fosscord-api (diff) | |
download | server-11af8531cce8cc5080f068b1677634c6027a7d72.tar.xz |
:bug: fix entity missing an id (replace .insert with new Entity().save)
Diffstat (limited to 'api/src/routes/guilds')
-rw-r--r-- | api/src/routes/guilds/#guild_id/delete.ts | 25 | ||||
-rw-r--r-- | api/src/routes/guilds/#guild_id/roles.ts | 2 | ||||
-rw-r--r-- | api/src/routes/guilds/index.ts | 8 |
3 files changed, 19 insertions, 16 deletions
diff --git a/api/src/routes/guilds/#guild_id/delete.ts b/api/src/routes/guilds/#guild_id/delete.ts index 043260e9..bbbd1fa4 100644 --- a/api/src/routes/guilds/#guild_id/delete.ts +++ b/api/src/routes/guilds/#guild_id/delete.ts @@ -12,24 +12,27 @@ router.post("/", async (req: Request, res: Response) => { const guild = await Guild.findOneOrFail({ where: { id: guild_id }, select: ["owner_id"] }); if (guild.owner_id !== req.user_id) 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); + // do not put everything into promise all, because of "QueryFailedError: SQLITE_CONSTRAINT: FOREIGN KEY constraint failed" + + await Message.delete({ guild_id }); // messages must be deleted before channel await Promise.all([ - Guild.delete({ id: guild_id }), Role.delete({ guild_id }), Channel.delete({ guild_id }), Emoji.delete({ guild_id }), - Invite.delete({ guild_id }), - Message.delete({ guild_id }), - Member.delete({ guild_id }) + Member.delete({ guild_id }), + emitEvent({ + event: "GUILD_DELETE", + data: { + id: guild_id + }, + guild_id: guild_id + } as GuildDeleteEvent) ]); + await Invite.delete({ guild_id }); // invite must be deleted after channel + await Guild.delete({ id: guild_id }); // guild must be deleted after everything else + return res.sendStatus(204); }); diff --git a/api/src/routes/guilds/#guild_id/roles.ts b/api/src/routes/guilds/#guild_id/roles.ts index c3dd92dc..20ab0779 100644 --- a/api/src/routes/guilds/#guild_id/roles.ts +++ b/api/src/routes/guilds/#guild_id/roles.ts @@ -53,7 +53,7 @@ router.post("/", check(RoleModifySchema), async (req: Request, res: Response) => }; await Promise.all([ - Role.insert(role), + new Role(role).save(), emitEvent({ event: "GUILD_ROLE_CREATE", guild_id, diff --git a/api/src/routes/guilds/index.ts b/api/src/routes/guilds/index.ts index 92525317..a87f926c 100644 --- a/api/src/routes/guilds/index.ts +++ b/api/src/routes/guilds/index.ts @@ -21,7 +21,7 @@ router.post("/", check(GuildCreateSchema), async (req: Request, res: Response) = const guild_id = Snowflake.generate(); const [guild, role] = await Promise.all([ - Guild.insert({ + new Guild({ name: body.name, region: Config.get().regions.default, owner_id: req.user_id, @@ -48,8 +48,8 @@ router.post("/", check(GuildCreateSchema), async (req: Request, res: Response) = welcome_channels: [] }, widget_enabled: false - }), - Role.insert({ + }).save(), + new Role({ id: guild_id, guild_id: guild_id, color: 0, @@ -59,7 +59,7 @@ router.post("/", check(GuildCreateSchema), async (req: Request, res: Response) = name: "@everyone", permissions: String("2251804225"), position: 0 - }) + }).save() ]); if (!body.channels || !body.channels.length) body.channels = [{ id: "01", type: 0, name: "general" }]; |