From 1052a3007c04d9d513fe4f7efce27e5bded5344c Mon Sep 17 00:00:00 2001 From: Florian Trayon <26360935+FlorianLeChat@users.noreply.github.com> Date: Mon, 22 Jan 2024 18:40:40 +0100 Subject: [PATCH] Removed unnecessary checks to reduce update SQL queries --- app/[locale]/settings/layout/actions.ts | 70 +++++-------------- .../settings/notifications/actions.ts | 24 +++---- app/[locale]/settings/user/actions.ts | 57 ++++----------- 3 files changed, 42 insertions(+), 109 deletions(-) diff --git a/app/[locale]/settings/layout/actions.ts b/app/[locale]/settings/layout/actions.ts index 88fdcaf..5196ca3 100644 --- a/app/[locale]/settings/layout/actions.ts +++ b/app/[locale]/settings/layout/actions.ts @@ -46,58 +46,24 @@ export async function updateLayout( }; } - // On vérifie après si les préférences de l'utilisateur sont - // différentes de celles enregistrées dans la base de données. - if ( session.user.preferences.font !== result.data.font ) - { - // Police de caractères - await prisma.preference.upsert( { - where: { - userId: session.user.id - }, - update: { - font: result.data.font - }, - create: { - userId: session.user.id, - font: result.data.font - } - } ); - } - - if ( session.user.preferences.color !== result.data.color ) - { - // Couleur d'accentuation. - await prisma.preference.upsert( { - where: { - userId: session.user.id - }, - update: { - color: result.data.color - }, - create: { - userId: session.user.id, - color: result.data.color - } - } ); - } - - if ( session.user.preferences.theme !== result.data.theme ) - { - // Thème de couleur. - await prisma.preference.upsert( { - where: { - userId: session.user.id - }, - update: { - theme: result.data.theme - }, - create: { - userId: session.user.id, - theme: result.data.theme - } - } ); - } + // On créé ou on met à jour après les préférences de l'utilisateur dans la + // base de données. + await prisma.preference.upsert( { + where: { + userId: session.user.id + }, + update: { + font: result.data.font, + color: result.data.color, + theme: result.data.theme + }, + create: { + userId: session.user.id, + font: result.data.font, + color: result.data.color, + theme: result.data.theme + } + } ); // On retourne enfin un message de succès. return { diff --git a/app/[locale]/settings/notifications/actions.ts b/app/[locale]/settings/notifications/actions.ts index fc475e2..4b7a184 100644 --- a/app/[locale]/settings/notifications/actions.ts +++ b/app/[locale]/settings/notifications/actions.ts @@ -45,25 +45,21 @@ export async function updateNotifications( }; } - // On vérifie après si le niveau de notifications fourni est différent - // de celui enregistré dans la base de données. + // On met à jour après le niveau de notifications de l'utilisateur dans la + // base de données. const notifications = result.data.push && result.data.level !== "off" ? `${ result.data.level }+mail` : result.data.level; - if ( session.user.notifications !== notifications ) - { - // Dans ce cas, on le met à jour dans la base de données. - await prisma.user.update( { - where: { - email: session.user.email as string - }, - data: { - notifications - } - } ); - } + await prisma.user.update( { + where: { + email: session.user.email as string + }, + data: { + notifications + } + } ); // On retourne enfin un message de succès. return { diff --git a/app/[locale]/settings/user/actions.ts b/app/[locale]/settings/user/actions.ts index 10cf4b1..ab81e08 100644 --- a/app/[locale]/settings/user/actions.ts +++ b/app/[locale]/settings/user/actions.ts @@ -55,49 +55,20 @@ export async function updateUser( }; } - // On vérifie après si le nom d'utilisateur est différent de celui - // enregistré dans la base de données. - if ( session.user.name !== result.data.username ) - { - // Dans ce cas, on la met à jour dans la base de données. - await prisma.user.update( { - where: { - id: session.user.id - }, - data: { - name: result.data.username - } - } ); - } - - // On vérifie si l'adresse électronique fournie est différente de - // celle enregistrée dans la base de données. - if ( session.user.email !== result.data.email ) - { - // Dans ce cas, on la met à jour dans la base de données. - await prisma.user.update( { - where: { - email: session.user.email as string - }, - data: { - email: result.data.email - } - } ); - } - - // On met à jour par la même occasion le mot de passe de l'utilisateur - // si celui-ci a été fourni. - if ( result.data.password ) - { - await prisma.user.update( { - where: { - id: session.user.id - }, - data: { - password: await bcrypt.hash( result.data.password, 13 ) - } - } ); - } + // On met à jour après le nom d'utilisateur et l'adresse électronique + // de l'utilisateur dans la base de données. + await prisma.user.update( { + where: { + id: session.user.id + }, + data: { + name: result.data.username, + email: result.data.email, + password: result.data.password + ? await bcrypt.hash( result.data.password, 13 ) + : undefined + } + } ); // On modifie la langue sélectionnée par l'utilisateur dans les // cookies de son navigateur.