diff --git a/api/src/utils/generics/base-controller.ts b/api/src/utils/generics/base-controller.ts index 13dfcbf2..b948d487 100644 --- a/api/src/utils/generics/base-controller.ts +++ b/api/src/utils/generics/base-controller.ts @@ -10,6 +10,7 @@ import { NotFoundException } from '@nestjs/common'; import { TFilterQuery } from '@/utils/types/filter.types'; +import { DtoConfig } from '../types/dto.types'; import { TValidateProps } from '../types/filter.types'; import { BaseSchema } from './base-schema'; @@ -20,8 +21,9 @@ export abstract class BaseController< TStub = never, P extends string = never, TFull extends Omit = never, + Dto extends DtoConfig = object, > { - constructor(protected readonly service: BaseService) {} + constructor(protected readonly service: BaseService) {} /** * Checks if the given populate fields are allowed based on the allowed fields list. diff --git a/api/src/utils/generics/base-repository.ts b/api/src/utils/generics/base-repository.ts index ee6168fa..e5137757 100644 --- a/api/src/utils/generics/base-repository.ts +++ b/api/src/utils/generics/base-repository.ts @@ -72,7 +72,7 @@ export abstract class BaseRepository< P extends string = never, TFull extends Omit = never, Dto extends DtoConfig = object, - U = Omit, + U extends Omit = Omit, D = Document, > { private readonly transformOpts = { excludePrefixes: ['_', 'password'] }; diff --git a/api/src/utils/generics/base-seeder.ts b/api/src/utils/generics/base-seeder.ts index e34f1576..24e7315e 100644 --- a/api/src/utils/generics/base-seeder.ts +++ b/api/src/utils/generics/base-seeder.ts @@ -18,6 +18,7 @@ export abstract class BaseSeeder< P extends string = never, TFull extends Omit = never, Dto extends DtoConfig = object, + U extends Omit = Omit, > { constructor( protected readonly repository: BaseRepository, @@ -32,9 +33,7 @@ export abstract class BaseSeeder< return count === 0; } - async seed>( - models: DtoInfer[], - ): Promise { + async seed(models: DtoInfer[]): Promise { if (await this.isEmpty()) { await this.repository.createMany(models); return true; diff --git a/api/src/utils/generics/base-service.ts b/api/src/utils/generics/base-service.ts index b0c11da0..e0df7774 100644 --- a/api/src/utils/generics/base-service.ts +++ b/api/src/utils/generics/base-service.ts @@ -24,6 +24,7 @@ export abstract class BaseService< P extends string = never, TFull extends Omit = never, Dto extends DtoConfig = object, + U extends Omit = Omit, > { constructor( protected readonly repository: BaseRepository, @@ -144,9 +145,7 @@ export abstract class BaseService< return await this.repository.count(criteria); } - async create>( - dto: DtoInfer, - ): Promise { + async create(dto: DtoInfer): Promise { try { return await this.repository.create(dto); } catch (error) { @@ -159,9 +158,9 @@ export abstract class BaseService< } } - async findOneOrCreate>( + async findOneOrCreate( criteria: string | TFilterQuery, - dto: DtoInfer, + dto: DtoInfer, ): Promise { const result = await this.findOne(criteria); if (!result) { @@ -170,24 +169,21 @@ export abstract class BaseService< return result; } - async createMany>( - dtoArray: DtoInfer[], + async createMany( + dtoArray: DtoInfer[], ): Promise { return await this.repository.createMany(dtoArray); } - async updateOne>>( + async updateOne( criteria: string | TFilterQuery, - dto: D, - options?: QueryOptions | null, + dto: Partial, + options?: QueryOptions> | null, ): Promise { return await this.repository.updateOne(criteria, dto, options); } - async updateMany>>( - filter: TFilterQuery, - dto: D, - ) { + async updateMany(filter: TFilterQuery, dto: Partial) { return await this.repository.updateMany(filter, dto); }