@decaf-ts/db-decorators
Version:
Agnostic database decorators and repository
20 lines (19 loc) • 1.51 kB
TypeScript
import { ContextArgs } from "./utils";
import { Contextual } from "../interfaces/Contextual";
import { OperationKeys } from "../operations/constants";
import { Constructor, Model } from "@decaf-ts/decorator-validation";
import { RepositoryFlags } from "./types";
export type ContextFactory<F extends RepositoryFlags> = <C extends Context<F>>(arg: Omit<F, "timestamp">) => C;
export declare const DefaultContextFactory: ContextFactory<any>;
export declare class Context<F extends RepositoryFlags = RepositoryFlags> {
static factory: ContextFactory<any>;
private readonly cache;
constructor(obj?: F);
accumulate<V extends object>(value: V): Context<F & V>;
get timestamp(): Date;
get<K extends keyof F>(key: K): F[K];
child<M extends Model, C extends Context<F>>(operation: OperationKeys, model?: Constructor<M>): C;
static childFrom<F extends RepositoryFlags, C extends Context<F>>(context: C, overrides?: Partial<F>): C;
static from<M extends Model, F extends RepositoryFlags, C extends Context<F>>(operation: OperationKeys.CREATE | OperationKeys.READ | OperationKeys.UPDATE | OperationKeys.DELETE, overrides: Partial<F>, model: Constructor<M>, ...args: any[]): Promise<C>;
static args<M extends Model, C extends Context<F>, F extends RepositoryFlags>(operation: OperationKeys.CREATE | OperationKeys.READ | OperationKeys.UPDATE | OperationKeys.DELETE, model: Constructor<M>, args: any[], contextual?: Contextual<F>, overrides?: Partial<F>): Promise<ContextArgs<F, C>>;
}