refactor(preferences): add id to response for easier frontend state management

This commit is contained in:
Nicolas Drolet 2025-12-01 11:30:23 -05:00
parent 42060ad9b4
commit 57dc4eeb66
2 changed files with 6 additions and 10 deletions

View File

@ -1,4 +1,4 @@
import { IsBoolean, IsEnum, IsOptional } from "class-validator";
import { IsBoolean, IsEnum, IsInt, IsOptional } from "class-validator";
export enum DisplayLanguage {
FR = 'fr-FR',
@ -6,6 +6,7 @@ export enum DisplayLanguage {
}
export class PreferencesDto {
@IsInt() id: number;
@IsBoolean() notifications: boolean;
@IsOptional() @IsBoolean() is_dark_mode?: boolean;
@IsEnum(DisplayLanguage) display_language: string;

View File

@ -1,6 +1,6 @@
import { DisplayLanguage, PreferencesDto } from "../dtos/preferences.dto";
import { PrismaService } from "src/prisma/prisma.service";
import { Preferences } from "@prisma/client";
import { Preferences, Prisma } from "@prisma/client";
import { Injectable } from "@nestjs/common";
import { Result } from "src/common/errors/result-error.factory";
import { EmailToIdResolver } from "src/common/mappers/email-id.mapper";
@ -20,6 +20,7 @@ export class PreferencesService {
const user_preferences = await this.prisma.preferences.findUnique({
where: { user_id: user_id.data },
select: {
id: true,
notifications: true,
is_dark_mode: true,
display_language: true,
@ -31,6 +32,7 @@ export class PreferencesService {
if (!user_preferences) return { success: false, error: 'PREFERENCES_NOT_FOUND' };
const preferences: PreferencesDto = {
id: user_preferences.id,
is_dark_mode: user_preferences.is_dark_mode,
display_language: user_preferences.display_language ?? DisplayLanguage.FR ,
is_lefty_mode: user_preferences.is_lefty_mode,
@ -55,14 +57,7 @@ export class PreferencesService {
is_employee_list_grid: dto.is_employee_list_grid,
is_timesheet_approval_grid: dto.is_timesheet_approval_grid,
},
select: {
notifications: true,
is_dark_mode: true,
display_language: true,
is_employee_list_grid: true,
is_timesheet_approval_grid: true,
is_lefty_mode: true,
},
omit: { user_id: true },
});
return { success: true, data: updated_preferences};
}