UNPKG

@furystack/mongodb-store

Version:

MongoDB Store implementation for FuryStack

44 lines 1.72 kB
import type { CreateResult, FilterType, FindOptions, PartialResult, PhysicalStore, WithOptionalId } from '@furystack/core'; import type { Constructable } from '@furystack/inject'; import { EventHub } from '@furystack/utils'; import type { Collection, MongoClient } from 'mongodb'; /** * MongoDB Store implementation for FuryStack */ export declare class MongodbStore<T extends object, TPrimaryKey extends keyof T, TWriteableData = WithOptionalId<T, TPrimaryKey>> extends EventHub<{ onEntityAdded: { entity: T; }; onEntityUpdated: { id: T[TPrimaryKey]; change: Partial<T>; }; onEntityRemoved: { key: T[TPrimaryKey]; }; }> implements PhysicalStore<T, TPrimaryKey, TWriteableData> { private readonly options; readonly primaryKey: TPrimaryKey; readonly model: Constructable<T>; private initLock; private collection?; private createIdFilter; private stringifyResultId; private parseFilter; getCollection(): Promise<Collection<T>>; constructor(options: { model: Constructable<T>; primaryKey: TPrimaryKey; db: string; collection: string; mongoClient: () => MongoClient; }); add(...entries: TWriteableData[]): Promise<CreateResult<T>>; update(id: T[TPrimaryKey], data: Partial<T>): Promise<void>; count(filter?: FilterType<T>): Promise<number>; find<TFields extends Array<keyof T>>(filter: FindOptions<T, TFields>): Promise<Array<PartialResult<T, TFields>>>; private getProjection; get(key: T[TPrimaryKey], select?: Array<keyof T>): Promise<T | undefined>; remove(...keys: Array<T[TPrimaryKey]>): Promise<void>; } //# sourceMappingURL=mongodb-store.d.ts.map