UNPKG

@decaf-ts/db-decorators

Version:

Agnostic database decorators and repository

20 lines (19 loc) 1.51 kB
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>>; }