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); }}