import { Class, DeepPartial, QueryService } from '@nestjs-query/core'; import { ConnectionOptions, PagingStrategies } from '../types'; import { AggregateResolverOpts, AggregateResolver } from './aggregate.resolver'; import { ReadResolverFromOpts, ReadResolverOpts } from './read.resolver'; import { CreateResolver, CreateResolverOpts } from './create.resolver'; import { ReferenceResolverOpts } from './reference.resolver'; import { MergePagingStrategyOpts, ResolverClass } from './resolver.interface'; import { UpdateResolver, UpdateResolverOpts } from './update.resolver'; import { DeleteResolver, DeleteResolverOpts } from './delete.resolver'; import { BaseResolverOptions } from '../decorators/resolver-method.decorator'; export interface CRUDResolverOpts, U = DeepPartial, R extends ReadResolverOpts = ReadResolverOpts, PS extends PagingStrategies = PagingStrategies.CURSOR> extends BaseResolverOptions, Pick { /** * The DTO that should be used as input for create endpoints. */ CreateDTOClass?: Class; /** * The DTO that should be used as input for update endpoints. */ UpdateDTOClass?: Class; enableSubscriptions?: boolean; pagingStrategy?: PS; enableAggregate?: boolean; create?: CreateResolverOpts; read?: R; update?: UpdateResolverOpts; delete?: DeleteResolverOpts; referenceBy?: ReferenceResolverOpts; aggregate?: AggregateResolverOpts; } export interface CRUDResolver, QS extends QueryService = QueryService> extends CreateResolver, ReadResolverFromOpts, UpdateResolver, DeleteResolver, AggregateResolver { } /** * Factory to create a resolver that includes all CRUD methods from [[CreateResolver]], [[ReadResolver]], * [[UpdateResolver]], and [[DeleteResolver]]. * * ```ts * import { CRUDResolver } from '@nestjs-query/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: , U = DeepPartial, R extends ReadResolverOpts = ReadResolverOpts, PS extends PagingStrategies = PagingStrategies.CURSOR>(DTOClass: Class, opts?: CRUDResolverOpts) => ResolverClass, CRUDResolver, QueryService>>;