v0.5.x to v0.6.x
@InjectTypeOrmQueryService
#
In the v0.6.x
an new decorator was added @InjectTypeOrmQueryService
to auto-create a TypeOrm query service.
This means you no longer need to manually create a service in order to expose your CRUD endpoints.
To enable decorator import the NestjsQueryTypeOrmModule
to your module definition
import { NestjsQueryTypeOrmModule } from '@nestjs-query/query-typeorm';import { Module } from '@nestjs/common';import { TodoItemEntity } from './todo-item.entity';import { TodoItemResolver } from './todo-item.resolver';
@Module({ providers: [TodoItemResolver], imports: [NestjsQueryTypeOrmModule.forFeature([TodoItemEntity])],})export class TodoItemModule {}
One you have imported the module you can inject a TypeOrmQueryService
.
import { QueryService } from '@nestjs-query/core';import { CRUDResolver } from '@nestjs-query/query-graphql';import { Resolver } from '@nestjs/graphql';import { InjectTypeOrmQueryService } from '@nestjs-query/query-typeorm';import { TodoItemDTO } from './dto/todo-item.dto';import { TodoItemEntity } from './todo-item.entity';
@Resolver(() => TodoItemDTO)export class TodoItemResolver extends CRUDResolver(TodoItemDTO) { constructor(@InjectTypeOrmQueryService(TodoItemEntity) readonly service: QueryService<TodoItemEntity>) { super(service); }}
TypeOrmQueryService
#
In the previous version of @nestjs-query
the TypeOrmQueryService
translated between the DTO and Entity. For a more in-depth description see #41
In the latest version the TypeOrmQueryService
only operates on entities.
v0.5.x
import { QueryService } from '@nestjs-query/core';import { TypeOrmQueryService } from '@nestjs-query/query-typeorm';import { InjectRepository } from '@nestjs/typeorm';import { Repository } from 'typeorm';import { TodoItemDTO } from './todo-item.dto';import { TodoItemEntity } from './todo-item.entity';
@QueryService(TodoItemDTO)export class TodoItemService extends TypeOrmQueryService<TodoItemDTO, TodoItemEntity> { constructor(@InjectRepository(TodoItemEntity) readonly repo: Repository<TodoItemEntity>) { super(repo); }}
v0.6.x
import { QueryService } from '@nestjs-query/core';import { TypeOrmQueryService } from '@nestjs-query/query-typeorm';import { InjectRepository } from '@nestjs/typeorm';import { Repository } from 'typeorm';import { TodoItemEntity } from './todo-item.entity';
@QueryService(TodoItemEntity)export class TodoItemService extends TypeOrmQueryService<TodoItemEntity> { constructor(@InjectRepository(TodoItemEntity) readonly repo: Repository<TodoItemEntity>) { super(repo); }}
AssemblerQueryService
#
In previous versions of nestjs-query
the QueryService
would automatically translate betwen your DTO and database type. This created a soft-dependecy between the persistence service and the view layer. In v0.6.0
AssemblerQueryService
was introduced to handle translating between your DTO and persistence type.
import { AssemblerQueryService, QueryService } from '@nestjs-query/core';import { InjectTypeOrmQueryService } from '@nestjs-query/query-typeorm';import { TodoItemDTO } from './todo-item.dto';import { TodoItemAssembler } from './todo-item.assembler';import { TodoItemEntity } from './todo-item.entity';
@QueryService(TodoItemDTO)export class TodoItemService extends AssemblerQueryService<TodoItemDTO, TodoItemEntity> { constructor( assembler: TodoItemAssembler, @InjectTypeOrmQueryService(TodoItemEntity) queryService: QueryService<TodoItemEntity>, ) { super(assembler, queryService); }}