Skip to content

Commit

Permalink
Removed unnecessary checks to reduce update SQL queries
Browse files Browse the repository at this point in the history
  • Loading branch information
FlorianLeChat committed Jan 22, 2024
1 parent 3818c0a commit 1052a30
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 109 deletions.
70 changes: 18 additions & 52 deletions app/[locale]/settings/layout/actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
24 changes: 10 additions & 14 deletions app/[locale]/settings/notifications/actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
57 changes: 14 additions & 43 deletions app/[locale]/settings/user/actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down

0 comments on commit 1052a30

Please sign in to comment.