From 2c8acb380e806b67b6de00338b94a6b5f955a0b9 Mon Sep 17 00:00:00 2001 From: Vermium Sifell Date: Mon, 29 May 2023 20:53:57 +0200 Subject: [PATCH] fix: :zap: fix duplicate rows The bot created new cooldowns instead of updating old ones, this commit fixes this by doing an updateMany if it finds a cooldown instead of just creating new ones --- src/handlers/CooldownManager.ts | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/handlers/CooldownManager.ts b/src/handlers/CooldownManager.ts index bb66abd..b291a5b 100644 --- a/src/handlers/CooldownManager.ts +++ b/src/handlers/CooldownManager.ts @@ -18,7 +18,27 @@ class CooldownManager { user: user ? { connect: { id: user.id } } : undefined, }; - await prisma.cooldown.create({ data }); + const { guildCooldown, guildMemberCooldown, userCooldown } = + await this.checkCooldowns(cooldownItem, guild, user); + + if (guildCooldown || guildMemberCooldown || userCooldown) { + await prisma.cooldown.updateMany({ + where: { + cooldownItem, + expiresAt, + guild: guild ? { id: guild.id } : undefined, + user: user ? { id: user.id } : undefined, + }, + data: { + cooldownItem, + expiresAt, + guildId: guild ? guild.id : undefined, + userId: user ? user.id : undefined, + }, + }); + } else { + await prisma.cooldown.create({ data }); + } if (guild && user) { logger.verbose( @@ -68,7 +88,7 @@ class CooldownManager { async checkCooldowns( cooldownItem: string, guild: Guild | null, - user: User + user: User | null ): Promise<{ guildCooldown: Cooldown | null; userCooldown: Cooldown | null;