@itrocks/storage
Version:
Transforms model objects to and from storage systems
28 lines (27 loc) • 2.12 kB
TypeScript
import { Type } from '@itrocks/class-type';
import { Entity } from './entity';
import { Identifier } from './entity';
import { MayEntity } from './entity';
import { Option } from './option/option';
export type Options = Option | Array<Option>;
export type SearchType<T extends object = object> = Partial<Record<keyof T, any>> & Record<string, any>;
export declare abstract class DataSource {
abstract close(): Promise<void>;
connectObject<T extends object>(object: MayEntity<T>, sourceObjectOrId: Entity<T> | Identifier): Entity<T>;
abstract count<T extends object>(type: Type<T>, search?: SearchType<T>): Promise<number>;
abstract delete<T extends object>(object: Entity<T>, property?: keyof Entity<T>): Promise<T>;
abstract deleteId<T extends object>(type: Type<T>, id: Identifier, property?: keyof Entity<T>): void;
abstract deleteRelatedId<T extends Entity>(object: T, property: keyof T, id: Identifier): void;
disconnectObject<T extends object>(object: Entity<T>): T;
abstract insertRelatedId<T extends Entity>(object: T, property: keyof T, id: Identifier): void;
isObjectConnected<T extends object>(object: MayEntity<T>): object is Entity<T>;
options(options?: Options): Option[];
abstract read<T extends object>(type: Type<T>, id: Identifier): Promise<Entity<T>>;
readAll<T extends object>(type: Type<T>, options?: Options): Promise<Entity<T>[]>;
abstract readCollection<T extends object, PT extends object>(object: Entity<T>, property: keyof T, type?: Type<PT>): Promise<Entity<PT>[]>;
abstract readCollectionIds<T extends object, PT extends object>(object: Entity<T>, property: keyof T, type?: Type<PT>): Promise<Identifier[]>;
abstract readMultiple<T extends object>(type: Type<T>, ids: Identifier[]): Promise<Entity<T>[]>;
abstract save<T extends object>(object: MayEntity<T>): Promise<Entity<T>>;
abstract search<T extends object>(type: Type<T>, search?: SearchType<T>, options?: Options): Promise<Entity<T>[]>;
searchOne<T extends object>(type: Type<T>, search?: SearchType<T>, options?: Options): Promise<Entity<T> | undefined>;
}