UNPKG

@decaf-ts/core

Version:

Core persistence module for the decaf framework

31 lines (30 loc) 1.3 kB
import { Constructor } from "@decaf-ts/injectable-decorators"; import { Model } from "@decaf-ts/decorator-validation"; /** * @description Repository decorator for model classes. * @summary Creates and registers a repository for a model class. Can be used as both a property decorator and a class decorator. * @template T - The model type that extends Model. * @param {Constructor<T>} model - The constructor of the model class. * @param {string} [flavour] - the required adapter's flavour/alias. If not provided, it will be retrieved from the model metadata.. * @return {any} - The decorator function. * @function repository * @mermaid * sequenceDiagram * participant C as Client Code * participant D as Decorator * participant R as Repository * participant M as Metadata * * C->>D: Apply @repository(Model) * alt Property Decorator * D->>D: Check if propertyKey exists * D->>+C: Return inject(name) decorator * else Class Decorator * D->>M: Set repository metadata on model * D->>R: Register model with Repository * D->>+C: Return injectable decorator with config * C->>C: Define DBKeys.CLASS property * end * @category Decorators */ export declare function repository<T extends Model>(model: Constructor<T>, flavour?: string): any;