@furystack/mongodb-store
Version:
MongoDB Store implementation for FuryStack
44 lines • 1.72 kB
TypeScript
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