refactor(preferences): add id to response for easier frontend state management
This commit is contained in:
parent
42060ad9b4
commit
57dc4eeb66
|
|
@ -1,4 +1,4 @@
|
||||||
import { IsBoolean, IsEnum, IsOptional } from "class-validator";
|
import { IsBoolean, IsEnum, IsInt, IsOptional } from "class-validator";
|
||||||
|
|
||||||
export enum DisplayLanguage {
|
export enum DisplayLanguage {
|
||||||
FR = 'fr-FR',
|
FR = 'fr-FR',
|
||||||
|
|
@ -6,6 +6,7 @@ export enum DisplayLanguage {
|
||||||
}
|
}
|
||||||
|
|
||||||
export class PreferencesDto {
|
export class PreferencesDto {
|
||||||
|
@IsInt() id: number;
|
||||||
@IsBoolean() notifications: boolean;
|
@IsBoolean() notifications: boolean;
|
||||||
@IsOptional() @IsBoolean() is_dark_mode?: boolean;
|
@IsOptional() @IsBoolean() is_dark_mode?: boolean;
|
||||||
@IsEnum(DisplayLanguage) display_language: string;
|
@IsEnum(DisplayLanguage) display_language: string;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import { DisplayLanguage, PreferencesDto } from "../dtos/preferences.dto";
|
import { DisplayLanguage, PreferencesDto } from "../dtos/preferences.dto";
|
||||||
import { PrismaService } from "src/prisma/prisma.service";
|
import { PrismaService } from "src/prisma/prisma.service";
|
||||||
import { Preferences } from "@prisma/client";
|
import { Preferences, Prisma } from "@prisma/client";
|
||||||
import { Injectable } from "@nestjs/common";
|
import { Injectable } from "@nestjs/common";
|
||||||
import { Result } from "src/common/errors/result-error.factory";
|
import { Result } from "src/common/errors/result-error.factory";
|
||||||
import { EmailToIdResolver } from "src/common/mappers/email-id.mapper";
|
import { EmailToIdResolver } from "src/common/mappers/email-id.mapper";
|
||||||
|
|
@ -20,6 +20,7 @@ export class PreferencesService {
|
||||||
const user_preferences = await this.prisma.preferences.findUnique({
|
const user_preferences = await this.prisma.preferences.findUnique({
|
||||||
where: { user_id: user_id.data },
|
where: { user_id: user_id.data },
|
||||||
select: {
|
select: {
|
||||||
|
id: true,
|
||||||
notifications: true,
|
notifications: true,
|
||||||
is_dark_mode: true,
|
is_dark_mode: true,
|
||||||
display_language: true,
|
display_language: true,
|
||||||
|
|
@ -31,6 +32,7 @@ export class PreferencesService {
|
||||||
if (!user_preferences) return { success: false, error: 'PREFERENCES_NOT_FOUND' };
|
if (!user_preferences) return { success: false, error: 'PREFERENCES_NOT_FOUND' };
|
||||||
|
|
||||||
const preferences: PreferencesDto = {
|
const preferences: PreferencesDto = {
|
||||||
|
id: user_preferences.id,
|
||||||
is_dark_mode: user_preferences.is_dark_mode,
|
is_dark_mode: user_preferences.is_dark_mode,
|
||||||
display_language: user_preferences.display_language ?? DisplayLanguage.FR ,
|
display_language: user_preferences.display_language ?? DisplayLanguage.FR ,
|
||||||
is_lefty_mode: user_preferences.is_lefty_mode,
|
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_employee_list_grid: dto.is_employee_list_grid,
|
||||||
is_timesheet_approval_grid: dto.is_timesheet_approval_grid,
|
is_timesheet_approval_grid: dto.is_timesheet_approval_grid,
|
||||||
},
|
},
|
||||||
select: {
|
omit: { user_id: true },
|
||||||
notifications: true,
|
|
||||||
is_dark_mode: true,
|
|
||||||
display_language: true,
|
|
||||||
is_employee_list_grid: true,
|
|
||||||
is_timesheet_approval_grid: true,
|
|
||||||
is_lefty_mode: true,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
return { success: true, data: updated_preferences};
|
return { success: true, data: updated_preferences};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user