@decaf-ts/core
Version:
Core persistence module for the decaf framework
31 lines (30 loc) • 1.3 kB
TypeScript
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;