UNPKG

@ptc-org/nestjs-query-graphql

Version:
57 lines (56 loc) 3.07 kB
import { Class, DeepPartial, QueryService } from '@ptc-org/nestjs-query-core'; import { BaseResolverOptions } from '../decorators/resolver-method.decorator'; import { ConnectionOptions, PagingStrategies } from '../types'; import { AggregateResolver, AggregateResolverOpts } from './aggregate.resolver'; import { CreateResolver, CreateResolverOpts } from './create.resolver'; import { DeleteResolver, DeleteResolverOpts } from './delete.resolver'; import { ReadResolverFromOpts, ReadResolverOpts } from './read.resolver'; import { ReferenceResolverOpts } from './reference.resolver'; import { MergePagingStrategyOpts, ResolverClass } from './resolver.interface'; import { UpdateResolver, UpdateResolverOpts } from './update.resolver'; export interface CRUDResolverOpts<DTO, C = DeepPartial<DTO>, U = DeepPartial<DTO>, R extends ReadResolverOpts<DTO> = ReadResolverOpts<DTO>, PS extends PagingStrategies = PagingStrategies.CURSOR> extends BaseResolverOptions, Pick<ConnectionOptions, 'enableTotalCount'> { /** * The DTO that should be used as input for create endpoints. */ CreateDTOClass?: Class<C>; /** * The DTO that should be used as input for update endpoints. */ UpdateDTOClass?: Class<U>; /** * The DTO that should be used for filter of the aggregate endpoint. */ AggregateDTOClass?: Class<DTO>; enableSubscriptions?: boolean; pagingStrategy?: PS; enableAggregate?: boolean; create?: CreateResolverOpts<DTO, C>; read?: R; update?: UpdateResolverOpts<DTO, U>; delete?: DeleteResolverOpts<DTO>; referenceBy?: ReferenceResolverOpts; aggregate?: AggregateResolverOpts<DTO>; } export interface CRUDResolver<DTO, C, U, R extends ReadResolverOpts<DTO>, QS extends QueryService<DTO, C, U> = QueryService<DTO, C, U>> extends CreateResolver<DTO, C, QS>, ReadResolverFromOpts<DTO, R, QS>, UpdateResolver<DTO, U, QS>, DeleteResolver<DTO, QS>, AggregateResolver<DTO, QS> { } /** * Factory to create a resolver that includes all CRUD methods from [[CreateResolver]], [[ReadResolver]], * [[UpdateResolver]], and [[DeleteResolver]]. * * ```ts * import { CRUDResolver } from '@ptc-org/nestjs-query-graphql'; * import { Resolver } from '@nestjs/graphql'; * import { TodoItemDTO } from './dto/todo-item.dto'; * import { TodoItemService } from './todo-item.service'; * * @Resolver() * export class TodoItemResolver extends CRUDResolver(TodoItemDTO) { * constructor(readonly service: TodoItemService) { * super(service); * } * } * ``` * @param DTOClass - The DTO Class that the resolver is for. All methods will use types derived from this class. * @param opts - Options to customize the resolver. */ export declare const CRUDResolver: <DTO, C = DeepPartial<DTO>, U = DeepPartial<DTO>, R extends ReadResolverOpts<DTO> = ReadResolverOpts<DTO>, PS extends PagingStrategies = PagingStrategies.CURSOR>(DTOClass: Class<DTO>, opts?: CRUDResolverOpts<DTO, C, U, R, PS>) => ResolverClass<DTO, QueryService<DTO, C, U>, CRUDResolver<DTO, C, U, MergePagingStrategyOpts<DTO, R, PS>>>;