@getanthill/datastore
Version:
Event-Sourced Datastore
61 lines (60 loc) • 2.72 kB
TypeScript
import type { AxiosResponse, AxiosResponseHeaders, RawAxiosResponseHeaders } from 'axios';
import type { ModelConfig } from '../typings';
import type { DatastoreConfig } from './Datastore';
import type Datastore from './Datastore';
export type { AxiosResponse, DatastoreConfig };
export default class Model<T> {
modelConfig: ModelConfig;
datastore: Datastore;
constructor(datastore: Datastore, modelConfig: ModelConfig);
get name(): string;
request(handler: Function, ...args: any[]): Promise<any>;
heartbeat(): Promise<{
status: string;
}>;
createModel(): Promise<any>;
updateModel(): Promise<any>;
createModelIndexes(): Promise<any>;
getSchema(): Promise<any>;
encryptOne(payload: Partial<T>, fields?: string[]): Promise<T>;
encryptMany(payloads: Partial<T>[], fields?: string[]): Promise<T[]>;
decryptOne(payload: Partial<T>, fields?: string[]): Promise<T>;
decryptMany(payloads: Partial<T>[], fields?: string[]): Promise<T[]>;
createOne(payload: Partial<T>, headers?: object): Promise<T>;
createMany(payloads: Partial<T>[]): Promise<T[]>;
/**
* @deprecated in favor of createOne + createMany
*/
create(payload: T | T[]): Promise<T | T[]>;
updateOne(payload: Partial<T>, headers?: object): Promise<T>;
updateMany(payloads: Partial<T>[]): Promise<T[]>;
/**
* @deprecated
*/
update(payload: object | object[]): Promise<T | T[]>;
apply(eventType: string, payload: object, headers?: object, eventVersion?: string): Promise<T>;
get(correlationId: string): Promise<T>;
count(query: T & Record<string, unknown>): Promise<number>;
find(query: Partial<T>, page?: number, pageSize?: number): Promise<T[]>;
events(correlationId: string, page?: number, pageSize?: number): Promise<any[]>;
version(correlationId: string, version: number): Promise<T>;
at(correlationId: string, date: Date | string): Promise<T>;
restore(correlationId: string, version: number): Promise<T>;
snapshot(correlationId: string): Promise<T>;
archive(correlationId: string, deep?: boolean): Promise<T>;
unarchive(correlationId: string, deep?: boolean): Promise<T>;
delete(correlationId: string, deep?: boolean): Promise<T>;
updateOverwhelmingly<T>(query: object, handler: (entity: T) => Promise<T>, progress: (stats: {
total: number;
done: number;
error: number;
progress: number;
restored: number;
}, entity: T, headers: RawAxiosResponseHeaders | AxiosResponseHeaders) => void, pageSize?: number): Promise<{
total: number;
done: number;
error: number;
progress: number;
restored: number;
}>;
}