@ptc-org/nestjs-query-graphql
Version:
Nestjs graphql query adapter
24 lines (23 loc) • 1.77 kB
TypeScript
import { Class, DeepPartial, DeleteManyResponse, Filter, QueryService, UpdateManyResponse } from '@ptc-org/nestjs-query-core';
import { MutationArgsType, SubscriptionArgsType, UpdateManyInputType, UpdateOneInputType } from '../types';
import { ResolverClass, ServiceResolver, SubscriptionResolverOpts } from './resolver.interface';
export type UpdatedEvent<DTO> = {
[eventName: string]: DTO;
};
export interface UpdateResolverOpts<DTO, U = DeepPartial<DTO>> extends SubscriptionResolverOpts {
UpdateDTOClass?: Class<U>;
UpdateOneInput?: Class<UpdateOneInputType<U>>;
UpdateManyInput?: Class<UpdateManyInputType<DTO, U>>;
}
export interface UpdateResolver<DTO, U, QS extends QueryService<DTO, unknown, U>> extends ServiceResolver<DTO, QS> {
updateOne(input: MutationArgsType<UpdateOneInputType<U>>, authFilter?: Filter<DTO>): Promise<DTO>;
updateMany(input: MutationArgsType<UpdateManyInputType<DTO, U>>, authFilter?: Filter<DTO>): Promise<UpdateManyResponse>;
updatedOneSubscription(input?: SubscriptionArgsType<DTO>, authFilter?: Filter<DTO>): AsyncIterator<UpdatedEvent<DTO>>;
updatedManySubscription(authFilter?: Filter<DTO>): AsyncIterator<UpdatedEvent<DeleteManyResponse>>;
}
/**
* @internal
* Mixin to add `update` graphql endpoints.
*/
export declare const Updatable: <DTO, U, QS extends QueryService<DTO, unknown, U>>(DTOClass: Class<DTO>, opts: UpdateResolverOpts<DTO, U>) => <B extends Class<ServiceResolver<DTO, QS>>>(BaseClass: B) => Class<UpdateResolver<DTO, U, QS>> & B;
export declare const UpdateResolver: <DTO, U = DeepPartial<DTO>, QS extends QueryService<DTO, unknown, U> = QueryService<DTO, unknown, U>>(DTOClass: Class<DTO>, opts?: UpdateResolverOpts<DTO, U>) => ResolverClass<DTO, QS, UpdateResolver<DTO, U, QS>>;