diff --git a/packages/core/__tests__/decorators/inject-query-service.decorator.spec.ts b/packages/core/__tests__/decorators/inject-query-service.decorator.spec.ts new file mode 100644 index 000000000..41ec9f7e1 --- /dev/null +++ b/packages/core/__tests__/decorators/inject-query-service.decorator.spec.ts @@ -0,0 +1,18 @@ +import * as nestjsCommon from '@nestjs/common'; +import { QueryService, InjectQueryService, getQueryServiceToken } from '../../src'; + +describe('@InjectQueryService', () => { + const injectSpy = jest.spyOn(nestjsCommon, 'Inject'); + + class TestEntity {} + + it('call inject with the correct key', () => { + // @ts-ignore + // eslint-disable-next-line @typescript-eslint/no-unused-vars + class Test { + constructor(@InjectQueryService(TestEntity) readonly service: QueryService) {} + } + expect(injectSpy).toBeCalledTimes(1); + expect(injectSpy).toBeCalledWith(getQueryServiceToken(TestEntity)); + }); +}); diff --git a/packages/core/src/decorators/helpers.ts b/packages/core/src/decorators/helpers.ts new file mode 100644 index 000000000..98cf06ebd --- /dev/null +++ b/packages/core/src/decorators/helpers.ts @@ -0,0 +1,5 @@ +import { Class } from '../common'; + +export function getQueryServiceToken(DTOClass: Class): string { + return `${DTOClass.name}QueryService`; +} diff --git a/packages/core/src/decorators/index.ts b/packages/core/src/decorators/index.ts new file mode 100644 index 000000000..defc3b235 --- /dev/null +++ b/packages/core/src/decorators/index.ts @@ -0,0 +1,2 @@ +export { getQueryServiceToken } from './helpers'; +export { InjectQueryService } from './inject-query-service.decorator'; diff --git a/packages/core/src/decorators/inject-query-service.decorator.ts b/packages/core/src/decorators/inject-query-service.decorator.ts new file mode 100644 index 000000000..da371b705 --- /dev/null +++ b/packages/core/src/decorators/inject-query-service.decorator.ts @@ -0,0 +1,5 @@ +import { Inject } from '@nestjs/common'; +import { Class } from '../common'; +import { getQueryServiceToken } from './helpers'; + +export const InjectQueryService = (entity: Class): ParameterDecorator => Inject(getQueryServiceToken(entity)); diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index feefb597c..3d3f7b0f4 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,13 +1,8 @@ /* eslint-disable import/export */ export * from './interfaces'; export * from './common'; -export { - QueryService, - AssemblerQueryService, - RelationQueryService, - QueryServiceRelation, - getQueryServiceToken, -} from './services'; +export { InjectQueryService, getQueryServiceToken } from './decorators'; +export { QueryService, AssemblerQueryService, RelationQueryService, QueryServiceRelation } from './services'; export { transformFilter, transformQuery, transformSort, QueryFieldMap } from './helpers'; export { ClassTransformerAssembler, diff --git a/packages/core/src/services/index.ts b/packages/core/src/services/index.ts index 44461680b..b448b8a2b 100644 --- a/packages/core/src/services/index.ts +++ b/packages/core/src/services/index.ts @@ -1,3 +1,3 @@ -export { QueryService, getQueryServiceToken } from './query.service'; +export { QueryService } from './query.service'; export { AssemblerQueryService } from './assembler-query.service'; export { RelationQueryService, QueryServiceRelation } from './relation-query.service'; diff --git a/packages/core/src/services/query.service.ts b/packages/core/src/services/query.service.ts index a90f91b0a..e6b3e01d3 100644 --- a/packages/core/src/services/query.service.ts +++ b/packages/core/src/services/query.service.ts @@ -167,7 +167,3 @@ export function QueryService(DTOClass: Class) { return Injectable()(cls); }; } - -export function getQueryServiceToken(DTOClass: Class): string { - return `${DTOClass.name}QueryService`; -} diff --git a/packages/query-sequelize/__tests__/decorators/inject-sequelize-query-service.decorator.spec.ts b/packages/query-sequelize/__tests__/decorators/inject-sequelize-query-service.decorator.spec.ts deleted file mode 100644 index 3aac9bafa..000000000 --- a/packages/query-sequelize/__tests__/decorators/inject-sequelize-query-service.decorator.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { getQueryServiceToken, QueryService } from '@nestjs-query/core'; -import * as nestjsCommon from '@nestjs/common'; -import { Model } from 'sequelize-typescript'; -import { InjectSequelizeQueryService } from '../../src'; - -describe('@InjectSequelizeQueryService', () => { - const injectSpy = jest.spyOn(nestjsCommon, 'Inject'); - - class TestEntity extends Model {} - - it('call inject witht the correct key', () => { - // @ts-ignore - // eslint-disable-next-line @typescript-eslint/no-unused-vars - class Test { - constructor(@InjectSequelizeQueryService(TestEntity) readonly service: QueryService) {} - } - expect(injectSpy).toBeCalledTimes(1); - expect(injectSpy).toBeCalledWith(getQueryServiceToken(TestEntity)); - }); -}); diff --git a/packages/query-sequelize/src/decorators/index.ts b/packages/query-sequelize/src/decorators/index.ts deleted file mode 100644 index 98df7a2ea..000000000 --- a/packages/query-sequelize/src/decorators/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { InjectSequelizeQueryService } from './inject-sequelize-query-service.decorator'; diff --git a/packages/query-sequelize/src/decorators/inject-sequelize-query-service.decorator.ts b/packages/query-sequelize/src/decorators/inject-sequelize-query-service.decorator.ts deleted file mode 100644 index cfc7e942f..000000000 --- a/packages/query-sequelize/src/decorators/inject-sequelize-query-service.decorator.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { getQueryServiceToken } from '@nestjs-query/core'; -import { Inject } from '@nestjs/common'; -import { Model, ModelCtor } from 'sequelize-typescript'; - -export const InjectSequelizeQueryService = >( - entity: ModelCtor, -): ParameterDecorator => Inject(getQueryServiceToken(entity)); diff --git a/packages/query-sequelize/src/index.ts b/packages/query-sequelize/src/index.ts index 9ddcc0a65..0a9e91d19 100644 --- a/packages/query-sequelize/src/index.ts +++ b/packages/query-sequelize/src/index.ts @@ -1,3 +1,2 @@ export { SequelizeQueryService } from './services'; -export { InjectSequelizeQueryService } from './decorators'; export { NestjsQuerySequelizeModule } from './module'; diff --git a/packages/query-typeorm/__tests__/decorators/inject-typeorm-query-service.decorator.spec.ts b/packages/query-typeorm/__tests__/decorators/inject-typeorm-query-service.decorator.spec.ts deleted file mode 100644 index 16b136839..000000000 --- a/packages/query-typeorm/__tests__/decorators/inject-typeorm-query-service.decorator.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { QueryService } from '@nestjs-query/core'; -import { getQueryServiceToken } from '@nestjs-query/core/src'; -import * as nestjsCommon from '@nestjs/common'; -import { InjectTypeOrmQueryService } from '../../src/decorators'; - -describe('@InjectTypeOrmQueryService', () => { - const injectSpy = jest.spyOn(nestjsCommon, 'Inject'); - - class TestEntity {} - - it('call inject witht the correct key', () => { - // @ts-ignore - // eslint-disable-next-line @typescript-eslint/no-unused-vars - class Test { - constructor(@InjectTypeOrmQueryService(TestEntity) readonly service: QueryService) {} - } - expect(injectSpy).toBeCalledTimes(1); - expect(injectSpy).toBeCalledWith(getQueryServiceToken(TestEntity)); - }); -}); diff --git a/packages/query-typeorm/src/decorators/index.ts b/packages/query-typeorm/src/decorators/index.ts deleted file mode 100644 index e9a8fddc7..000000000 --- a/packages/query-typeorm/src/decorators/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { InjectTypeOrmQueryService } from './inject-typeorm-query-service.decorator'; diff --git a/packages/query-typeorm/src/decorators/inject-typeorm-query-service.decorator.ts b/packages/query-typeorm/src/decorators/inject-typeorm-query-service.decorator.ts deleted file mode 100644 index fe6a06f0f..000000000 --- a/packages/query-typeorm/src/decorators/inject-typeorm-query-service.decorator.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Class, getQueryServiceToken } from '@nestjs-query/core'; -import { Inject } from '@nestjs/common'; - -export const InjectTypeOrmQueryService = (entity: Class): ParameterDecorator => - Inject(getQueryServiceToken(entity)); diff --git a/packages/query-typeorm/src/index.ts b/packages/query-typeorm/src/index.ts index bdc22e3de..34fe2dd43 100644 --- a/packages/query-typeorm/src/index.ts +++ b/packages/query-typeorm/src/index.ts @@ -1,3 +1,2 @@ export { TypeOrmQueryService, TypeOrmQueryServiceOpts } from './services'; -export { InjectTypeOrmQueryService } from './decorators'; export { NestjsQueryTypeOrmModule } from './module';