test-ic-wallet-middleware-common
Version:
Ic middleware wallet common objects
35 lines (34 loc) • 1.59 kB
TypeScript
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;
}