import { Id, NullableId, Paginated, PaginationOptions, Params, } from "@feathersjs/feathers"; import { NeDBAdapterParams, NeDbAdapter } from "./adapter"; export class NeDBService< Result extends Record = any, Data extends Record = Partial, ServiceParams extends Params = NeDBAdapterParams, PatchData = Partial > extends NeDbAdapter { async find( params?: ServiceParams & { paginate?: PaginationOptions } ): Promise>; async find(params?: ServiceParams & { paginate: false }): Promise; async find(params?: ServiceParams): Promise | Result[]>; async find(params?: ServiceParams): Promise | Result[]> { if (params) { params.query = await this.sanitizeQuery(params); } return this._find(params); } async get(id: Id, params?: ServiceParams): Promise { if (params) { params.query = await this.sanitizeQuery(params); } return this._get(id, params); } async create(data: Data, params?: ServiceParams): Promise; async create(data: Data[], params?: ServiceParams): Promise; async create( data: Data | Data[], params?: ServiceParams ): Promise; async create( data: Data | Data[], params?: ServiceParams ): Promise { return this._create(data, params); } async update(id: Id, data: Data, params?: ServiceParams): Promise { if (params) { params.query = await this.sanitizeQuery(params); } return this._update(id, data, params); } async patch( id: null, data: PatchData, params?: ServiceParams ): Promise; async patch(id: Id, data: PatchData, params?: ServiceParams): Promise; async patch( id: NullableId, data: PatchData, params?: ServiceParams ): Promise; async patch( id: NullableId, data: PatchData, params?: ServiceParams ): Promise { if (params) { const { $limit, ...query } = await this.sanitizeQuery(params); params.query = query; } return this._patch(id, data, params); } async remove(id: Id, params?: ServiceParams): Promise; async remove(id: null, params?: ServiceParams): Promise; async remove( id: NullableId, params?: ServiceParams ): Promise; async remove( id: NullableId, params?: ServiceParams ): Promise { if (params) { const { $limit, ...query } = await this.sanitizeQuery(params); params.query = query; } return this._remove(id, params); } }