UNPKG

@getanthill/datastore

Version:

Event-Sourced Datastore

49 lines (48 loc) 2.48 kB
import type { ModelConfig, GenericType, Services, AnyObject, ModelInstance } from '../typings'; import type { GraphI } from './graph'; import { Collection } from 'mongodb'; export interface ModelsConfig { models: ModelConfig[]; } export declare class Models { static INTERNAL_MODELS_COLLECTION: string; MODELS: Map<string, GenericType>; GRAPH: GraphI | null; config: ModelsConfig; services: Services; constructor(config: ModelsConfig, services: Services); initInternalModels(): Promise<void>; addModel(modelConfig: ModelConfig, canReplace?: boolean): any; loadModels(models: ModelConfig[], canReplace?: boolean): void; reset(): Models; hasModel(modelName: string): boolean; getModel(modelName: string): GenericType; isInternalModel(modelName: string): boolean; getModelByCorrelationField(correlationField: string): GenericType | null; load(): Promise<void>; reload(canReplace?: boolean): Promise<void>; createModel(modelConfig: ModelConfig): Promise<ModelInstance>; getModelIndexes(model: GenericType): Promise<any[]>; createModelCollections(modelConfig: ModelConfig, model: GenericType): Promise<any[]>; createModelIndexes(modelConfig: ModelConfig): Promise<any[]>; updateModel(modelName: string, modelConfig: Partial<ModelConfig>): Promise<ModelInstance>; removeModel(modelName: string): Models; factory(modelName: string, correlationId?: string, opts?: Partial<{ retryDuration: number; forcePrimary: boolean; }>): ModelInstance; getGraph(options?: any): GraphI; setGraph(graph: GraphI | null): void; getEntitiesFromGraph(modelName: string, query: any, options?: { graph?: GraphI; models?: string[]; withCorrelationFieldOnly?: boolean; handler?: (services: Services, Model: any, entity: any) => any; }): Promise<Map<string, any>>; getFromCache(cacheId: string): Promise<any>; setToCache(cacheId: string, value: AnyObject, expiresBy?: string): Promise<void | ModelInstance> | null; rotateEncryptionKeyOnCollection(Model: GenericType, collection: Collection, query: object, encryptedFields: string[]): Promise<number>; rotateEncryptionKey(onlyModels?: string[] | null): Promise<void>; log(level: number, modelName: string, correlationId: string, message: string, context: any): Promise<ModelInstance | void>; } export declare function init(config: ModelsConfig, services: Services): Models;