@decaf-ts/db-decorators
Version:
Agnostic database decorators and repository
40 lines (39 loc) • 2.31 kB
TypeScript
import { IRepository } from "../interfaces/IRepository";
import { Constructor, Model } from "@decaf-ts/decorator-validation";
import { Context } from "./Context";
import { RepositoryFlags } from "./types";
export declare abstract class BaseRepository<M extends Model, F extends RepositoryFlags = RepositoryFlags, C extends Context<F> = Context<F>> implements IRepository<M, F, C> {
private readonly _class;
private _pk;
private _pkProps;
get class(): Constructor<M>;
get pk(): keyof M;
protected get pkProps(): any;
protected constructor(clazz?: Constructor<M>);
abstract create(model: M, ...args: any[]): Promise<M>;
createAll(models: M[], ...args: any[]): Promise<M[]>;
protected createPrefix(model: M, ...args: any[]): Promise<any[]>;
protected createSuffix(model: M, context: C): Promise<M>;
protected createAllPrefix(models: M[], ...args: any[]): Promise<any[]>;
protected createAllSuffix(models: M[], context: C): Promise<M[]>;
abstract read(key: string | number, ...args: any[]): Promise<M>;
readAll(keys: string[] | number[], ...args: any[]): Promise<M[]>;
protected readSuffix(model: M, context: C): Promise<M>;
protected readPrefix(key: string, ...args: any[]): Promise<any[]>;
protected readAllPrefix(keys: string[] | number[], ...args: any[]): Promise<any[]>;
protected readAllSuffix(models: M[], context: C): Promise<M[]>;
abstract update(model: M, ...args: any[]): Promise<M>;
updateAll(models: M[], ...args: any): Promise<M[]>;
protected updateSuffix(model: M, context: C): Promise<M>;
protected updatePrefix(model: M, ...args: any[]): Promise<any[]>;
protected updateAllPrefix(models: M[], ...args: any[]): Promise<any[]>;
protected updateAllSuffix(models: M[], context: C): Promise<M[]>;
abstract delete(key: string | number, ...args: any[]): Promise<M>;
deleteAll(keys: string[] | number[], ...args: any[]): Promise<M[]>;
protected deleteSuffix(model: M, context: C): Promise<M>;
protected deletePrefix(key: any, ...args: any[]): Promise<any[]>;
protected deleteAllPrefix(keys: string[] | number[], ...args: any[]): Promise<any[]>;
protected deleteAllSuffix(models: M[], context: C): Promise<M[]>;
protected merge(oldModel: M, model: M): M;
toString(): string;
}