UNPKG

@feathersjs/mongodb

Version:

Feathers MongoDB service adapter

76 lines (65 loc) 2.97 kB
import { PaginationOptions } from '@feathersjs/adapter-commons' import { MethodNotAllowed } from '@feathersjs/errors/lib' import { Paginated, Params } from '@feathersjs/feathers' import { AdapterId, MongoDbAdapter, MongoDBAdapterParams, NullableAdapterId } from './adapter' export * from './adapter' export * from './error-handler' export * from './converters' export class MongoDBService< Result = any, Data = Partial<Result>, ServiceParams extends Params<any> = MongoDBAdapterParams, PatchData = Partial<Data> > extends MongoDbAdapter<Result, Data, ServiceParams, PatchData> { async find(params?: ServiceParams & { paginate?: PaginationOptions }): Promise<Paginated<Result>> async find(params?: ServiceParams & { paginate: false }): Promise<Result[]> async find(params?: ServiceParams): Promise<Paginated<Result> | Result[]> async find(params?: ServiceParams): Promise<Paginated<Result> | Result[]> { return this._find({ ...params, query: await this.sanitizeQuery(params) }) } async get(id: AdapterId, params?: ServiceParams): Promise<Result> { return this._get(id, { ...params, query: await this.sanitizeQuery(params) }) } async create(data: Data, params?: ServiceParams): Promise<Result> async create(data: Data[], params?: ServiceParams): Promise<Result[]> async create(data: Data | Data[], params?: ServiceParams): Promise<Result | Result[]> async create(data: Data | Data[], params?: ServiceParams): Promise<Result | Result[]> { if (Array.isArray(data) && !this.allowsMulti('create', params)) { throw new MethodNotAllowed('Can not create multiple entries') } return this._create(data, params) } async update(id: NullableAdapterId, data: Data, params?: ServiceParams): Promise<Result> async update(id: AdapterId, data: Data, params?: ServiceParams): Promise<Result> { return this._update(id, data, { ...params, query: await this.sanitizeQuery(params) }) } async patch(id: null, data: PatchData, params?: ServiceParams): Promise<Result[]> async patch(id: AdapterId, data: PatchData, params?: ServiceParams): Promise<Result> async patch(id: NullableAdapterId, data: PatchData, params?: ServiceParams): Promise<Result | Result[]> async patch(id: NullableAdapterId, data: PatchData, params?: ServiceParams): Promise<Result | Result[]> { const { $limit, ...query } = await this.sanitizeQuery(params) return this._patch(id, data, { ...params, query }) } async remove(id: AdapterId, params?: ServiceParams): Promise<Result> async remove(id: null, params?: ServiceParams): Promise<Result[]> async remove(id: NullableAdapterId, params?: ServiceParams): Promise<Result | Result[]> async remove(id: NullableAdapterId, params?: ServiceParams): Promise<Result | Result[]> { const { $limit, ...query } = await this.sanitizeQuery(params) return this._remove(id, { ...params, query }) } }