From 9244ee54a70c0ca957f8a5a6b8cff7d3b9f22356 Mon Sep 17 00:00:00 2001 From: Dragory <2606411+Dragory@users.noreply.github.com> Date: Thu, 19 Aug 2021 00:55:45 +0300 Subject: [PATCH] Hotfix 14 --- backend/src/data/GuildCases.ts | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/backend/src/data/GuildCases.ts b/backend/src/data/GuildCases.ts index 349b1ce1..8c09ecd8 100644 --- a/backend/src/data/GuildCases.ts +++ b/backend/src/data/GuildCases.ts @@ -1,4 +1,4 @@ -import { getRepository, In, Repository } from "typeorm"; +import { getRepository, In, InsertResult, Repository } from "typeorm"; import { BaseGuildRepository } from "./BaseGuildRepository"; import { CaseTypes } from "./CaseTypes"; import { connection } from "./db"; @@ -116,13 +116,30 @@ export class GuildCases extends BaseGuildRepository { ); } - async create(data): Promise { - const result = await this.cases.insert({ - ...data, - guild_id: this.guildId, - case_number: () => `(SELECT IFNULL(MAX(case_number)+1, 1) FROM cases AS ma2 WHERE guild_id = ${this.guildId})`, - }); + async createInternal(data): Promise { + return this.cases + .insert({ + ...data, + guild_id: this.guildId, + case_number: () => `(SELECT IFNULL(MAX(case_number)+1, 1) FROM cases AS ma2 WHERE guild_id = ${this.guildId})`, + }) + .catch(err => { + if (err?.code === "ER_DUP_ENTRY") { + if (data.audit_log_id) { + console.warn(`Tried to insert case with duplicate audit_log_id`); + return this.createInternal({ + ...data, + audit_log_id: undefined, + }); + } + } + throw err; + }); + } + + async create(data): Promise { + const result = await this.createInternal(data); return (await this.find(result.identifiers[0].id))!; }