UNPKG

@liqd-js/mongodb-model

Version:
53 lines (52 loc) 4.6 kB
import { Collection, Document, FindOptions, Filter, UpdateFilter } from 'mongodb'; import { ModelAggregateOptions, ModelCreateOptions, ModelListOptions, MongoRootDocument, WithTotal, ModelUpdateResponse, AbstractModelSmartFilters, PublicMethodNames, ModelExtensions, ModelFindOptions, ModelUpdateOptions, AbstractModelProperties, ComputedPropertiesParam, SyncComputedPropertyMethod, ExtractSmartFilters, ExtractComputedProperties } from './types'; import { AbstractModels } from "./index"; export declare const Aggregator: any; /** * Abstract model class * @template DBE - Database entity * @template DTO - Data transfer object * @template Extensions - Model parameters * @class */ export declare abstract class AbstractModel<DBE extends MongoRootDocument, DTO extends Document, Extensions extends ModelExtensions<DBE, AbstractModelSmartFilters<ExtractSmartFilters<Extensions>>, AbstractModelProperties<ExtractComputedProperties<Extensions>>>> { #private; collection: Collection<DBE>; private abstractFindAggregator; converters: Extensions['converters']; smartFilters?: ExtractSmartFilters<Extensions>; private readonly computedProperties; private readonly cache?; protected constructor(models: AbstractModels, collection: Collection<DBE>, params: Extensions); protected id(): DTO['id'] | Promise<DTO['id']>; dbeID(id: DTO['id'] | DBE['_id']): DBE['_id']; dtoID(dbeID: DBE['_id'] | DTO['id']): DTO['id']; protected pipeline<K extends keyof Extensions['converters']>(options: ModelAggregateOptions<DBE, Extensions['smartFilters'], Extensions['computedProperties']>, conversion?: K): Promise<Document[]>; create(dbe: Omit<DBE, '_id'>, id?: DTO['id'], options?: ModelCreateOptions): Promise<DTO['id']>; createFrom(data: any, id?: DTO['id'], options?: ModelCreateOptions): Promise<DTO['id']>; update(id: DTO['id'] | DBE['_id'], update: Partial<DBE> | UpdateFilter<DBE>, options?: ModelUpdateOptions): Promise<ModelUpdateResponse<DBE>>; updateMany(id: DTO['id'][] | DBE['_id'][], update: Partial<DBE> | UpdateFilter<DBE>): Promise<ModelUpdateResponse<DBE>>; updateOne(match: ModelFindOptions<DBE, ExtractSmartFilters<Extensions>>, update: Partial<DBE> | UpdateFilter<DBE>, options?: ModelUpdateOptions): Promise<ModelUpdateResponse<DBE>>; get(id: DTO['id'] | DBE['_id']): Promise<Awaited<ReturnType<Extensions['converters']['dto']['converter']>> | null>; get<K extends keyof Extensions['converters']>(id: DTO['id'] | DBE['_id'], conversion: K): Promise<Awaited<ReturnType<Extensions['converters'][K]['converter']>> | null>; get(id: Array<DTO['id'] | DBE['_id']>): Promise<Array<Awaited<ReturnType<Extensions['converters']['dto']['converter']>> | null>>; get<K extends keyof Extensions['converters']>(id: Array<DTO['id'] | DBE['_id']>, conversion: K): Promise<Array<Awaited<ReturnType<Extensions['converters'][K]['converter']>> | null>>; get<K extends keyof Extensions['converters']>(id: Array<DTO['id'] | DBE['_id']>, conversion: K, filtered: true): Promise<Array<Awaited<ReturnType<Extensions['converters'][K]['converter']>>>>; get<K extends keyof Extensions['converters']>(id: Array<DTO['id'] | DBE['_id']>, conversion: K, filtered: false): Promise<Array<Awaited<ReturnType<Extensions['converters'][K]['converter']>> | null>>; find<K extends keyof Extensions['converters']>(options: ModelFindOptions<DBE, ExtractSmartFilters<Extensions>>, conversion?: K, sort?: FindOptions<DBE>['sort']): Promise<Awaited<ReturnType<Extensions['converters'][K]['converter']>> | null>; list<K extends keyof Extensions['converters']>(options: ModelListOptions<DBE, ExtractSmartFilters<Extensions>>, conversion?: K): Promise<WithTotal<Array<Awaited<ReturnType<Extensions['converters'][K]['converter']>> & { $cursor?: string; }>>>; aggregate<T>(pipeline: Document[], options?: ModelAggregateOptions<DBE, Extensions['smartFilters'], Extensions['computedProperties']>): Promise<T[]>; count(pipeline: Document[], options?: ModelAggregateOptions<DBE, Extensions['smartFilters'], Extensions['computedProperties']>): Promise<number>; protected accessFilter(): Promise<Filter<DBE> | void>; resolveSmartFilter(smartFilter: { [key in PublicMethodNames<ExtractSmartFilters<Extensions>>]?: any; }): Promise<{ filter?: Filter<DBE>; pipeline?: Document[]; }>; resolveComputedProperties(properties?: ComputedPropertiesParam<any>): Promise<Awaited<ReturnType<SyncComputedPropertyMethod>>>; delete(id: DTO['id'] | DBE['_id']): Promise<Boolean>; private cacheKey; }