UNPKG

test-ic-wallet-middleware-common

Version:
35 lines (34 loc) 1.59 kB
import { ILogger } from "../logger"; import { IdentifierService } from "../services"; import { BaseRxDbDocument } from "../storage/baseRxDbDocument"; import "reflect-metadata"; import { RxCollection, RxDocument } from "rxdb"; export interface IBaseDataStorage<T> { get collectionName(): string; getItems(): Promise<T[]>; getItem(documentId: string): Promise<T | undefined>; addItem(document: T): Promise<void>; addItems(documents: T[]): Promise<void>; updateItem(document: T): Promise<void>; updateItems(documents: T[]): Promise<void>; deleteItem(documentId: string): Promise<void>; } export type CollectionRxDocument = RxDocument<BaseRxDbDocument>; export declare const updateAt: () => number; export declare abstract class BaseDataStorage<TObject, TContext> implements IBaseDataStorage<TObject> { protected identifierService: IdentifierService; protected context: TContext; abstract get collectionName(): string; abstract getDocumentId(doc: TObject): string; protected logger: ILogger; constructor(logger: ILogger, identifierService: IdentifierService, context: TContext); get collection(): RxCollection; getItem(documentId: string): Promise<TObject | undefined>; getItems(): Promise<TObject[]>; addItem(document: TObject): Promise<void>; addItems(documents: TObject[]): Promise<void>; updateItem(document: TObject): Promise<void>; updateItems(documents: TObject[]): Promise<void>; deleteItem(documentId: string): Promise<void>; protected mapDocToModel(item: CollectionRxDocument): TObject; }