diff --git a/api/src/i18n/dto/language.dto.ts b/api/src/i18n/dto/language.dto.ts index df6b8aa6..868068f7 100644 --- a/api/src/i18n/dto/language.dto.ts +++ b/api/src/i18n/dto/language.dto.ts @@ -7,9 +7,11 @@ */ import { PartialType } from '@nestjs/mapped-types'; -import { ApiProperty } from '@nestjs/swagger'; +import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { IsBoolean, IsNotEmpty, IsOptional, IsString } from 'class-validator'; +import { DtoConfig } from '@/utils/types/dto.types'; + export class LanguageCreateDto { @ApiProperty({ description: 'Language Title', type: String }) @IsNotEmpty() @@ -25,10 +27,14 @@ export class LanguageCreateDto { @IsBoolean() isRTL: boolean; - @ApiProperty({ description: 'Is Default Language ?', type: Boolean }) + @ApiPropertyOptional({ description: 'Is Default Language ?', type: Boolean }) @IsOptional() @IsBoolean() isDefault?: boolean; } export class LanguageUpdateDto extends PartialType(LanguageCreateDto) {} + +export type LanguageDTOMapActions = DtoConfig<{ + create: LanguageCreateDto; +}>; diff --git a/api/src/i18n/repositories/language.repository.ts b/api/src/i18n/repositories/language.repository.ts index 67799afd..6d42d22e 100644 --- a/api/src/i18n/repositories/language.repository.ts +++ b/api/src/i18n/repositories/language.repository.ts @@ -14,10 +14,16 @@ import { Document, Model, Query } from 'mongoose'; import { BaseRepository, DeleteResult } from '@/utils/generics/base-repository'; import { TFilterQuery } from '@/utils/types/filter.types'; +import { LanguageDTOMapActions } from '../dto/language.dto'; import { Language } from '../schemas/language.schema'; @Injectable() -export class LanguageRepository extends BaseRepository { +export class LanguageRepository extends BaseRepository< + Language, + never, + never, + LanguageDTOMapActions +> { constructor( readonly eventEmitter: EventEmitter2, @InjectModel(Language.name) readonly model: Model, diff --git a/api/src/i18n/schemas/language.schema.ts b/api/src/i18n/schemas/language.schema.ts index 2581666b..77bc929b 100644 --- a/api/src/i18n/schemas/language.schema.ts +++ b/api/src/i18n/schemas/language.schema.ts @@ -32,13 +32,13 @@ export class Language extends BaseSchema { type: Boolean, default: false, }) - isDefault?: boolean; + isDefault: boolean; @Prop({ type: Boolean, default: false, }) - isRTL?: boolean; + isRTL: boolean; } export const LanguageModel: ModelDefinition = LifecycleHookManager.attach({ diff --git a/api/src/i18n/seeds/language.seed.ts b/api/src/i18n/seeds/language.seed.ts index 376c3130..da5fc2f0 100644 --- a/api/src/i18n/seeds/language.seed.ts +++ b/api/src/i18n/seeds/language.seed.ts @@ -10,11 +10,17 @@ import { Injectable } from '@nestjs/common'; import { BaseSeeder } from '@/utils/generics/base-seeder'; +import { LanguageDTOMapActions } from '../dto/language.dto'; import { LanguageRepository } from '../repositories/language.repository'; import { Language } from '../schemas/language.schema'; @Injectable() -export class LanguageSeeder extends BaseSeeder { +export class LanguageSeeder extends BaseSeeder< + Language, + never, + never, + LanguageDTOMapActions +> { constructor(private readonly languageRepository: LanguageRepository) { super(languageRepository); } diff --git a/api/src/i18n/services/language.service.ts b/api/src/i18n/services/language.service.ts index 7fbeeb70..542a62a8 100644 --- a/api/src/i18n/services/language.service.ts +++ b/api/src/i18n/services/language.service.ts @@ -21,11 +21,17 @@ import { import { Cacheable } from '@/utils/decorators/cacheable.decorator'; import { BaseService } from '@/utils/generics/base-service'; +import { LanguageDTOMapActions } from '../dto/language.dto'; import { LanguageRepository } from '../repositories/language.repository'; import { Language } from '../schemas/language.schema'; @Injectable() -export class LanguageService extends BaseService { +export class LanguageService extends BaseService< + Language, + never, + never, + LanguageDTOMapActions +> { constructor( readonly repository: LanguageRepository, @Inject(CACHE_MANAGER) private readonly cacheManager: Cache,