mirror of
https://github.com/hexastack/hexabot
synced 2025-04-10 15:55:55 +00:00
feat: implement dynamic create DTO for Language
This commit is contained in:
parent
43c56ab2dd
commit
b6102b3843
@ -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;
|
||||
}>;
|
||||
|
@ -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<Language> {
|
||||
export class LanguageRepository extends BaseRepository<
|
||||
Language,
|
||||
never,
|
||||
never,
|
||||
LanguageDTOMapActions
|
||||
> {
|
||||
constructor(
|
||||
readonly eventEmitter: EventEmitter2,
|
||||
@InjectModel(Language.name) readonly model: Model<Language>,
|
||||
|
@ -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({
|
||||
|
@ -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<Language> {
|
||||
export class LanguageSeeder extends BaseSeeder<
|
||||
Language,
|
||||
never,
|
||||
never,
|
||||
LanguageDTOMapActions
|
||||
> {
|
||||
constructor(private readonly languageRepository: LanguageRepository) {
|
||||
super(languageRepository);
|
||||
}
|
||||
|
@ -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<Language> {
|
||||
export class LanguageService extends BaseService<
|
||||
Language,
|
||||
never,
|
||||
never,
|
||||
LanguageDTOMapActions
|
||||
> {
|
||||
constructor(
|
||||
readonly repository: LanguageRepository,
|
||||
@Inject(CACHE_MANAGER) private readonly cacheManager: Cache,
|
||||
|
Loading…
Reference in New Issue
Block a user