mirror of
https://github.com/hexastack/hexabot
synced 2025-06-26 18:27:28 +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 { 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 { IsBoolean, IsNotEmpty, IsOptional, IsString } from 'class-validator';
|
||||||
|
|
||||||
|
import { DtoConfig } from '@/utils/types/dto.types';
|
||||||
|
|
||||||
export class LanguageCreateDto {
|
export class LanguageCreateDto {
|
||||||
@ApiProperty({ description: 'Language Title', type: String })
|
@ApiProperty({ description: 'Language Title', type: String })
|
||||||
@IsNotEmpty()
|
@IsNotEmpty()
|
||||||
@ -25,10 +27,14 @@ export class LanguageCreateDto {
|
|||||||
@IsBoolean()
|
@IsBoolean()
|
||||||
isRTL: boolean;
|
isRTL: boolean;
|
||||||
|
|
||||||
@ApiProperty({ description: 'Is Default Language ?', type: Boolean })
|
@ApiPropertyOptional({ description: 'Is Default Language ?', type: Boolean })
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
@IsBoolean()
|
@IsBoolean()
|
||||||
isDefault?: boolean;
|
isDefault?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class LanguageUpdateDto extends PartialType(LanguageCreateDto) {}
|
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 { BaseRepository, DeleteResult } from '@/utils/generics/base-repository';
|
||||||
import { TFilterQuery } from '@/utils/types/filter.types';
|
import { TFilterQuery } from '@/utils/types/filter.types';
|
||||||
|
|
||||||
|
import { LanguageDTOMapActions } from '../dto/language.dto';
|
||||||
import { Language } from '../schemas/language.schema';
|
import { Language } from '../schemas/language.schema';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class LanguageRepository extends BaseRepository<Language> {
|
export class LanguageRepository extends BaseRepository<
|
||||||
|
Language,
|
||||||
|
never,
|
||||||
|
never,
|
||||||
|
LanguageDTOMapActions
|
||||||
|
> {
|
||||||
constructor(
|
constructor(
|
||||||
readonly eventEmitter: EventEmitter2,
|
readonly eventEmitter: EventEmitter2,
|
||||||
@InjectModel(Language.name) readonly model: Model<Language>,
|
@InjectModel(Language.name) readonly model: Model<Language>,
|
||||||
|
@ -32,13 +32,13 @@ export class Language extends BaseSchema {
|
|||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false,
|
default: false,
|
||||||
})
|
})
|
||||||
isDefault?: boolean;
|
isDefault: boolean;
|
||||||
|
|
||||||
@Prop({
|
@Prop({
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false,
|
default: false,
|
||||||
})
|
})
|
||||||
isRTL?: boolean;
|
isRTL: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const LanguageModel: ModelDefinition = LifecycleHookManager.attach({
|
export const LanguageModel: ModelDefinition = LifecycleHookManager.attach({
|
||||||
|
@ -10,11 +10,17 @@ import { Injectable } from '@nestjs/common';
|
|||||||
|
|
||||||
import { BaseSeeder } from '@/utils/generics/base-seeder';
|
import { BaseSeeder } from '@/utils/generics/base-seeder';
|
||||||
|
|
||||||
|
import { LanguageDTOMapActions } from '../dto/language.dto';
|
||||||
import { LanguageRepository } from '../repositories/language.repository';
|
import { LanguageRepository } from '../repositories/language.repository';
|
||||||
import { Language } from '../schemas/language.schema';
|
import { Language } from '../schemas/language.schema';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class LanguageSeeder extends BaseSeeder<Language> {
|
export class LanguageSeeder extends BaseSeeder<
|
||||||
|
Language,
|
||||||
|
never,
|
||||||
|
never,
|
||||||
|
LanguageDTOMapActions
|
||||||
|
> {
|
||||||
constructor(private readonly languageRepository: LanguageRepository) {
|
constructor(private readonly languageRepository: LanguageRepository) {
|
||||||
super(languageRepository);
|
super(languageRepository);
|
||||||
}
|
}
|
||||||
|
@ -21,11 +21,17 @@ import {
|
|||||||
import { Cacheable } from '@/utils/decorators/cacheable.decorator';
|
import { Cacheable } from '@/utils/decorators/cacheable.decorator';
|
||||||
import { BaseService } from '@/utils/generics/base-service';
|
import { BaseService } from '@/utils/generics/base-service';
|
||||||
|
|
||||||
|
import { LanguageDTOMapActions } from '../dto/language.dto';
|
||||||
import { LanguageRepository } from '../repositories/language.repository';
|
import { LanguageRepository } from '../repositories/language.repository';
|
||||||
import { Language } from '../schemas/language.schema';
|
import { Language } from '../schemas/language.schema';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class LanguageService extends BaseService<Language> {
|
export class LanguageService extends BaseService<
|
||||||
|
Language,
|
||||||
|
never,
|
||||||
|
never,
|
||||||
|
LanguageDTOMapActions
|
||||||
|
> {
|
||||||
constructor(
|
constructor(
|
||||||
readonly repository: LanguageRepository,
|
readonly repository: LanguageRepository,
|
||||||
@Inject(CACHE_MANAGER) private readonly cacheManager: Cache,
|
@Inject(CACHE_MANAGER) private readonly cacheManager: Cache,
|
||||||
|
Loading…
Reference in New Issue
Block a user