@loopback/repository

  • Version 7.0.10
  • Published
  • 820 kB
  • 6 dependencies
  • MIT license

Install

npm i @loopback/repository
yarn add @loopback/repository
pnpm add @loopback/repository

Overview

A common set of interfaces for interacting with databases.

This module provides data access facilities to various databases and services as well as the constructs for modeling and accessing those data.

Index

Variables

Functions

Classes

Interfaces

Enums

Type Aliases

Namespaces

Variables

variable ANY

const ANY: AnyType;

    variable BOOLEAN

    const BOOLEAN: BooleanType;

      variable BUFFER

      const BUFFER: BufferType;

        variable CountSchema

        const CountSchema: {
        type: 'object';
        title: string;
        'x-typescript-type': string;
        properties: { count: { type: 'number' } };
        };
        • JSON Schema describing the Count interface. It's the response type for REST calls to APIs which return count. The type is compatible with SchemaObject from @loopback/openapi-v3, which is not an explicit dependency for @loopback/repository.

        variable DATE

        const DATE: DateType;

          variable MODEL_KEY

          const MODEL_KEY: MetadataAccessor<Partial<ModelDefinitionSyntax>, ClassDecorator>;

            variable MODEL_PROPERTIES_KEY

            const MODEL_PROPERTIES_KEY: MetadataAccessor<PropertyDefinition, PropertyDecorator>;

              variable MODEL_WITH_PROPERTIES_KEY

              const MODEL_WITH_PROPERTIES_KEY: MetadataAccessor<ModelDefinition, ClassDecorator>;

                variable NULL

                const NULL: NullType;

                  variable NUMBER

                  const NUMBER: NumberType;

                    variable RELATIONS_KEY

                    const RELATIONS_KEY: string;

                      variable STRING

                      const STRING: StringType;

                        Functions

                        function belongsTo

                        belongsTo: <T extends Entity>(
                        targetResolver: EntityResolver<T>,
                        definition?: Partial<BelongsToDefinition>,
                        propertyDefinition?: Partial<PropertyDefinition>
                        ) => (decoratedTarget: Entity, decoratedKey: string) => void;
                        • Decorator for belongsTo

                          Parameter targetResolver

                          A resolver function that returns the target model for a belongsTo relation

                          Parameter definition

                          Optional metadata for setting up a belongsTo relation

                          Parameter propertyDefinition

                          Optional metadata for setting up the property

                          Returns

                          A property decorator

                        function bindModel

                        bindModel: <T extends juggler.ModelBaseClass>(
                        modelClass: T,
                        ds: juggler.DataSource
                        ) => T;
                        • This is a bridge to the legacy DAO class. The function mixes DAO methods into a model class and attach it to a given data source

                          Parameter modelClass

                          Model class

                          Parameter ds

                          Data source

                          Returns

                          {} The new model class with DAO (CRUD) operations

                        function buildLookupMap

                        buildLookupMap: <Key, InType extends object, OutType = InType>(
                        list: InType[],
                        keyName: StringKeyOf<InType>,
                        reducer: (accumulator: OutType | undefined, current: InType) => OutType
                        ) => Map<Key, OutType>;
                        • Returns a map which maps key values(ids) to instances. The instances can be grouped by different strategies.

                          Parameter list

                          an array of instances

                          Parameter keyName

                          key name of the source

                          Parameter reducer

                          a strategy to reduce inputs to single item or array

                        function buildModelDefinition

                        buildModelDefinition: (
                        target: Function & { definition?: ModelDefinition | undefined },
                        def?: ModelDefinitionSyntax
                        ) => ModelDefinition;
                        • Build model definition from decorations

                          Parameter target

                          Target model class

                          Parameter def

                          Model definition spec

                        function constrainDataObject

                        constrainDataObject: <T extends Entity>(
                        originalData: DataObject<T>,
                        constraint: DataObject<T>
                        ) => DataObject<T>;
                        • A utility function which takes a model instance data and enforces constraint(s) on it

                          Parameter originalData

                          the model data to apply the constrain(s) to

                          Parameter constraint

                          the constraint which is to be applied on the data object

                          Returns

                          the modified data with the constraint, otherwise the original instance data

                        function constrainDataObjects

                        constrainDataObjects: <T extends Entity>(
                        originalData: DataObject<T>[],
                        constraint: DataObject<T>
                        ) => DataObject<T>[];
                        • A utility function which takes an array of model instance data and enforces constraint(s) on it

                          Parameter originalData

                          the array of model data to apply the constrain(s) to

                          Parameter constraint

                          the constraint which is to be applied on the data objects

                          Returns

                          an array of the modified data with the constraint, otherwise the original instance data array

                        function constrainFilter

                        constrainFilter: <T extends object>(
                        originalFilter: Filter<T> | undefined,
                        constraint: AnyObject
                        ) => Filter<T>;
                        • A utility function which takes a filter and enforces constraint(s) on it

                          Parameter originalFilter

                          the filter to apply the constrain(s) to

                          Parameter constraint

                          the constraint which is to be applied on the filter

                          Returns

                          Filter the modified filter with the constraint, otherwise the original filter

                        function constrainWhere

                        constrainWhere: <T extends object>(
                        originalWhere: Where<T> | undefined,
                        constraint: Where<T>
                        ) => Where<T>;
                        • A utility function which takes a where filter and enforces constraint(s) on it

                          Parameter originalWhere

                          the where filter to apply the constrain(s) to

                          Parameter constraint

                          the constraint which is to be applied on the filter

                          Returns

                          Filter the modified filter with the constraint, otherwise the original filter

                        function constrainWhereOr

                        constrainWhereOr: <T extends object>(
                        originalWhere: Where<T> | undefined,
                        constraint: Where<T>[]
                        ) => Where<T>;
                        • A utility function which takes a where filter and enforces constraint(s) on it with OR clause

                          Parameter originalWhere

                          the where filter to apply the constrain(s) to

                          Parameter constraint

                          the constraint which is to be applied on the filter with or clause

                          Returns

                          Filter the modified filter with the constraint, otherwise the original filter

                        function createBelongsToAccessor

                        createBelongsToAccessor: <
                        Target extends Entity,
                        TargetId,
                        Source extends Entity,
                        SourceId
                        >(
                        belongsToMetadata: BelongsToDefinition,
                        targetRepositoryGetter: any,
                        sourceRepository: EntityCrudRepository<Source, SourceId>
                        ) => BelongsToAccessor<Target, SourceId>;
                        • Enforces a BelongsTo constraint on a repository If the target model is polymorphic, i.e. stored within different repositories, supply the targetRepositoryGetter with a dictionary in the form of {[typeName: string]: repositoryGetter}

                        function createBelongsToInclusionResolver

                        createBelongsToInclusionResolver: <
                        Target extends Entity,
                        TargetID,
                        TargetRelations extends object
                        >(
                        meta: BelongsToDefinition,
                        getTargetRepoDict: {
                        [repoType: string]: Getter<
                        EntityCrudRepository<Target, TargetID, TargetRelations>
                        >;
                        }
                        ) => InclusionResolver<Entity, Target>;
                        • Creates InclusionResolver for BelongsTo relation. Notice that this function only generates the inclusionResolver. It doesn't register it for the source repository.

                          Notice: scope field for inclusion is not supported yet

                          Parameter meta

                          resolved BelongsToMetadata

                          Parameter getTargetRepoDict

                          dictionary of target model type - target repository i.e where related instances for different types are

                        function createHasManyInclusionResolver

                        createHasManyInclusionResolver: <
                        Target extends Entity,
                        TargetID,
                        TargetRelations extends object
                        >(
                        meta: HasManyDefinition,
                        getTargetRepo: Getter<EntityCrudRepository<Target, TargetID, TargetRelations>>
                        ) => InclusionResolver<Entity, Target>;
                        • Creates InclusionResolver for HasMany relation. Notice that this function only generates the inclusionResolver. It doesn't register it for the source repository.

                          Notice: scope field for inclusion is not supported yet.

                          Parameter meta

                          resolved metadata of the hasMany relation

                          Parameter getTargetRepo

                          target repository i.e where related instances are

                        function createHasManyRepositoryFactory

                        createHasManyRepositoryFactory: <
                        Target extends Entity,
                        TargetID,
                        ForeignKeyType
                        >(
                        relationMetadata: HasManyDefinition,
                        targetRepositoryGetter: Getter<EntityCrudRepository<Target, TargetID, {}>>
                        ) => HasManyRepositoryFactory<Target, ForeignKeyType>;
                        • Enforces a constraint on a repository based on a relationship contract between models. For example, if a Customer model is related to an Order model via a HasMany relation, then, the relational repository returned by the factory function would be constrained by a Customer model instance's id(s).

                          Parameter relationMetadata

                          The relation metadata used to describe the relationship and determine how to apply the constraint.

                          Parameter targetRepositoryGetter

                          The repository which represents the target model of a relation attached to a datasource.

                          Returns

                          The factory function which accepts a foreign key value to constrain the given target repository

                        function createHasManyThroughRepositoryFactory

                        createHasManyThroughRepositoryFactory: <
                        Target extends Entity,
                        TargetID,
                        Through extends Entity,
                        ThroughID,
                        SourceID
                        >(
                        relationMetadata: HasManyDefinition,
                        targetRepositoryGetter: any,
                        throughRepositoryGetter: Getter<EntityCrudRepository<Through, ThroughID, {}>>
                        ) => HasManyThroughRepositoryFactory<Target, TargetID, Through, SourceID>;

                          function createHasOneRepositoryFactory

                          createHasOneRepositoryFactory: <Target extends Entity, TargetID, ForeignKeyType>(
                          relationMetadata: HasOneDefinition,
                          targetRepositoryGetter: any
                          ) => HasOneRepositoryFactory<Target, ForeignKeyType>;
                          • Enforces a constraint on a repository based on a relationship contract between models. For example, if a Customer model is related to an Address model via a HasOne relation, then, the relational repository returned by the factory function would be constrained by a Customer model instance's id(s).

                            If the target model is polymorphic, i.e. stored within different repositories, supply the targetRepositoryGetter with a dictionary in the form of {[typeName: string]: repositoryGetter}

                            Parameter relationMetadata

                            The relation metadata used to describe the relationship and determine how to apply the constraint.

                            Parameter targetRepositoryGetter

                            The repository or a dictionary of classname - repository, which represents the target model of a relation attached to a datasource. For the dictionary, the key is the class name of the concrete class the the polymorphic model.

                            Returns

                            The factory function which accepts a foreign key value to constrain the given target repository

                          function createModelClassBinding

                          createModelClassBinding: <M extends Class<unknown>>(modelClass: M) => Binding<M>;
                          • Create a binding for the given model class

                            Parameter modelClass

                            Model class

                          function createReferencesManyAccessor

                          createReferencesManyAccessor: <
                          Target extends Entity,
                          TargetIds,
                          Source extends Entity,
                          SourceId
                          >(
                          referencesManyMetadata: ReferencesManyDefinition,
                          targetRepoGetter: Getter<EntityCrudRepository<Target, TargetIds, {}>>,
                          sourceRepository: EntityCrudRepository<Source, SourceId>
                          ) => ReferencesManyAccessor<Target, SourceId>;
                          • Enforces a ReferencesMany constraint on a repository

                          function createReferencesManyInclusionResolver

                          createReferencesManyInclusionResolver: <
                          Target extends Entity,
                          TargetIds,
                          TargetRelations extends object
                          >(
                          meta: ReferencesManyDefinition,
                          getTargetRepo: Getter<EntityCrudRepository<Target, TargetIds, TargetRelations>>
                          ) => InclusionResolver<Entity, Target>;
                          • Creates InclusionResolver for ReferencesMany relation. Notice that this function only generates the inclusionResolver. It doesn't register it for the source repository.

                            Notice: scope field for inclusion is not supported yet

                            Parameter meta

                            resolved ReferencesManyMetadata

                            Parameter getTargetRepo

                            target repository i.e where related instances are

                          function deduplicate

                          deduplicate: <T>(input: T[]) => T[];
                          • Dedupe an array

                            Parameter input

                            an array of sourceIds

                            Returns

                            an array with unique items

                          function defineCrudRepositoryClass

                          defineCrudRepositoryClass: <E extends Entity, IdType, Relations extends object>(
                          entityClass: typeof Entity & { prototype: E }
                          ) => ModelRepositoryClass<E, DefaultCrudRepository<E, IdType, Relations>>;
                          • Create (define) an entity CRUD repository class for the given model. This function always uses DefaultCrudRepository as the base class, use defineRepositoryClass if you want to use your own base repository.

                            Parameter entityClass

                            An entity class such as Product.

                            Example 1

                            const ProductRepository = defineCrudRepositoryClass<
                            Product,
                            typeof Product.prototype.id,
                            ProductRelations
                            >(Product);

                          function defineKeyValueRepositoryClass

                          defineKeyValueRepositoryClass: <M extends Model>(
                          modelClass: typeof Model & { prototype: M }
                          ) => ModelRepositoryClass<M, DefaultKeyValueRepository<M>>;
                          • Create (define) a KeyValue repository class for the given entity. This function always uses DefaultKeyValueRepository as the base class, use defineRepositoryClass if you want to use your own base repository.

                            Parameter modelClass

                            An entity class such as Product.

                            Example 1

                            const ProductKeyValueRepository = defineKeyValueRepositoryClass(Product);

                          function defineModelClass

                          defineModelClass: <BaseCtor extends typeof Model, Props extends object = {}>(
                          base: BaseCtor,
                          definition: ModelDefinition
                          ) => DynamicModelCtor<BaseCtor, Props>;
                          • Create (define) a new model class with the given name and definition.

                            Parameter base

                            The base model to extend, typically Model or Entity. You can also use your own base class, e.g. User.

                            Parameter definition

                            Definition of the model to create.

                            Remarks

                            const Product = defineModelClass(Entity, new ModelDefinition('Product'));

                            To enable type safety, you should describe properties of your model:

                            const Product = defineModelClass<
                            typeof Entity,
                            {id: number, name: string}
                            >(Entity, new ModelDefinition('Product'));

                            If your model allows arbitrary (free-form) properties, then add AnyObject to the type describing model properties.

                            const Product = defineModelClass<
                            typeof Entity,
                            AnyObject & {id: number},
                            >(Entity, new ModelDefinition('Product'));

                          function defineRepositoryClass

                          defineRepositoryClass: <
                          M extends typeof Model,
                          R extends Repository<PrototypeOf<M>>
                          >(
                          modelClass: M,
                          baseRepositoryClass: BaseRepositoryClass<M, R>
                          ) => ModelRepositoryClass<PrototypeOf<M>, R>;
                          • Create (define) a repository class for the given model.

                            See also defineCrudRepositoryClass and defineKeyValueRepositoryClass for convenience wrappers providing repository class factory for the default CRUD and KeyValue implementations.

                            **❗️IMPORTANT: The compiler (TypeScript 3.8) is not able to correctly infer generic arguments M and R from the class constructors provided in function arguments. You must always provide both M and R types explicitly.**

                            Parameter modelClass

                            A model class such as Address.

                            Parameter baseRepositoryClass

                            Repository implementation to use as the base, e.g. DefaultCrudRepository.

                            Example 1

                            const AddressRepository = defineRepositoryClass<
                            typeof Address,
                            DefaultEntityCrudRepository<
                            Address,
                            typeof Address.prototype.id,
                            AddressRelations
                            >,
                            >(Address, DefaultCrudRepository);

                          function embedsMany

                          embedsMany: (definition?: Object) => PropertyDecorator;
                          • Decorator for embedsMany

                            Parameter definition

                            Returns

                            A property decorator

                          function embedsOne

                          embedsOne: (definition?: Object) => PropertyDecorator;
                          • Decorator for embedsOne

                            Parameter definition

                            Returns

                            A property decorator

                          function ensurePromise

                          ensurePromise: <T>(p: legacy.PromiseOrVoid<T>) => Promise<T>;
                          • Ensure the value is a promise

                            Parameter p

                            Promise or void

                          function findByForeignKeys

                          findByForeignKeys: <
                          Target extends Entity,
                          TargetRelations extends object,
                          ForeignKey extends Extract<keyof Target, string>
                          >(
                          targetRepository: EntityCrudRepository<Target, unknown, TargetRelations>,
                          fkName: ForeignKey,
                          fkValues: Target[ForeignKey][] | Target[ForeignKey],
                          scope?: Filter<Target> & { totalLimit?: number },
                          options?: Options
                          ) => Promise<(Target & TargetRelations)[]>;
                          • Finds model instances that contain any of the provided foreign key values.

                            Parameter targetRepository

                            The target repository where the related model instances are found

                            Parameter fkName

                            Name of the foreign key

                            Parameter fkValues

                            One value or array of values of the foreign key to be included

                            Parameter scope

                            Additional scope constraints

                            Parameter options

                            Options for the operations

                          function flattenMapByKeys

                          flattenMapByKeys: <T>(
                          sourceIds: unknown[],
                          targetMap: Map<unknown, T>
                          ) => (T | undefined)[];
                          • Returns an array of instances from the target map. The order of arrays is based on the order of sourceIds

                            Parameter sourceIds

                            One value or array of values (of the target key)

                            Parameter targetMap

                            a map that matches sourceIds with instances

                          function flattenTargetsOfOneToManyRelation

                          flattenTargetsOfOneToManyRelation: <Target extends Entity>(
                          sourceIds: unknown[],
                          targetEntities: Target[],
                          targetKey: StringKeyOf<Target>
                          ) => (Target[] | undefined)[];
                          • Returns an array of instances. The order of arrays is based on as a result of one to many relation. The order of arrays is based on the order of sourceIds

                            Parameter sourceIds

                            One value or array of values of the target key

                            Parameter targetEntities

                            target entities that satisfy targetKey's value (ids).

                            Parameter targetKey

                            name of the target key

                          function flattenTargetsOfOneToOneRelation

                          flattenTargetsOfOneToOneRelation: <Target extends Entity>(
                          sourceIds: unknown[],
                          targetEntities: Target[],
                          targetKey: StringKeyOf<Target>
                          ) => (Target | undefined)[];
                          • Returns an array of instances. The order of arrays is based on the order of sourceIds

                            Parameter sourceIds

                            One value or array of values of the target key

                            Parameter targetEntities

                            target entities that satisfy targetKey's value (ids).

                            Parameter targetKey

                            name of the target key

                          function getKeyValue

                          getKeyValue: (model: AnyObject, keyName: string) => unknown;
                          • Returns value of a keyName. Aims to resolve ObjectId problem of Mongo.

                            Parameter model

                            target model

                            Parameter keyName

                            target key that gets the value from

                          function getModelRelations

                          getModelRelations: (modelCtor: typeof Model) => RelationDefinitionMap;
                          • Get metadata of all relations defined on a given model class.

                            Parameter modelCtor

                            The model class (the constructor function).

                            Returns

                            A map of relation definitions

                          function hasMany

                          hasMany: <T extends Entity>(
                          targetResolver: EntityResolver<T>,
                          definition?: Partial<HasManyDefinition>
                          ) => (decoratedTarget: object, key: string) => void;
                          • Decorator for hasMany Calls property.array decorator underneath the hood and infers foreign key name from target model name unless explicitly specified

                            Parameter targetResolver

                            Target model for hasMany relation

                            Parameter definition

                            Optional metadata for setting up hasMany relation

                            Returns

                            A property decorator

                          function hasOne

                          hasOne: <T extends Entity>(
                          targetResolver: EntityResolver<T>,
                          definition?: Partial<HasOneDefinition>
                          ) => (decoratedTarget: object, key: string) => void;

                            function includeFieldIfNot

                            includeFieldIfNot: <MT>(
                            fields: Fields<MT> | undefined,
                            fieldToInclude: Extract<keyof MT, string>
                            ) => false | Fields<MT>;

                              function includeRelatedModels

                              includeRelatedModels: <T extends Entity, Relations extends object = {}>(
                              targetRepository: EntityCrudRepository<T, unknown, Relations>,
                              entities: T[],
                              include?: InclusionFilter[],
                              options?: Options
                              ) => Promise<(T & Relations)[]>;
                              • Returns model instances that include related models that have a registered resolver.

                                Parameter targetRepository

                                The target repository where the model instances are found

                                Parameter entities

                                An array of entity instances or data

                                Parameter include

                                Inclusion filter

                                Parameter options

                                Options for the operations

                              function isBsonType

                              isBsonType: (value: unknown) => value is object;
                              • Checks if the value is BsonType (mongodb) It uses a general way to check the type ,so that it can detect different versions of bson that might be used in the code base. Might need to update in the future.

                                Parameter value

                              function isBuiltinType

                              isBuiltinType: (fn: Function) => boolean;
                              • Check if the provided function is a built-in type provided by JavaScript and/or Node.js. E.g. Number, Array, Buffer, etc.

                              function isEntityNotFoundError

                              isEntityNotFoundError: (e: any) => e is EntityNotFoundError<any, {}>;

                                function isInvalidBodyError

                                isInvalidBodyError: (e: any) => e is InvalidBodyError<any, {}>;

                                  function isInvalidPolymorphismError

                                  isInvalidPolymorphismError: (e: any) => e is InvalidPolymorphismError<any>;

                                    function isInvalidRelationError

                                    isInvalidRelationError: (e: any) => e is InvalidRelationError<any>;

                                      function isTypeResolver

                                      isTypeResolver: <T extends object>(fn: any) => fn is TypeResolver<T, Function>;
                                      • A function that checks whether a function is a TypeResolver or not.

                                        Parameter fn

                                        The value to check.

                                      function model

                                      model: (
                                      definition?: Partial<ModelDefinitionSyntax>
                                      ) => (target: Function & { definition?: ModelDefinition }) => void;
                                      • Decorator for model definitions

                                        Parameter definition

                                        Returns

                                        A class decorator for model

                                      function normalizeKey

                                      normalizeKey: (rawKey: unknown) => unknown;
                                      • Workaround for MongoDB, where the connector returns ObjectID values even for properties configured with "type: string".

                                        Parameter rawKey

                                      function Null

                                      Null: () => null;
                                      • A boxed type for null

                                      function property

                                      property: typeof property;
                                      • Decorator for model properties

                                        Parameter definition

                                        Returns

                                        A property decorator

                                      function reduceAsArray

                                      reduceAsArray: <T>(acc: T[] | undefined, it: T) => T[];
                                      • Returns an array of instances. For HasMany relation usage.

                                        Parameter acc

                                        Parameter it

                                      function reduceAsSingleItem

                                      reduceAsSingleItem: <T>(_acc: T | undefined, it: T) => T;
                                      • Returns a single of an instance. For HasOne and BelongsTo relation usage.

                                        Parameter _acc

                                        Parameter it

                                      function referencesMany

                                      referencesMany: <T extends Entity>(
                                      targetResolver: EntityResolver<T>,
                                      definition?: Partial<ReferencesManyDefinition>,
                                      propertyDefinition?: Partial<PropertyDefinition>
                                      ) => (decoratedTarget: Entity, decoratedKey: string) => void;
                                      • Decorator for referencesMany

                                        Parameter targetResolver

                                        A resolver function that returns the target model for a referencesMany relation

                                        Parameter definition

                                        Optional metadata for setting up a referencesMany relation

                                        Parameter propertyDefinition

                                        Optional metadata for setting up the property

                                        Returns

                                        A property decorator

                                      function referencesOne

                                      referencesOne: (definition?: Object) => PropertyDecorator;
                                      • Decorator for referencesOne

                                        Parameter definition

                                        Returns

                                        A property decorator

                                      function rejectNavigationalPropertiesInData

                                      rejectNavigationalPropertiesInData: <M extends typeof Entity>(
                                      modelClass: M,
                                      data: DataObject<PrototypeOf<M>>
                                      ) => void;
                                      • Check model data for navigational properties linking to related models. Throw a descriptive error if any such property is found.

                                        Parameter modelClass

                                        Model constructor, e.g. Product.

                                        Parameter entityData

                                        Model instance or a plain-data object, e.g. {name: 'pen'}.

                                      function relation

                                      relation: (definition?: Object) => PropertyDecorator;
                                      • Decorator for relations

                                        Parameter definition

                                        Returns

                                        A property decorator

                                      function repository

                                      repository: typeof repository;
                                      • Decorator for repository injections on properties or method arguments

                                        Parameter repositoryName

                                        Name of the repo

                                        Example 1

                                        class CustomerController {
                                        @repository(CustomerRepository) public custRepo: CustomerRepository;
                                        constructor(
                                        @repository(ProductRepository) public prodRepo: ProductRepository,
                                        ) {}
                                        // ...
                                        }

                                      • Decorator for DefaultCrudRepository generation and injection on properties or method arguments based on the given model and dataSource (or their names)

                                        Parameter model

                                        Name/class of the model

                                        Parameter dataSource

                                        Name/instance of the dataSource

                                        Example 1

                                        class CustomerController {
                                        @repository('Customer', 'mySqlDataSource')
                                        public custRepo: DefaultCrudRepository<
                                        Customer,
                                        typeof Customer.prototype.id
                                        >;
                                        constructor(
                                        @repository(Product, mySqlDataSource)
                                        public prodRepo: DefaultCrudRepository<
                                        Product,
                                        typeof Product.prototype.id
                                        >,
                                        ) {}
                                        // ...
                                        }

                                      function RepositoryMixin

                                      RepositoryMixin: <T extends MixinTarget<Application>>(
                                      superClass: T
                                      ) => (new (...args: any[]) => {
                                      repository<R extends Repository<any>>(
                                      repoClass: Class<R>,
                                      nameOrOptions?: string | BindingFromClassOptions
                                      ): Binding<R>;
                                      getRepository<R_1 extends Repository<any>>(repo: Class<R_1>): Promise<R_1>;
                                      dataSource<D extends juggler.DataSource>(
                                      dataSource: D | Class<D>,
                                      nameOrOptions?: string | BindingFromClassOptions
                                      ): Binding<D>;
                                      model<M extends Class<unknown>>(modelClass: M): Binding<M>;
                                      component<C extends Component = Component>(
                                      componentCtor: Constructor<C>,
                                      nameOrOptions?: string | BindingFromClassOptions
                                      ): Binding<C>;
                                      mountComponentRepositories(
                                      componentInstanceOrClass: Class<unknown> | RepositoryComponent
                                      ): void;
                                      mountComponentModels(component: RepositoryComponent): void;
                                      migrateSchema(options?: SchemaMigrationOptions): Promise<void>;
                                      readonly options: any;
                                      readonly state: string;
                                      controller: <T>(
                                      controllerCtor: any,
                                      nameOrOptions?: string | BindingFromClassOptions | undefined
                                      ) => Binding<T>;
                                      server: <T_1 extends any>(
                                      ctor: Constructor<T_1>,
                                      nameOrOptions?: string | BindingFromClassOptions | undefined
                                      ) => Binding<T_1>;
                                      servers: <T_2 extends any>(ctors: Constructor<T_2>[]) => Binding<any>[];
                                      getServer: <T_3 extends any>(target: any) => Promise<T_3>;
                                      init: () => Promise<void>;
                                      onInit: (
                                      fn: () => import('@loopback/core').ValueOrPromise<void>
                                      ) => Binding<any>;
                                      start: () => Promise<void>;
                                      onStart: (
                                      fn: () => import('@loopback/core').ValueOrPromise<void>
                                      ) => Binding<any>;
                                      stop: () => Promise<void>;
                                      onStop: (
                                      fn: () => import('@loopback/core').ValueOrPromise<void>
                                      ) => Binding<any>;
                                      setMetadata: (metadata: any) => void;
                                      lifeCycleObserver: <T_4 extends any>(
                                      ctor: Constructor<T_4>,
                                      nameOrOptions?: string | BindingFromClassOptions | undefined
                                      ) => Binding<T_4>;
                                      service: <S>(
                                      cls: any,
                                      nameOrOptions?: string | import('@loopback/core').ServiceOptions | undefined
                                      ) => Binding<S>;
                                      interceptor: (
                                      interceptor:
                                      | import('@loopback/core').Interceptor
                                      | Constructor<
                                      import('@loopback/core').Provider<
                                      import('@loopback/core').Interceptor
                                      >
                                      >,
                                      nameOrOptions?:
                                      | string
                                      | import('@loopback/core').InterceptorBindingOptions
                                      | undefined
                                      ) => Binding<any>;
                                      readonly name: string;
                                      readonly subscriptionManager: any;
                                      scope: BindingScope;
                                      readonly parent: import('@loopback/core').Context | undefined;
                                      emitEvent: <T_5 extends any>(type: string, event: T_5) => void;
                                      emitError: (err: unknown) => void;
                                      bind: <ValueType = any>(key: any) => Binding<ValueType>;
                                      add: (binding: Binding<unknown>) => Application;
                                      configure: <ConfigValueType = any>(
                                      key?: import('@loopback/core').BindingAddress | undefined
                                      ) => Binding<ConfigValueType>;
                                      getConfigAsValueOrPromise: <ConfigValueType_1>(
                                      key: any,
                                      propertyPath?: string | undefined,
                                      resolutionOptions?: import('@loopback/core').ResolutionOptions | undefined
                                      ) => any;
                                      getConfig: <ConfigValueType_2>(
                                      key: any,
                                      propertyPath?: string | undefined,
                                      resolutionOptions?: import('@loopback/core').ResolutionOptions | undefined
                                      ) => Promise<ConfigValueType_2>;
                                      getConfigSync: <ConfigValueType_3>(
                                      key: any,
                                      propertyPath?: string | undefined,
                                      resolutionOptions?: import('@loopback/core').ResolutionOptions | undefined
                                      ) => ConfigValueType_3;
                                      unbind: (key: any) => boolean;
                                      subscribe: (observer: any) => any;
                                      unsubscribe: (observer: any) => boolean;
                                      close: () => void;
                                      isSubscribed: (observer: any) => boolean;
                                      createView: <T_6 = unknown>(
                                      filter: any,
                                      comparator?: import('@loopback/core').BindingComparator | undefined,
                                      options?:
                                      | Omit<import('@loopback/core').ResolutionOptions, 'session'>
                                      | undefined
                                      ) => any;
                                      contains: (key: any) => boolean;
                                      isBound: (key: any) => boolean;
                                      getOwnerContext: (
                                      keyOrBinding:
                                      | import('@loopback/core').BindingAddress
                                      | Readonly<Binding<unknown>>
                                      ) => import('@loopback/core').Context | undefined;
                                      getScopedContext: (
                                      scope: BindingScope.APPLICATION | BindingScope.SERVER | BindingScope.REQUEST
                                      ) => import('@loopback/core').Context | undefined;
                                      getResolutionContext: (
                                      binding: Binding<unknown>
                                      ) => import('@loopback/core').Context | undefined;
                                      isVisibleTo: (ctx: any) => boolean;
                                      find: <ValueType_1 = any>(
                                      pattern?:
                                      | string
                                      | RegExp
                                      | import('@loopback/core').BindingFilter
                                      | undefined
                                      ) => Binding<ValueType_1>[];
                                      findByTag: <ValueType_2 = any>(
                                      tagFilter: RegExp | import('@loopback/core').BindingTag
                                      ) => Binding<ValueType_2>[];
                                      get: {
                                      <ValueType_3>(
                                      keyWithPath: any,
                                      session?: import('@loopback/core').ResolutionSession | undefined
                                      ): Promise<ValueType_3>;
                                      <ValueType_4>(keyWithPath: any, options: any): Promise<ValueType_4>;
                                      };
                                      getSync: {
                                      <ValueType_5>(
                                      keyWithPath: any,
                                      session?: import('@loopback/core').ResolutionSession | undefined
                                      ): ValueType_5;
                                      <ValueType_6>(
                                      keyWithPath: any,
                                      options?: import('@loopback/core').ResolutionOptions | undefined
                                      ): ValueType_6;
                                      };
                                      getBinding: {
                                      <ValueType_7 = any>(key: any): Binding<ValueType_7>;
                                      <ValueType_8>(
                                      key: any,
                                      options?: { optional?: boolean | undefined } | undefined
                                      ): any;
                                      };
                                      findOrCreateBinding: <T_7>(
                                      key: any,
                                      policy?: import('@loopback/core').BindingCreationPolicy | undefined
                                      ) => Binding<T_7>;
                                      getValueOrPromise: <ValueType_9>(
                                      keyWithPath: any,
                                      optionsOrSession?:
                                      | import('@loopback/core').ResolutionOptionsOrSession
                                      | undefined
                                      ) => any;
                                      toJSON: () => import('@loopback/core').JSONObject;
                                      inspect: (
                                      options?: import('@loopback/core').ContextInspectOptions | undefined
                                      ) => any;
                                      on: {
                                      (eventName: 'bind' | 'unbind', listener: any): Application;
                                      (event: string | symbol, listener: (...args: any[]) => void): Application;
                                      };
                                      once: {
                                      (eventName: 'bind' | 'unbind', listener: any): Application;
                                      (event: string | symbol, listener: (...args: any[]) => void): Application;
                                      };
                                      addListener: <K_1>(
                                      eventName: string | symbol,
                                      listener: (...args: any[]) => void
                                      ) => Application;
                                      removeListener: <K_2>(
                                      eventName: string | symbol,
                                      listener: (...args: any[]) => void
                                      ) => Application;
                                      off: <K_3>(
                                      eventName: string | symbol,
                                      listener: (...args: any[]) => void
                                      ) => Application;
                                      removeAllListeners: (event?: string | symbol | undefined) => Application;
                                      setMaxListeners: (n: number) => Application;
                                      getMaxListeners: () => number;
                                      listeners: <K_4>(eventName: string | symbol) => Function[];
                                      rawListeners: <K_5>(eventName: string | symbol) => Function[];
                                      emit: <K_6>(eventName: string | symbol, ...args: any[]) => boolean;
                                      listenerCount: <K_7>(
                                      eventName: string | symbol,
                                      listener?: Function | undefined
                                      ) => number;
                                      prependListener: <K_8>(
                                      eventName: string | symbol,
                                      listener: (...args: any[]) => void
                                      ) => Application;
                                      prependOnceListener: <K_9>(
                                      eventName: string | symbol,
                                      listener: (...args: any[]) => void
                                      ) => Application;
                                      eventNames: () => (string | symbol)[];
                                      }) &
                                      T;
                                      • A mixin class for Application that creates a .repository() function to register a repository automatically. Also overrides component function to allow it to register repositories automatically.

                                        Parameter superClass

                                        Application class

                                        Returns

                                        A new class that extends the super class with repository related methods

                                        Example 1

                                        class MyApplication extends RepositoryMixin(Application) {}

                                        Please note: the members in the mixin function are documented in a dummy class called RepositoryMixinDoc

                                      function resolveType

                                      resolveType: {
                                      <T extends object>(fn: TypeResolver<T, {}> | Class<T> | Function): Class<T>;
                                      <T>(fn: NonFunction<T>): T;
                                      };
                                      • Resolve a type value that may have been provided via TypeResolver.

                                        Parameter fn

                                        A type class or a type provider.

                                        Returns

                                        The resolved type.

                                      Classes

                                      class AnyType

                                      class AnyType implements Type<any> {}
                                      • Any type

                                      property name

                                      readonly name: string;

                                        method coerce

                                        coerce: (value: any) => any;

                                          method defaultValue

                                          defaultValue: () => any;

                                            method isCoercible

                                            isCoercible: (value: any) => boolean;

                                              method isInstance

                                              isInstance: (value: any) => boolean;

                                                method serialize

                                                serialize: (value: any) => any;

                                                  class ArrayType

                                                  class ArrayType<T> implements Type<T[]> {}
                                                  • Array type, such as string[]

                                                  constructor

                                                  constructor(itemType: Type<T>);

                                                    property itemType

                                                    itemType: Type<T>;

                                                      property name

                                                      readonly name: string;

                                                        method coerce

                                                        coerce: (value: any) => any;

                                                          method defaultValue

                                                          defaultValue: () => T[];

                                                            method isCoercible

                                                            isCoercible: (value: any) => boolean;

                                                              method isInstance

                                                              isInstance: (value: any) => boolean;

                                                                method serialize

                                                                serialize: (value: T[] | null | undefined) => any[] | null | undefined;

                                                                  class BooleanType

                                                                  class BooleanType implements Type<boolean> {}
                                                                  • Boolean type

                                                                  property name

                                                                  readonly name: string;

                                                                    method coerce

                                                                    coerce: (value: any) => any;

                                                                      method defaultValue

                                                                      defaultValue: () => boolean;

                                                                        method isCoercible

                                                                        isCoercible: (value: any) => boolean;

                                                                          method isInstance

                                                                          isInstance: (value: any) => boolean;

                                                                            method serialize

                                                                            serialize: (value: boolean | null | undefined) => boolean | null | undefined;

                                                                              class BufferType

                                                                              class BufferType implements Type<Buffer> {}
                                                                              • Buffer (binary) type

                                                                              property name

                                                                              readonly name: string;

                                                                                method coerce

                                                                                coerce: (value: any, options?: Options) => any;

                                                                                  method defaultValue

                                                                                  defaultValue: () => Buffer;

                                                                                    method isCoercible

                                                                                    isCoercible: (value: any) => boolean;

                                                                                      method isInstance

                                                                                      isInstance: (value: any) => boolean;

                                                                                        method serialize

                                                                                        serialize: (
                                                                                        value: Buffer | null | undefined,
                                                                                        options?: Options
                                                                                        ) => string | null | undefined;

                                                                                          class CrudRepositoryImpl

                                                                                          class CrudRepositoryImpl<T extends Entity, ID>
                                                                                          implements EntityCrudRepository<T, ID> {}
                                                                                          • Repository implementation

                                                                                            Example 1

                                                                                            User can import CrudRepositoryImpl and call its functions like: CrudRepositoryImpl.find(somefilters, someoptions)

                                                                                            Or extend class CrudRepositoryImpl and override its functions:

                                                                                            export class TestRepository extends CrudRepositoryImpl<Test> {
                                                                                            constructor(dataSource: DataSource, model: Test) {
                                                                                            super(dataSource, Customer);
                                                                                            }
                                                                                            // Override `deleteAll` to disable the operation
                                                                                            deleteAll(where?: Where, options?: Options) {
                                                                                            return Promise.reject(new Error('deleteAll is disabled'));
                                                                                            }
                                                                                            }

                                                                                          constructor

                                                                                          constructor(
                                                                                          dataSource: DataSource,
                                                                                          entityClass: typeof Entity & { prototype: T }
                                                                                          );

                                                                                            property dataSource

                                                                                            dataSource: DataSource;

                                                                                              property entityClass

                                                                                              entityClass: typeof Entity & { prototype: T };

                                                                                                property inclusionResolvers

                                                                                                readonly inclusionResolvers: Map<string, InclusionResolver<T, Entity>>;

                                                                                                  method count

                                                                                                  count: (where?: Where<T>, options?: Options) => Promise<Count>;

                                                                                                    method create

                                                                                                    create: (entity: DataObject<T>, options?: Options) => Promise<T>;

                                                                                                      method createAll

                                                                                                      createAll: (entities: DataObject<T>[], options?: Options) => Promise<T[]>;

                                                                                                        method delete

                                                                                                        delete: (entity: DataObject<T>, options?: Options) => Promise<void>;

                                                                                                          method deleteAll

                                                                                                          deleteAll: (where?: Where<T>, options?: Options) => Promise<Count>;

                                                                                                            method deleteById

                                                                                                            deleteById: (id: ID, options?: Options) => Promise<void>;

                                                                                                              method execute

                                                                                                              execute: (
                                                                                                              command: Command,
                                                                                                              parameters: NamedParameters | PositionalParameters,
                                                                                                              options?: Options
                                                                                                              ) => Promise<AnyObject>;

                                                                                                                method exists

                                                                                                                exists: (id: ID, options?: Options) => Promise<boolean>;

                                                                                                                  method find

                                                                                                                  find: (filter?: Filter<T>, options?: Options) => Promise<T[]>;

                                                                                                                    method findById

                                                                                                                    findById: (
                                                                                                                    id: ID,
                                                                                                                    filter?: FilterExcludingWhere<T>,
                                                                                                                    options?: Options
                                                                                                                    ) => Promise<T>;

                                                                                                                      method replaceById

                                                                                                                      replaceById: (id: ID, data: DataObject<T>, options?: Options) => Promise<void>;

                                                                                                                        method save

                                                                                                                        save: (entity: DataObject<T>, options?: Options) => Promise<T>;

                                                                                                                          method update

                                                                                                                          update: (entity: DataObject<T>, options?: Options) => Promise<void>;

                                                                                                                            method updateAll

                                                                                                                            updateAll: (
                                                                                                                            data: DataObject<T>,
                                                                                                                            where?: Where<T>,
                                                                                                                            options?: Options
                                                                                                                            ) => Promise<Count>;

                                                                                                                              method updateById

                                                                                                                              updateById: (id: ID, data: DataObject<T>, options?: Options) => Promise<void>;

                                                                                                                                class DateType

                                                                                                                                class DateType implements Type<Date> {}
                                                                                                                                • Date type

                                                                                                                                property name

                                                                                                                                readonly name: string;

                                                                                                                                  method coerce

                                                                                                                                  coerce: (value: any) => any;

                                                                                                                                    method defaultValue

                                                                                                                                    defaultValue: () => Date;

                                                                                                                                      method isCoercible

                                                                                                                                      isCoercible: (value: any) => boolean;

                                                                                                                                        method isInstance

                                                                                                                                        isInstance: (value: any) => boolean;

                                                                                                                                          method serialize

                                                                                                                                          serialize: (value: Date | null | undefined) => string | null | undefined;

                                                                                                                                            class DefaultBelongsToRepository

                                                                                                                                            class DefaultBelongsToRepository<
                                                                                                                                            TargetEntity extends Entity,
                                                                                                                                            TargetId,
                                                                                                                                            TargetRepository extends EntityCrudRepository<TargetEntity, TargetId>
                                                                                                                                            > implements BelongsToRepository<TargetEntity> {}

                                                                                                                                              constructor

                                                                                                                                              constructor(
                                                                                                                                              getTargetRepository: any,
                                                                                                                                              constraint: DataObject<TargetEntity>,
                                                                                                                                              targetResolver: TypeResolver<Entity, typeof Entity>
                                                                                                                                              );
                                                                                                                                              • Constructor of DefaultBelongsToEntityCrudRepository

                                                                                                                                                Parameter getTargetRepository

                                                                                                                                                either a dictionary of target model type - target repository instance or a single target repository instance e.g. if the target is of a non-polymorphic type "Student", put the studentRepositoryGetterInstance if the target is of a polymorphic type "Person" which can be either a "Student" or a "Teacher" then put "{Student: studentRepositoryGetterInstance, Teacher: teacherRepositoryGetterInstance}"

                                                                                                                                                Parameter constraint

                                                                                                                                                the key value pair representing foreign key name to constrain the target repository instance

                                                                                                                                                Parameter targetResolver

                                                                                                                                                () => Target to resolve the target class e.g. if the target is of type "Student", then put "() => Student"

                                                                                                                                              property constraint

                                                                                                                                              constraint: DataObject<TargetEntity>;

                                                                                                                                                property getTargetRepository

                                                                                                                                                getTargetRepository: any;

                                                                                                                                                  property getTargetRepositoryDict

                                                                                                                                                  getTargetRepositoryDict: { [repoType: string]: Getter<TargetRepository> };

                                                                                                                                                    property targetResolver

                                                                                                                                                    targetResolver: TypeResolver<Entity, typeof Entity>;

                                                                                                                                                      method get

                                                                                                                                                      get: (
                                                                                                                                                      options?: Options & { polymorphicType?: string | string[] }
                                                                                                                                                      ) => Promise<TargetEntity>;

                                                                                                                                                        class DefaultCrudRepository

                                                                                                                                                        class DefaultCrudRepository<T extends Entity, ID, Relations extends object = {}>
                                                                                                                                                        implements EntityCrudRepository<T, ID, Relations> {}
                                                                                                                                                        • Default implementation of CRUD repository using legacy juggler model and data source

                                                                                                                                                        constructor

                                                                                                                                                        constructor(
                                                                                                                                                        entityClass: typeof Entity & { prototype: T },
                                                                                                                                                        dataSource: juggler.DataSource
                                                                                                                                                        );
                                                                                                                                                        • Constructor of DefaultCrudRepository

                                                                                                                                                          Parameter entityClass

                                                                                                                                                          LoopBack 4 entity class

                                                                                                                                                          Parameter dataSource

                                                                                                                                                          Legacy juggler data source

                                                                                                                                                        property dataSource

                                                                                                                                                        dataSource: juggler.DataSource;

                                                                                                                                                          property entityClass

                                                                                                                                                          entityClass: typeof Entity & { prototype: T };

                                                                                                                                                            property inclusionResolvers

                                                                                                                                                            readonly inclusionResolvers: Map<string, InclusionResolver<T, Entity>>;

                                                                                                                                                              property modelClass

                                                                                                                                                              modelClass: juggler.PersistedModelClass;

                                                                                                                                                                method count

                                                                                                                                                                count: (where?: Where<T>, options?: Options) => Promise<Count>;

                                                                                                                                                                  method create

                                                                                                                                                                  create: (entity: DataObject<T>, options?: Options) => Promise<T>;

                                                                                                                                                                    method createAll

                                                                                                                                                                    createAll: (entities: DataObject<T>[], options?: Options) => Promise<T[]>;

                                                                                                                                                                      method createBelongsToAccessorFor

                                                                                                                                                                      protected createBelongsToAccessorFor: <Target extends Entity, TargetId>(
                                                                                                                                                                      relationName: string,
                                                                                                                                                                      targetRepositoryGetter: any
                                                                                                                                                                      ) => BelongsToAccessor<Target, ID>;
                                                                                                                                                                      • Function to create a belongs to accessor

                                                                                                                                                                        Parameter relationName

                                                                                                                                                                        Name of the relation defined on the source model

                                                                                                                                                                        Parameter targetRepo

                                                                                                                                                                        Target repository instance

                                                                                                                                                                      method createHasManyRepositoryFactoryFor

                                                                                                                                                                      protected createHasManyRepositoryFactoryFor: <
                                                                                                                                                                      Target extends Entity,
                                                                                                                                                                      TargetID,
                                                                                                                                                                      ForeignKeyType
                                                                                                                                                                      >(
                                                                                                                                                                      relationName: string,
                                                                                                                                                                      targetRepositoryGetter: Getter<EntityCrudRepository<Target, TargetID, {}>>
                                                                                                                                                                      ) => HasManyRepositoryFactory<Target, ForeignKeyType>;
                                                                                                                                                                      • Function to create a constrained relation repository factory

                                                                                                                                                                        Parameter relationName

                                                                                                                                                                        Name of the relation defined on the source model

                                                                                                                                                                        Parameter targetRepo

                                                                                                                                                                        Target repository instance

                                                                                                                                                                        Example 1

                                                                                                                                                                        class CustomerRepository extends DefaultCrudRepository<
                                                                                                                                                                        Customer,
                                                                                                                                                                        typeof Customer.prototype.id,
                                                                                                                                                                        CustomerRelations
                                                                                                                                                                        > {
                                                                                                                                                                        public readonly orders: HasManyRepositoryFactory<Order, typeof Customer.prototype.id>;
                                                                                                                                                                        constructor(
                                                                                                                                                                        protected db: juggler.DataSource,
                                                                                                                                                                        orderRepository: EntityCrudRepository<Order, typeof Order.prototype.id>,
                                                                                                                                                                        ) {
                                                                                                                                                                        super(Customer, db);
                                                                                                                                                                        this.orders = this._createHasManyRepositoryFactoryFor(
                                                                                                                                                                        'orders',
                                                                                                                                                                        orderRepository,
                                                                                                                                                                        );
                                                                                                                                                                        }
                                                                                                                                                                        }

                                                                                                                                                                      method createHasManyThroughRepositoryFactoryFor

                                                                                                                                                                      protected createHasManyThroughRepositoryFactoryFor: <
                                                                                                                                                                      Target extends Entity,
                                                                                                                                                                      TargetID,
                                                                                                                                                                      Through extends Entity,
                                                                                                                                                                      ThroughID,
                                                                                                                                                                      ForeignKeyType
                                                                                                                                                                      >(
                                                                                                                                                                      relationName: string,
                                                                                                                                                                      targetRepositoryGetter: any,
                                                                                                                                                                      throughRepositoryGetter: Getter<EntityCrudRepository<Through, ThroughID, {}>>
                                                                                                                                                                      ) => HasManyThroughRepositoryFactory<Target, TargetID, Through, ForeignKeyType>;
                                                                                                                                                                      • Function to create a constrained hasManyThrough relation repository factory

                                                                                                                                                                        Parameter relationName

                                                                                                                                                                        Name of the relation defined on the source model

                                                                                                                                                                        Parameter targetRepo

                                                                                                                                                                        Target repository instance

                                                                                                                                                                        Parameter throughRepo

                                                                                                                                                                        Through repository instance

                                                                                                                                                                        Example 1

                                                                                                                                                                        class CustomerRepository extends DefaultCrudRepository<
                                                                                                                                                                        Customer,
                                                                                                                                                                        typeof Customer.prototype.id,
                                                                                                                                                                        CustomerRelations
                                                                                                                                                                        > {
                                                                                                                                                                        public readonly cartItems: HasManyRepositoryFactory<CartItem, typeof Customer.prototype.id>;
                                                                                                                                                                        constructor(
                                                                                                                                                                        protected db: juggler.DataSource,
                                                                                                                                                                        cartItemRepository: EntityCrudRepository<CartItem, typeof, CartItem.prototype.id>,
                                                                                                                                                                        throughRepository: EntityCrudRepository<Through, typeof Through.prototype.id>,
                                                                                                                                                                        ) {
                                                                                                                                                                        super(Customer, db);
                                                                                                                                                                        this.cartItems = this.createHasManyThroughRepositoryFactoryFor(
                                                                                                                                                                        'cartItems',
                                                                                                                                                                        cartItemRepository,
                                                                                                                                                                        );
                                                                                                                                                                        }
                                                                                                                                                                        }

                                                                                                                                                                      method createHasOneRepositoryFactoryFor

                                                                                                                                                                      protected createHasOneRepositoryFactoryFor: <
                                                                                                                                                                      Target extends Entity,
                                                                                                                                                                      TargetID,
                                                                                                                                                                      ForeignKeyType
                                                                                                                                                                      >(
                                                                                                                                                                      relationName: string,
                                                                                                                                                                      targetRepositoryGetter: any
                                                                                                                                                                      ) => HasOneRepositoryFactory<Target, ForeignKeyType>;
                                                                                                                                                                      • Function to create a constrained hasOne relation repository factory

                                                                                                                                                                        Parameter relationName

                                                                                                                                                                        Name of the relation defined on the source model

                                                                                                                                                                        Parameter targetRepo

                                                                                                                                                                        Target repository instance

                                                                                                                                                                      method createReferencesManyAccessorFor

                                                                                                                                                                      protected createReferencesManyAccessorFor: <Target extends Entity, TargetId>(
                                                                                                                                                                      relationName: string,
                                                                                                                                                                      targetRepoGetter: Getter<EntityCrudRepository<Target, TargetId, {}>>
                                                                                                                                                                      ) => ReferencesManyAccessor<Target, ID>;
                                                                                                                                                                      • Function to create a references many accessor

                                                                                                                                                                        Parameter relationName

                                                                                                                                                                        Name of the relation defined on the source model

                                                                                                                                                                        Parameter targetRepo

                                                                                                                                                                        Target repository instance

                                                                                                                                                                      method definePersistedModel

                                                                                                                                                                      protected definePersistedModel: (entityClass: typeof Model) => any;
                                                                                                                                                                      • Creates a legacy persisted model class, attaches it to the datasource and returns it. This method can be overridden in sub-classes to acess methods and properties in the generated model class.

                                                                                                                                                                        Parameter entityClass

                                                                                                                                                                        LB4 Entity constructor

                                                                                                                                                                      method delete

                                                                                                                                                                      delete: (entity: T, options?: Options) => Promise<void>;

                                                                                                                                                                        method deleteAll

                                                                                                                                                                        deleteAll: (where?: Where<T>, options?: Options) => Promise<Count>;

                                                                                                                                                                          method deleteById

                                                                                                                                                                          deleteById: (id: ID, options?: Options) => Promise<void>;

                                                                                                                                                                            method ensurePersistable

                                                                                                                                                                            protected ensurePersistable: <R extends T>(
                                                                                                                                                                            entity: R | DataObject<R>,
                                                                                                                                                                            options?: {}
                                                                                                                                                                            ) => legacy.ModelData<legacy.PersistedModel>;
                                                                                                                                                                            • Converts an entity object to a JSON object to check if it contains navigational property. Throws an error if entity contains navigational property.

                                                                                                                                                                              Parameter entity

                                                                                                                                                                              The entity passed from CRUD operations' caller.

                                                                                                                                                                              Parameter options

                                                                                                                                                                            method entityToData

                                                                                                                                                                            protected entityToData: <R extends T>(
                                                                                                                                                                            entity: R | DataObject<R>,
                                                                                                                                                                            options?: {}
                                                                                                                                                                            ) => Promise<legacy.ModelData<legacy.PersistedModel>>;
                                                                                                                                                                            • This function works as a persist hook. It converts an entity from the CRUD operations' caller to a persistable data that can will be stored in the back-end database.

                                                                                                                                                                              User can extend DefaultCrudRepository then override this function to execute custom persist hook.

                                                                                                                                                                              Parameter entity

                                                                                                                                                                              The entity passed from CRUD operations' caller.

                                                                                                                                                                              Parameter options

                                                                                                                                                                            method execute

                                                                                                                                                                            execute: {
                                                                                                                                                                            (
                                                                                                                                                                            command: Command,
                                                                                                                                                                            parameters: NamedParameters | PositionalParameters,
                                                                                                                                                                            options?: Options
                                                                                                                                                                            ): Promise<AnyObject>;
                                                                                                                                                                            (
                                                                                                                                                                            collectionName: string,
                                                                                                                                                                            command: string,
                                                                                                                                                                            ...parameters: PositionalParameters
                                                                                                                                                                            ): Promise<AnyObject>;
                                                                                                                                                                            (...args: PositionalParameters): Promise<AnyObject>;
                                                                                                                                                                            };
                                                                                                                                                                            • Execute a SQL command.

                                                                                                                                                                              **WARNING:** In general, it is always better to perform database actions through repository methods. Directly executing SQL may lead to unexpected results, corrupted data, security vulnerabilities and other issues.

                                                                                                                                                                              Parameter command

                                                                                                                                                                              A parameterized SQL command or query. Check your database documentation for information on which characters to use as parameter placeholders.

                                                                                                                                                                              Parameter parameters

                                                                                                                                                                              List of parameter values to use.

                                                                                                                                                                              Parameter options

                                                                                                                                                                              Additional options, for example transaction.

                                                                                                                                                                              Returns

                                                                                                                                                                              A promise which resolves to the command output as returned by the database driver. The output type (data structure) is database specific and often depends on the command executed.

                                                                                                                                                                              Example 1

                                                                                                                                                                              // MySQL
                                                                                                                                                                              const result = await repo.execute(
                                                                                                                                                                              'SELECT * FROM Products WHERE size > ?',
                                                                                                                                                                              [42]
                                                                                                                                                                              );
                                                                                                                                                                              // PostgreSQL
                                                                                                                                                                              const result = await repo.execute(
                                                                                                                                                                              'SELECT * FROM Products WHERE size > $1',
                                                                                                                                                                              [42]
                                                                                                                                                                              );

                                                                                                                                                                            • Execute a MongoDB command.

                                                                                                                                                                              **WARNING:** In general, it is always better to perform database actions through repository methods. Directly executing MongoDB commands may lead to unexpected results and other issues.

                                                                                                                                                                              Parameter collectionName

                                                                                                                                                                              The name of the collection to execute the command on.

                                                                                                                                                                              Parameter command

                                                                                                                                                                              The command name. See [Collection API docs](http://mongodb.github.io/node-mongodb-native/3.6/api/Collection.html) for the list of commands supported by the MongoDB client.

                                                                                                                                                                              Parameter parameters

                                                                                                                                                                              Command parameters (arguments), as described in MongoDB API docs for individual collection methods.

                                                                                                                                                                              Returns

                                                                                                                                                                              A promise which resolves to the command output as returned by the database driver.

                                                                                                                                                                              Example 1

                                                                                                                                                                              const result = await repo.execute('MyCollection', 'aggregate', [
                                                                                                                                                                              {$lookup: {
                                                                                                                                                                              // ...
                                                                                                                                                                              }},
                                                                                                                                                                              {$unwind: '$data'},
                                                                                                                                                                              {$out: 'tempData'}
                                                                                                                                                                              ]);

                                                                                                                                                                            • Execute a raw database command using a connector that's not described by LoopBack's execute API yet.

                                                                                                                                                                              **WARNING:** In general, it is always better to perform database actions through repository methods. Directly executing database commands may lead to unexpected results and other issues.

                                                                                                                                                                              Parameter args

                                                                                                                                                                              Command and parameters, please consult your connector's documentation to learn about supported commands and their parameters.

                                                                                                                                                                              Returns

                                                                                                                                                                              A promise which resolves to the command output as returned by the database driver.

                                                                                                                                                                            method exists

                                                                                                                                                                            exists: (id: ID, options?: Options) => Promise<boolean>;

                                                                                                                                                                              method find

                                                                                                                                                                              find: (filter?: Filter<T>, options?: Options) => Promise<(T & Relations)[]>;

                                                                                                                                                                                method findById

                                                                                                                                                                                findById: (
                                                                                                                                                                                id: ID,
                                                                                                                                                                                filter?: FilterExcludingWhere<T>,
                                                                                                                                                                                options?: Options
                                                                                                                                                                                ) => Promise<T & Relations>;

                                                                                                                                                                                  method findOne

                                                                                                                                                                                  findOne: (
                                                                                                                                                                                  filter?: Filter<T>,
                                                                                                                                                                                  options?: Options
                                                                                                                                                                                  ) => Promise<(T & Relations) | null>;

                                                                                                                                                                                    method includeRelatedModels

                                                                                                                                                                                    protected includeRelatedModels: (
                                                                                                                                                                                    entities: T[],
                                                                                                                                                                                    include?: InclusionFilter[],
                                                                                                                                                                                    options?: Options
                                                                                                                                                                                    ) => Promise<(T & Relations)[]>;
                                                                                                                                                                                    • Returns model instances that include related models of this repository that have a registered resolver.

                                                                                                                                                                                      Parameter entities

                                                                                                                                                                                      An array of entity instances or data

                                                                                                                                                                                      Parameter include

                                                                                                                                                                                      Inclusion filter

                                                                                                                                                                                      Parameter options

                                                                                                                                                                                      Options for the operations

                                                                                                                                                                                    method normalizeFilter

                                                                                                                                                                                    protected normalizeFilter: (filter?: Filter<T>) => legacy.Filter | undefined;
                                                                                                                                                                                    • Removes juggler's "include" filter as it does not apply to LoopBack 4 relations.

                                                                                                                                                                                      Parameter filter

                                                                                                                                                                                      Query filter

                                                                                                                                                                                    method registerInclusionResolver

                                                                                                                                                                                    registerInclusionResolver: (
                                                                                                                                                                                    relationName: string,
                                                                                                                                                                                    resolver: InclusionResolver<T, Entity>
                                                                                                                                                                                    ) => void;
                                                                                                                                                                                    • Register an inclusion resolver for the related model name.

                                                                                                                                                                                      Parameter relationName

                                                                                                                                                                                      Name of the relation defined on the source model

                                                                                                                                                                                      Parameter resolver

                                                                                                                                                                                      Resolver function for getting related model entities

                                                                                                                                                                                    method replaceById

                                                                                                                                                                                    replaceById: (id: ID, data: DataObject<T>, options?: Options) => Promise<void>;

                                                                                                                                                                                      method save

                                                                                                                                                                                      save: (entity: T, options?: Options) => Promise<T>;

                                                                                                                                                                                        method toEntities

                                                                                                                                                                                        protected toEntities: <R extends T>(models: juggler.PersistedModel[]) => R[];

                                                                                                                                                                                          method toEntity

                                                                                                                                                                                          protected toEntity: <R extends T>(model: juggler.PersistedModel) => R;

                                                                                                                                                                                            method update

                                                                                                                                                                                            update: (entity: T, options?: Options) => Promise<void>;

                                                                                                                                                                                              method updateAll

                                                                                                                                                                                              updateAll: (
                                                                                                                                                                                              data: DataObject<T>,
                                                                                                                                                                                              where?: Where<T>,
                                                                                                                                                                                              options?: Options
                                                                                                                                                                                              ) => Promise<Count>;

                                                                                                                                                                                                method updateById

                                                                                                                                                                                                updateById: (id: ID, data: DataObject<T>, options?: Options) => Promise<void>;

                                                                                                                                                                                                  class DefaultHasManyRepository

                                                                                                                                                                                                  class DefaultHasManyRepository<
                                                                                                                                                                                                  TargetEntity extends Entity,
                                                                                                                                                                                                  TargetID,
                                                                                                                                                                                                  TargetRepository extends EntityCrudRepository<TargetEntity, TargetID>
                                                                                                                                                                                                  > implements HasManyRepository<TargetEntity> {}

                                                                                                                                                                                                    constructor

                                                                                                                                                                                                    constructor(
                                                                                                                                                                                                    getTargetRepository: Getter<TargetRepository>,
                                                                                                                                                                                                    constraint: DataObject<TargetEntity>
                                                                                                                                                                                                    );
                                                                                                                                                                                                    • Constructor of DefaultHasManyEntityCrudRepository

                                                                                                                                                                                                      Parameter getTargetRepository

                                                                                                                                                                                                      the getter of the related target model repository instance

                                                                                                                                                                                                      Parameter constraint

                                                                                                                                                                                                      the key value pair representing foreign key name to constrain the target repository instance

                                                                                                                                                                                                    property constraint

                                                                                                                                                                                                    constraint: DataObject<TargetEntity>;

                                                                                                                                                                                                      property getTargetRepository

                                                                                                                                                                                                      getTargetRepository: Getter<TargetRepository>;

                                                                                                                                                                                                        method create

                                                                                                                                                                                                        create: (
                                                                                                                                                                                                        targetModelData: DataObject<TargetEntity>,
                                                                                                                                                                                                        options?: Options
                                                                                                                                                                                                        ) => Promise<TargetEntity>;

                                                                                                                                                                                                          method delete

                                                                                                                                                                                                          delete: (where?: Where<TargetEntity>, options?: Options) => Promise<Count>;

                                                                                                                                                                                                            method find

                                                                                                                                                                                                            find: (
                                                                                                                                                                                                            filter?: Filter<TargetEntity>,
                                                                                                                                                                                                            options?: Options
                                                                                                                                                                                                            ) => Promise<TargetEntity[]>;

                                                                                                                                                                                                              method patch

                                                                                                                                                                                                              patch: (
                                                                                                                                                                                                              dataObject: DataObject<TargetEntity>,
                                                                                                                                                                                                              where?: Where<TargetEntity>,
                                                                                                                                                                                                              options?: Options
                                                                                                                                                                                                              ) => Promise<Count>;

                                                                                                                                                                                                                class DefaultHasManyThroughRepository

                                                                                                                                                                                                                class DefaultHasManyThroughRepository<
                                                                                                                                                                                                                TargetEntity extends Entity,
                                                                                                                                                                                                                TargetID,
                                                                                                                                                                                                                TargetRepository extends EntityCrudRepository<TargetEntity, TargetID>,
                                                                                                                                                                                                                ThroughEntity extends Entity,
                                                                                                                                                                                                                ThroughID,
                                                                                                                                                                                                                ThroughRepository extends EntityCrudRepository<ThroughEntity, ThroughID>
                                                                                                                                                                                                                > implements HasManyThroughRepository<TargetEntity, TargetID, ThroughEntity> {}
                                                                                                                                                                                                                • a class for CRUD operations for hasManyThrough relation.

                                                                                                                                                                                                                  Warning: The hasManyThrough interface is experimental and is subject to change. If backwards-incompatible changes are made, a new major version may not be released.

                                                                                                                                                                                                                constructor

                                                                                                                                                                                                                constructor(
                                                                                                                                                                                                                getTargetRepository: any,
                                                                                                                                                                                                                getThroughRepository: Getter<ThroughRepository>,
                                                                                                                                                                                                                getTargetConstraintFromThroughModels: (
                                                                                                                                                                                                                throughInstances: ThroughEntity[]
                                                                                                                                                                                                                ) => DataObject<TargetEntity>,
                                                                                                                                                                                                                getTargetKeys: (throughInstances: ThroughEntity[]) => TargetID[],
                                                                                                                                                                                                                getThroughConstraintFromSource: () => DataObject<ThroughEntity>,
                                                                                                                                                                                                                getTargetIds: (targetInstances: TargetEntity[]) => TargetID[],
                                                                                                                                                                                                                getThroughConstraintFromTarget: (
                                                                                                                                                                                                                targetID: TargetID[]
                                                                                                                                                                                                                ) => DataObject<ThroughEntity>,
                                                                                                                                                                                                                targetResolver: TypeResolver<Entity, typeof Entity>,
                                                                                                                                                                                                                throughResolver: TypeResolver<Entity, typeof Entity>
                                                                                                                                                                                                                );

                                                                                                                                                                                                                  property getTargetConstraintFromThroughModels

                                                                                                                                                                                                                  getTargetConstraintFromThroughModels: (
                                                                                                                                                                                                                  throughInstances: ThroughEntity[]
                                                                                                                                                                                                                  ) => DataObject<TargetEntity>;

                                                                                                                                                                                                                    property getTargetIds

                                                                                                                                                                                                                    getTargetIds: (targetInstances: TargetEntity[]) => TargetID[];

                                                                                                                                                                                                                      property getTargetKeys

                                                                                                                                                                                                                      getTargetKeys: (throughInstances: ThroughEntity[]) => TargetID[];

                                                                                                                                                                                                                        property getTargetRepository

                                                                                                                                                                                                                        getTargetRepository: any;

                                                                                                                                                                                                                          property getTargetRepositoryDict

                                                                                                                                                                                                                          getTargetRepositoryDict: { [repoType: string]: Getter<TargetRepository> };

                                                                                                                                                                                                                            property getThroughConstraintFromSource

                                                                                                                                                                                                                            getThroughConstraintFromSource: () => DataObject<ThroughEntity>;

                                                                                                                                                                                                                              property getThroughConstraintFromTarget

                                                                                                                                                                                                                              getThroughConstraintFromTarget: (
                                                                                                                                                                                                                              targetID: TargetID[]
                                                                                                                                                                                                                              ) => DataObject<ThroughEntity>;

                                                                                                                                                                                                                                property getThroughRepository

                                                                                                                                                                                                                                getThroughRepository: Getter<ThroughRepository>;

                                                                                                                                                                                                                                  property targetResolver

                                                                                                                                                                                                                                  targetResolver: TypeResolver<Entity, typeof Entity>;

                                                                                                                                                                                                                                    property throughResolver

                                                                                                                                                                                                                                    throughResolver: TypeResolver<Entity, typeof Entity>;

                                                                                                                                                                                                                                      method create

                                                                                                                                                                                                                                      create: (
                                                                                                                                                                                                                                      targetModelData: DataObject<TargetEntity>,
                                                                                                                                                                                                                                      options?: Options & {
                                                                                                                                                                                                                                      throughData?: DataObject<ThroughEntity>;
                                                                                                                                                                                                                                      throughOptions?: Options;
                                                                                                                                                                                                                                      } & { polymorphicType?: string }
                                                                                                                                                                                                                                      ) => Promise<TargetEntity>;

                                                                                                                                                                                                                                        method delete

                                                                                                                                                                                                                                        delete: (
                                                                                                                                                                                                                                        where?: Where<TargetEntity>,
                                                                                                                                                                                                                                        options?: Options & {
                                                                                                                                                                                                                                        throughOptions?: Options & { discriminator?: string };
                                                                                                                                                                                                                                        } & { polymorphicType?: string | string[] }
                                                                                                                                                                                                                                        ) => Promise<Count>;

                                                                                                                                                                                                                                          method find

                                                                                                                                                                                                                                          find: (
                                                                                                                                                                                                                                          filter?: Filter<TargetEntity>,
                                                                                                                                                                                                                                          options?: Options & {
                                                                                                                                                                                                                                          throughOptions?: Options & { discriminator?: string };
                                                                                                                                                                                                                                          } & { polymorphicType?: string | string[] }
                                                                                                                                                                                                                                          ) => Promise<TargetEntity[]>;
                                                                                                                                                                                                                                            link: (
                                                                                                                                                                                                                                            targetId: TargetID,
                                                                                                                                                                                                                                            options?: Options & {
                                                                                                                                                                                                                                            throughData?: DataObject<ThroughEntity>;
                                                                                                                                                                                                                                            throughOptions?: Options;
                                                                                                                                                                                                                                            }
                                                                                                                                                                                                                                            ) => Promise<void>;

                                                                                                                                                                                                                                              method patch

                                                                                                                                                                                                                                              patch: (
                                                                                                                                                                                                                                              dataObject:
                                                                                                                                                                                                                                              | DataObject<TargetEntity>
                                                                                                                                                                                                                                              | { [polymorphicType: string]: DataObject<TargetEntity> },
                                                                                                                                                                                                                                              where?: Where<TargetEntity>,
                                                                                                                                                                                                                                              options?: Options & {
                                                                                                                                                                                                                                              throughOptions?: Options & { discriminator?: string };
                                                                                                                                                                                                                                              } & { isPolymorphic?: boolean }
                                                                                                                                                                                                                                              ) => Promise<Count>;
                                                                                                                                                                                                                                                unlink: (
                                                                                                                                                                                                                                                targetId: TargetID,
                                                                                                                                                                                                                                                options?: Options & { throughOptions?: Options }
                                                                                                                                                                                                                                                ) => Promise<void>;

                                                                                                                                                                                                                                                  method unlinkAll

                                                                                                                                                                                                                                                  unlinkAll: (options?: Options & { throughOptions?: Options }) => Promise<void>;

                                                                                                                                                                                                                                                    class DefaultHasOneRepository

                                                                                                                                                                                                                                                    class DefaultHasOneRepository<
                                                                                                                                                                                                                                                    TargetEntity extends Entity,
                                                                                                                                                                                                                                                    TargetID,
                                                                                                                                                                                                                                                    TargetRepository extends EntityCrudRepository<TargetEntity, TargetID>
                                                                                                                                                                                                                                                    > implements HasOneRepository<TargetEntity> {}

                                                                                                                                                                                                                                                      constructor

                                                                                                                                                                                                                                                      constructor(
                                                                                                                                                                                                                                                      getTargetRepository: any,
                                                                                                                                                                                                                                                      constraint: DataObject<TargetEntity>,
                                                                                                                                                                                                                                                      targetResolver: TypeResolver<Entity, typeof Entity>
                                                                                                                                                                                                                                                      );
                                                                                                                                                                                                                                                      • Constructor of DefaultHasOneEntityCrudRepository

                                                                                                                                                                                                                                                        Parameter getTargetRepository

                                                                                                                                                                                                                                                        either a dictionary of target model type - target repository instance or a single target repository instance e.g. if the target is of a non-polymorphic type "Student", put the studentRepositoryGetterInstance if the target is of a polymorphic type "Person" which can be either a "Student" or a "Teacher" then put "{Student: studentRepositoryGetterInstance, Teacher: teacherRepositoryGetterInstance}"

                                                                                                                                                                                                                                                        Parameter constraint

                                                                                                                                                                                                                                                        the key value pair representing foreign key name to constrain the target repository instance

                                                                                                                                                                                                                                                        Parameter targetResolver

                                                                                                                                                                                                                                                        () => Target to resolve the target class e.g. if the target is of type "Student", then put "() => Student"

                                                                                                                                                                                                                                                      property constraint

                                                                                                                                                                                                                                                      constraint: DataObject<TargetEntity>;

                                                                                                                                                                                                                                                        property getTargetRepository

                                                                                                                                                                                                                                                        getTargetRepository: any;

                                                                                                                                                                                                                                                          property getTargetRepositoryDict

                                                                                                                                                                                                                                                          getTargetRepositoryDict: { [repoType: string]: Getter<TargetRepository> };

                                                                                                                                                                                                                                                            property targetResolver

                                                                                                                                                                                                                                                            targetResolver: TypeResolver<Entity, typeof Entity>;

                                                                                                                                                                                                                                                              method create

                                                                                                                                                                                                                                                              create: (
                                                                                                                                                                                                                                                              targetModelData: DataObject<TargetEntity>,
                                                                                                                                                                                                                                                              options?: Options & { polymorphicType?: string }
                                                                                                                                                                                                                                                              ) => Promise<TargetEntity>;

                                                                                                                                                                                                                                                                method delete

                                                                                                                                                                                                                                                                delete: (
                                                                                                                                                                                                                                                                options?: Options & { polymorphicType?: string | string[] }
                                                                                                                                                                                                                                                                ) => Promise<Count>;

                                                                                                                                                                                                                                                                  method get

                                                                                                                                                                                                                                                                  get: (
                                                                                                                                                                                                                                                                  filter?: Pick<
                                                                                                                                                                                                                                                                  Filter<TargetEntity>,
                                                                                                                                                                                                                                                                  Exclude<keyof Filter<TargetEntity>, 'where'>
                                                                                                                                                                                                                                                                  >,
                                                                                                                                                                                                                                                                  options?: Options & { polymorphicType?: string | string[] }
                                                                                                                                                                                                                                                                  ) => Promise<TargetEntity>;

                                                                                                                                                                                                                                                                    method patch

                                                                                                                                                                                                                                                                    patch: (
                                                                                                                                                                                                                                                                    dataObject:
                                                                                                                                                                                                                                                                    | DataObject<TargetEntity>
                                                                                                                                                                                                                                                                    | { [polymorphicType: string]: DataObject<TargetEntity> },
                                                                                                                                                                                                                                                                    options?: Options & { isPolymorphic?: boolean }
                                                                                                                                                                                                                                                                    ) => Promise<Count>;

                                                                                                                                                                                                                                                                      class DefaultKeyValueRepository

                                                                                                                                                                                                                                                                      class DefaultKeyValueRepository<T extends Model> implements KeyValueRepository<T> {}
                                                                                                                                                                                                                                                                      • An implementation of KeyValueRepository based on loopback-datasource-juggler

                                                                                                                                                                                                                                                                      constructor

                                                                                                                                                                                                                                                                      constructor(
                                                                                                                                                                                                                                                                      entityClass: typeof Model & { prototype: T },
                                                                                                                                                                                                                                                                      ds: juggler.DataSource
                                                                                                                                                                                                                                                                      );
                                                                                                                                                                                                                                                                      • Construct a KeyValueRepository with a legacy DataSource

                                                                                                                                                                                                                                                                        Parameter ds

                                                                                                                                                                                                                                                                        Legacy DataSource

                                                                                                                                                                                                                                                                      property kvModelClass

                                                                                                                                                                                                                                                                      kvModelClass: any;
                                                                                                                                                                                                                                                                      • A legacy KeyValueModel class

                                                                                                                                                                                                                                                                      method delete

                                                                                                                                                                                                                                                                      delete: (key: string, options?: Options) => Promise<void>;

                                                                                                                                                                                                                                                                        method deleteAll

                                                                                                                                                                                                                                                                        deleteAll: (options?: Options) => Promise<void>;

                                                                                                                                                                                                                                                                          method expire

                                                                                                                                                                                                                                                                          expire: (key: string, ttl: number, options?: Options) => Promise<void>;

                                                                                                                                                                                                                                                                            method get

                                                                                                                                                                                                                                                                            get: (key: string, options?: Options) => Promise<T>;

                                                                                                                                                                                                                                                                              method keys

                                                                                                                                                                                                                                                                              keys: (filter?: KeyValueFilter, options?: Options) => AsyncIterable<string>;

                                                                                                                                                                                                                                                                                method set

                                                                                                                                                                                                                                                                                set: (key: string, value: DataObject<T>, options?: Options) => Promise<void>;

                                                                                                                                                                                                                                                                                  method toEntity

                                                                                                                                                                                                                                                                                  protected toEntity: (modelData: legacy.ModelData) => T;

                                                                                                                                                                                                                                                                                    method ttl

                                                                                                                                                                                                                                                                                    ttl: (key: string, options?: Options) => Promise<number>;

                                                                                                                                                                                                                                                                                      class DefaultReferencesManyRepository

                                                                                                                                                                                                                                                                                      class DefaultReferencesManyRepository<
                                                                                                                                                                                                                                                                                      TargetEntity extends Entity,
                                                                                                                                                                                                                                                                                      TargetIds,
                                                                                                                                                                                                                                                                                      TargetRepository extends EntityCrudRepository<TargetEntity, TargetIds>
                                                                                                                                                                                                                                                                                      > implements ReferencesManyRepository<TargetEntity> {}

                                                                                                                                                                                                                                                                                        constructor

                                                                                                                                                                                                                                                                                        constructor(
                                                                                                                                                                                                                                                                                        getTargetRepository: Getter<TargetRepository>,
                                                                                                                                                                                                                                                                                        constraint: DataObject<TargetEntity>
                                                                                                                                                                                                                                                                                        );
                                                                                                                                                                                                                                                                                        • Constructor of DefaultReferencesManyEntityCrudRepository

                                                                                                                                                                                                                                                                                          Parameter getTargetRepository

                                                                                                                                                                                                                                                                                          the getter of the related target model repository instance

                                                                                                                                                                                                                                                                                          Parameter constraint

                                                                                                                                                                                                                                                                                          the key value pair representing foreign key name to constrain the target repository instance

                                                                                                                                                                                                                                                                                        property constraint

                                                                                                                                                                                                                                                                                        constraint: DataObject<TargetEntity>;

                                                                                                                                                                                                                                                                                          property getTargetRepository

                                                                                                                                                                                                                                                                                          getTargetRepository: Getter<TargetRepository>;

                                                                                                                                                                                                                                                                                            method get

                                                                                                                                                                                                                                                                                            get: (options?: Options) => Promise<TargetEntity>;

                                                                                                                                                                                                                                                                                              class DefaultTransactionalRepository

                                                                                                                                                                                                                                                                                              class DefaultTransactionalRepository<
                                                                                                                                                                                                                                                                                              T extends Entity,
                                                                                                                                                                                                                                                                                              ID,
                                                                                                                                                                                                                                                                                              Relations extends object = {}
                                                                                                                                                                                                                                                                                              >
                                                                                                                                                                                                                                                                                              extends DefaultCrudRepository<T, ID, Relations>
                                                                                                                                                                                                                                                                                              implements TransactionalEntityRepository<T, ID, Relations> {}
                                                                                                                                                                                                                                                                                              • Default implementation of CRUD repository using legacy juggler model and data source with beginTransaction() method for connectors which support Transactions

                                                                                                                                                                                                                                                                                              method beginTransaction

                                                                                                                                                                                                                                                                                              beginTransaction: (options?: IsolationLevel | Options) => Promise<Transaction>;

                                                                                                                                                                                                                                                                                                class Entity

                                                                                                                                                                                                                                                                                                class Entity extends Model implements Persistable {}
                                                                                                                                                                                                                                                                                                • Base class for entities which have unique ids

                                                                                                                                                                                                                                                                                                method buildWhereForId

                                                                                                                                                                                                                                                                                                static buildWhereForId: (id: any) => any;
                                                                                                                                                                                                                                                                                                • Build the where object for the given id

                                                                                                                                                                                                                                                                                                  Parameter id

                                                                                                                                                                                                                                                                                                  The id value

                                                                                                                                                                                                                                                                                                method getId

                                                                                                                                                                                                                                                                                                getId: () => any;
                                                                                                                                                                                                                                                                                                • Get the identity value. If the identity is a composite key, returns an object.

                                                                                                                                                                                                                                                                                                method getIdObject

                                                                                                                                                                                                                                                                                                getIdObject: () => Object;
                                                                                                                                                                                                                                                                                                • Get the identity as an object, such as {id: 1} or {schoolId: 1, studentId: 2}

                                                                                                                                                                                                                                                                                                method getIdOf

                                                                                                                                                                                                                                                                                                static getIdOf: (entityOrData: AnyObject) => any;
                                                                                                                                                                                                                                                                                                • Get the identity value for a given entity instance or entity data object.

                                                                                                                                                                                                                                                                                                  Parameter entityOrData

                                                                                                                                                                                                                                                                                                  The data object for which to determine the identity value.

                                                                                                                                                                                                                                                                                                method getIdProperties

                                                                                                                                                                                                                                                                                                static getIdProperties: () => string[];
                                                                                                                                                                                                                                                                                                • Get the names of identity properties (primary keys).

                                                                                                                                                                                                                                                                                                class EntityNotFoundError

                                                                                                                                                                                                                                                                                                class EntityNotFoundError<ID, Props extends object = {}> extends Error {}

                                                                                                                                                                                                                                                                                                  constructor

                                                                                                                                                                                                                                                                                                  constructor(
                                                                                                                                                                                                                                                                                                  entityOrName: string | typeof Entity,
                                                                                                                                                                                                                                                                                                  entityId: {},
                                                                                                                                                                                                                                                                                                  extraProperties?: {}
                                                                                                                                                                                                                                                                                                  );

                                                                                                                                                                                                                                                                                                    property code

                                                                                                                                                                                                                                                                                                    code: string;

                                                                                                                                                                                                                                                                                                      property entityId

                                                                                                                                                                                                                                                                                                      entityId: {};

                                                                                                                                                                                                                                                                                                        property entityName

                                                                                                                                                                                                                                                                                                        entityName: string;

                                                                                                                                                                                                                                                                                                          class Event

                                                                                                                                                                                                                                                                                                          class Event {}
                                                                                                                                                                                                                                                                                                          • Domain events

                                                                                                                                                                                                                                                                                                          property source

                                                                                                                                                                                                                                                                                                          source: any;

                                                                                                                                                                                                                                                                                                            property type

                                                                                                                                                                                                                                                                                                            type: string;

                                                                                                                                                                                                                                                                                                              class InvalidBodyError

                                                                                                                                                                                                                                                                                                              class InvalidBodyError<ID, Props extends object = {}> extends Error {}

                                                                                                                                                                                                                                                                                                                constructor

                                                                                                                                                                                                                                                                                                                constructor(
                                                                                                                                                                                                                                                                                                                entityOrName: string | typeof Entity,
                                                                                                                                                                                                                                                                                                                entityId: {},
                                                                                                                                                                                                                                                                                                                extraProperties?: {}
                                                                                                                                                                                                                                                                                                                );

                                                                                                                                                                                                                                                                                                                  property code

                                                                                                                                                                                                                                                                                                                  code: string;

                                                                                                                                                                                                                                                                                                                    property entityId

                                                                                                                                                                                                                                                                                                                    entityId: {};

                                                                                                                                                                                                                                                                                                                      property entityName

                                                                                                                                                                                                                                                                                                                      entityName: string;

                                                                                                                                                                                                                                                                                                                        property statusCode

                                                                                                                                                                                                                                                                                                                        statusCode: number;

                                                                                                                                                                                                                                                                                                                          class InvalidPolymorphismError

                                                                                                                                                                                                                                                                                                                          class InvalidPolymorphismError<Props extends object = {}> extends Error {}

                                                                                                                                                                                                                                                                                                                            constructor

                                                                                                                                                                                                                                                                                                                            constructor(typeName: string, discriminator?: string, extraProperties?: {});

                                                                                                                                                                                                                                                                                                                              property code

                                                                                                                                                                                                                                                                                                                              code: string;

                                                                                                                                                                                                                                                                                                                                class InvalidRelationError

                                                                                                                                                                                                                                                                                                                                class InvalidRelationError<Props extends object = {}> extends Error {}

                                                                                                                                                                                                                                                                                                                                  constructor

                                                                                                                                                                                                                                                                                                                                  constructor(
                                                                                                                                                                                                                                                                                                                                  reason: string,
                                                                                                                                                                                                                                                                                                                                  relationMeta: RelationMetadata,
                                                                                                                                                                                                                                                                                                                                  extraProperties?: {}
                                                                                                                                                                                                                                                                                                                                  );

                                                                                                                                                                                                                                                                                                                                    property code

                                                                                                                                                                                                                                                                                                                                    code: string;

                                                                                                                                                                                                                                                                                                                                      property reason

                                                                                                                                                                                                                                                                                                                                      reason: string;

                                                                                                                                                                                                                                                                                                                                        property relationName

                                                                                                                                                                                                                                                                                                                                        relationName: string;

                                                                                                                                                                                                                                                                                                                                          property relationType

                                                                                                                                                                                                                                                                                                                                          relationType: RelationType;

                                                                                                                                                                                                                                                                                                                                            property sourceModelName

                                                                                                                                                                                                                                                                                                                                            sourceModelName: string;

                                                                                                                                                                                                                                                                                                                                              class Model

                                                                                                                                                                                                                                                                                                                                              class Model {}
                                                                                                                                                                                                                                                                                                                                              • Base class for models

                                                                                                                                                                                                                                                                                                                                              constructor

                                                                                                                                                                                                                                                                                                                                              constructor(data?: DataObject<Model>);

                                                                                                                                                                                                                                                                                                                                                property definition

                                                                                                                                                                                                                                                                                                                                                static definition: ModelDefinition;

                                                                                                                                                                                                                                                                                                                                                  property modelName

                                                                                                                                                                                                                                                                                                                                                  static readonly modelName: string;

                                                                                                                                                                                                                                                                                                                                                    method toJSON

                                                                                                                                                                                                                                                                                                                                                    toJSON: () => Object;
                                                                                                                                                                                                                                                                                                                                                    • Serialize into a plain JSON object

                                                                                                                                                                                                                                                                                                                                                    method toObject

                                                                                                                                                                                                                                                                                                                                                    toObject: (options?: Options) => Object;
                                                                                                                                                                                                                                                                                                                                                    • Convert to a plain object as DTO

                                                                                                                                                                                                                                                                                                                                                      If ignoreUnknownProperty is set to false, convert all properties in the model instance, otherwise only convert the ones defined in the model definitions.

                                                                                                                                                                                                                                                                                                                                                      See function asObject for each property's conversion rules.

                                                                                                                                                                                                                                                                                                                                                    class ModelDefinition

                                                                                                                                                                                                                                                                                                                                                    class ModelDefinition {}
                                                                                                                                                                                                                                                                                                                                                    • Definition for a model

                                                                                                                                                                                                                                                                                                                                                    constructor

                                                                                                                                                                                                                                                                                                                                                    constructor(nameOrDef: string | ModelDefinitionSyntax);

                                                                                                                                                                                                                                                                                                                                                      property name

                                                                                                                                                                                                                                                                                                                                                      readonly name: string;

                                                                                                                                                                                                                                                                                                                                                        property properties

                                                                                                                                                                                                                                                                                                                                                        properties: { [name: string]: PropertyDefinition };

                                                                                                                                                                                                                                                                                                                                                          property relations

                                                                                                                                                                                                                                                                                                                                                          relations: RelationDefinitionMap;

                                                                                                                                                                                                                                                                                                                                                            property settings

                                                                                                                                                                                                                                                                                                                                                            settings: ModelSettings;

                                                                                                                                                                                                                                                                                                                                                              method addProperty

                                                                                                                                                                                                                                                                                                                                                              addProperty: (
                                                                                                                                                                                                                                                                                                                                                              name: string,
                                                                                                                                                                                                                                                                                                                                                              definitionOrType: PropertyDefinition | PropertyType
                                                                                                                                                                                                                                                                                                                                                              ) => this;
                                                                                                                                                                                                                                                                                                                                                              • Add a property

                                                                                                                                                                                                                                                                                                                                                                Parameter name

                                                                                                                                                                                                                                                                                                                                                                Property definition or name (string)

                                                                                                                                                                                                                                                                                                                                                                Parameter definitionOrType

                                                                                                                                                                                                                                                                                                                                                                Definition or property type

                                                                                                                                                                                                                                                                                                                                                              method addRelation

                                                                                                                                                                                                                                                                                                                                                              addRelation: (definition: RelationMetadata) => this;
                                                                                                                                                                                                                                                                                                                                                              • Define a new relation.

                                                                                                                                                                                                                                                                                                                                                                Parameter definition

                                                                                                                                                                                                                                                                                                                                                                The definition of the new relation.

                                                                                                                                                                                                                                                                                                                                                              method addSetting

                                                                                                                                                                                                                                                                                                                                                              addSetting: (name: string, value: any) => this;
                                                                                                                                                                                                                                                                                                                                                              • Add a setting

                                                                                                                                                                                                                                                                                                                                                                Parameter name

                                                                                                                                                                                                                                                                                                                                                                Setting name

                                                                                                                                                                                                                                                                                                                                                                Parameter value

                                                                                                                                                                                                                                                                                                                                                                Setting value

                                                                                                                                                                                                                                                                                                                                                              method belongsTo

                                                                                                                                                                                                                                                                                                                                                              belongsTo: (
                                                                                                                                                                                                                                                                                                                                                              name: string,
                                                                                                                                                                                                                                                                                                                                                              definition: Omit<BelongsToDefinition, 'name' | 'type' | 'targetsMany'>
                                                                                                                                                                                                                                                                                                                                                              ) => this;
                                                                                                                                                                                                                                                                                                                                                              • Define a new belongsTo relation.

                                                                                                                                                                                                                                                                                                                                                                Parameter name

                                                                                                                                                                                                                                                                                                                                                                The name of the belongsTo relation.

                                                                                                                                                                                                                                                                                                                                                                Parameter definition

                                                                                                                                                                                                                                                                                                                                                                The definition of the belongsTo relation.

                                                                                                                                                                                                                                                                                                                                                              method hasMany

                                                                                                                                                                                                                                                                                                                                                              hasMany: (
                                                                                                                                                                                                                                                                                                                                                              name: string,
                                                                                                                                                                                                                                                                                                                                                              definition: Omit<HasManyDefinition, 'name' | 'type' | 'targetsMany'>
                                                                                                                                                                                                                                                                                                                                                              ) => this;
                                                                                                                                                                                                                                                                                                                                                              • Define a new hasMany relation.

                                                                                                                                                                                                                                                                                                                                                                Parameter name

                                                                                                                                                                                                                                                                                                                                                                The name of the hasMany relation.

                                                                                                                                                                                                                                                                                                                                                                Parameter definition

                                                                                                                                                                                                                                                                                                                                                                The definition of the hasMany relation.

                                                                                                                                                                                                                                                                                                                                                              method hasOne

                                                                                                                                                                                                                                                                                                                                                              hasOne: (
                                                                                                                                                                                                                                                                                                                                                              name: string,
                                                                                                                                                                                                                                                                                                                                                              definition: Omit<HasOneDefinition, 'name' | 'type' | 'targetsMany'>
                                                                                                                                                                                                                                                                                                                                                              ) => this;
                                                                                                                                                                                                                                                                                                                                                              • Define a new hasOne relation.

                                                                                                                                                                                                                                                                                                                                                                Parameter name

                                                                                                                                                                                                                                                                                                                                                                The name of the hasOne relation.

                                                                                                                                                                                                                                                                                                                                                                Parameter definition

                                                                                                                                                                                                                                                                                                                                                                The definition of the hasOne relation.

                                                                                                                                                                                                                                                                                                                                                              method idProperties

                                                                                                                                                                                                                                                                                                                                                              idProperties: () => string[];
                                                                                                                                                                                                                                                                                                                                                              • Get an array of names of ID properties, which are specified in the model settings or properties with id attribute.

                                                                                                                                                                                                                                                                                                                                                                Example 1

                                                                                                                                                                                                                                                                                                                                                                {
                                                                                                                                                                                                                                                                                                                                                                settings: {
                                                                                                                                                                                                                                                                                                                                                                id: ['id']
                                                                                                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                                                                                                                properties: {
                                                                                                                                                                                                                                                                                                                                                                id: {
                                                                                                                                                                                                                                                                                                                                                                type: 'string',
                                                                                                                                                                                                                                                                                                                                                                id: true
                                                                                                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                                                                                                                              method referencesMany

                                                                                                                                                                                                                                                                                                                                                              referencesMany: (
                                                                                                                                                                                                                                                                                                                                                              name: string,
                                                                                                                                                                                                                                                                                                                                                              definition: Omit<ReferencesManyDefinition, 'name' | 'type' | 'targetsMany'>
                                                                                                                                                                                                                                                                                                                                                              ) => this;
                                                                                                                                                                                                                                                                                                                                                              • Define a new referencesMany relation.

                                                                                                                                                                                                                                                                                                                                                                Parameter name

                                                                                                                                                                                                                                                                                                                                                                The name of the referencesMany relation.

                                                                                                                                                                                                                                                                                                                                                                Parameter definition

                                                                                                                                                                                                                                                                                                                                                                The definition of the referencesMany relation.

                                                                                                                                                                                                                                                                                                                                                              class ModelMetadataHelper

                                                                                                                                                                                                                                                                                                                                                              class ModelMetadataHelper {}

                                                                                                                                                                                                                                                                                                                                                                method getModelMetadata

                                                                                                                                                                                                                                                                                                                                                                static getModelMetadata: (
                                                                                                                                                                                                                                                                                                                                                                target: Function,
                                                                                                                                                                                                                                                                                                                                                                options?: InspectionOptions
                                                                                                                                                                                                                                                                                                                                                                ) => ModelDefinition | {};
                                                                                                                                                                                                                                                                                                                                                                • A utility function to simplify retrieving metadata from a target model and its properties.

                                                                                                                                                                                                                                                                                                                                                                  Parameter target

                                                                                                                                                                                                                                                                                                                                                                  The class from which to retrieve metadata.

                                                                                                                                                                                                                                                                                                                                                                  Parameter options

                                                                                                                                                                                                                                                                                                                                                                  An options object for the MetadataInspector to customize the output of the metadata retrieval functions.

                                                                                                                                                                                                                                                                                                                                                                class ModelType

                                                                                                                                                                                                                                                                                                                                                                class ModelType<T extends Model> extends ObjectType<T> {}
                                                                                                                                                                                                                                                                                                                                                                • Model type

                                                                                                                                                                                                                                                                                                                                                                constructor

                                                                                                                                                                                                                                                                                                                                                                constructor(modelClass: Class<T>);

                                                                                                                                                                                                                                                                                                                                                                  property modelClass

                                                                                                                                                                                                                                                                                                                                                                  modelClass: Class<T>;

                                                                                                                                                                                                                                                                                                                                                                    property name

                                                                                                                                                                                                                                                                                                                                                                    readonly name: string;

                                                                                                                                                                                                                                                                                                                                                                      method serialize

                                                                                                                                                                                                                                                                                                                                                                      serialize: (value: T | null | undefined) => Object | null | undefined;

                                                                                                                                                                                                                                                                                                                                                                        class NullType

                                                                                                                                                                                                                                                                                                                                                                        class NullType implements Type<null> {}
                                                                                                                                                                                                                                                                                                                                                                        • Null type

                                                                                                                                                                                                                                                                                                                                                                        property name

                                                                                                                                                                                                                                                                                                                                                                        readonly name: string;

                                                                                                                                                                                                                                                                                                                                                                          method coerce

                                                                                                                                                                                                                                                                                                                                                                          coerce: (value: any) => null;

                                                                                                                                                                                                                                                                                                                                                                            method defaultValue

                                                                                                                                                                                                                                                                                                                                                                            defaultValue: () => null;

                                                                                                                                                                                                                                                                                                                                                                              method isCoercible

                                                                                                                                                                                                                                                                                                                                                                              isCoercible: (value: any) => boolean;

                                                                                                                                                                                                                                                                                                                                                                                method isInstance

                                                                                                                                                                                                                                                                                                                                                                                isInstance: (value: any) => boolean;

                                                                                                                                                                                                                                                                                                                                                                                  method serialize

                                                                                                                                                                                                                                                                                                                                                                                  serialize: (value: boolean | null | undefined) => null;

                                                                                                                                                                                                                                                                                                                                                                                    class NumberType

                                                                                                                                                                                                                                                                                                                                                                                    class NumberType implements Type<number> {}
                                                                                                                                                                                                                                                                                                                                                                                    • Number type

                                                                                                                                                                                                                                                                                                                                                                                    property name

                                                                                                                                                                                                                                                                                                                                                                                    readonly name: string;

                                                                                                                                                                                                                                                                                                                                                                                      method coerce

                                                                                                                                                                                                                                                                                                                                                                                      coerce: (value: any) => any;

                                                                                                                                                                                                                                                                                                                                                                                        method defaultValue

                                                                                                                                                                                                                                                                                                                                                                                        defaultValue: () => number;

                                                                                                                                                                                                                                                                                                                                                                                          method isCoercible

                                                                                                                                                                                                                                                                                                                                                                                          isCoercible: (value: any) => boolean;

                                                                                                                                                                                                                                                                                                                                                                                            method isInstance

                                                                                                                                                                                                                                                                                                                                                                                            isInstance: (value: any) => boolean;

                                                                                                                                                                                                                                                                                                                                                                                              method serialize

                                                                                                                                                                                                                                                                                                                                                                                              serialize: (value: number | null | undefined) => number | null | undefined;

                                                                                                                                                                                                                                                                                                                                                                                                class ObjectType

                                                                                                                                                                                                                                                                                                                                                                                                class ObjectType<T extends AnyObject> implements Type<T> {}
                                                                                                                                                                                                                                                                                                                                                                                                • Object type

                                                                                                                                                                                                                                                                                                                                                                                                constructor

                                                                                                                                                                                                                                                                                                                                                                                                constructor(type: Class<T>);

                                                                                                                                                                                                                                                                                                                                                                                                  property name

                                                                                                                                                                                                                                                                                                                                                                                                  name: string;

                                                                                                                                                                                                                                                                                                                                                                                                    property type

                                                                                                                                                                                                                                                                                                                                                                                                    type: Class<T>;

                                                                                                                                                                                                                                                                                                                                                                                                      method coerce

                                                                                                                                                                                                                                                                                                                                                                                                      coerce: (value: any) => any;

                                                                                                                                                                                                                                                                                                                                                                                                        method defaultValue

                                                                                                                                                                                                                                                                                                                                                                                                        defaultValue: () => T;

                                                                                                                                                                                                                                                                                                                                                                                                          method isCoercible

                                                                                                                                                                                                                                                                                                                                                                                                          isCoercible: (value: any) => boolean;

                                                                                                                                                                                                                                                                                                                                                                                                            method isInstance

                                                                                                                                                                                                                                                                                                                                                                                                            isInstance: (value: any) => boolean;

                                                                                                                                                                                                                                                                                                                                                                                                              method serialize

                                                                                                                                                                                                                                                                                                                                                                                                              serialize: (value: T | null | undefined) => any;

                                                                                                                                                                                                                                                                                                                                                                                                                class RepositoryMetadata

                                                                                                                                                                                                                                                                                                                                                                                                                class RepositoryMetadata {}
                                                                                                                                                                                                                                                                                                                                                                                                                • Metadata for a repository

                                                                                                                                                                                                                                                                                                                                                                                                                constructor

                                                                                                                                                                                                                                                                                                                                                                                                                constructor(modelOrRepo: string | typeof Entity, dataSource?: any);
                                                                                                                                                                                                                                                                                                                                                                                                                • Constructor for RepositoryMetadata

                                                                                                                                                                                                                                                                                                                                                                                                                  Parameter modelOrRepo

                                                                                                                                                                                                                                                                                                                                                                                                                  Name or class of the model. If the value is a string and dataSource is not present, it will treated as the name of a predefined repository

                                                                                                                                                                                                                                                                                                                                                                                                                  Parameter dataSource

                                                                                                                                                                                                                                                                                                                                                                                                                  Name or instance of the data source

                                                                                                                                                                                                                                                                                                                                                                                                                  For example:

                                                                                                                                                                                                                                                                                                                                                                                                                  - new RepositoryMetadata(repoName); - new RepositoryMetadata(modelName, dataSourceName); - new RepositoryMetadata(modelClass, dataSourceInstance); - new RepositoryMetadata(modelName, dataSourceInstance); - new RepositoryMetadata(modelClass, dataSourceName);

                                                                                                                                                                                                                                                                                                                                                                                                                property dataSource

                                                                                                                                                                                                                                                                                                                                                                                                                dataSource?: any;
                                                                                                                                                                                                                                                                                                                                                                                                                • Instance of the data source

                                                                                                                                                                                                                                                                                                                                                                                                                property dataSourceName

                                                                                                                                                                                                                                                                                                                                                                                                                dataSourceName?: string;
                                                                                                                                                                                                                                                                                                                                                                                                                • Name of the data source

                                                                                                                                                                                                                                                                                                                                                                                                                property modelClass

                                                                                                                                                                                                                                                                                                                                                                                                                modelClass?: typeof Entity;
                                                                                                                                                                                                                                                                                                                                                                                                                • Class of the model

                                                                                                                                                                                                                                                                                                                                                                                                                property modelName

                                                                                                                                                                                                                                                                                                                                                                                                                modelName?: string;
                                                                                                                                                                                                                                                                                                                                                                                                                • Name of the model

                                                                                                                                                                                                                                                                                                                                                                                                                property name

                                                                                                                                                                                                                                                                                                                                                                                                                name?: string;
                                                                                                                                                                                                                                                                                                                                                                                                                • Name of the predefined repository

                                                                                                                                                                                                                                                                                                                                                                                                                class RepositoryMixinDoc

                                                                                                                                                                                                                                                                                                                                                                                                                class RepositoryMixinDoc {}
                                                                                                                                                                                                                                                                                                                                                                                                                • A dummy class created to generate the tsdoc for the members in repository mixin. Please don't use it.

                                                                                                                                                                                                                                                                                                                                                                                                                  The members are implemented in function RepositoryMixin

                                                                                                                                                                                                                                                                                                                                                                                                                constructor

                                                                                                                                                                                                                                                                                                                                                                                                                constructor(...args: any[]);

                                                                                                                                                                                                                                                                                                                                                                                                                  method component

                                                                                                                                                                                                                                                                                                                                                                                                                  component: (component: Class<{}>) => Binding;
                                                                                                                                                                                                                                                                                                                                                                                                                  • Add a component to this application. Also mounts all the components repositories.

                                                                                                                                                                                                                                                                                                                                                                                                                    Parameter component

                                                                                                                                                                                                                                                                                                                                                                                                                    The component to add.

                                                                                                                                                                                                                                                                                                                                                                                                                    Example 1

                                                                                                                                                                                                                                                                                                                                                                                                                    export class ProductComponent {
                                                                                                                                                                                                                                                                                                                                                                                                                    controllers = [ProductController];
                                                                                                                                                                                                                                                                                                                                                                                                                    repositories = [ProductRepo, UserRepo];
                                                                                                                                                                                                                                                                                                                                                                                                                    providers = {
                                                                                                                                                                                                                                                                                                                                                                                                                    [AUTHENTICATION_STRATEGY]: AuthStrategy,
                                                                                                                                                                                                                                                                                                                                                                                                                    [AUTHORIZATION_ROLE]: Role,
                                                                                                                                                                                                                                                                                                                                                                                                                    };
                                                                                                                                                                                                                                                                                                                                                                                                                    };
                                                                                                                                                                                                                                                                                                                                                                                                                    app.component(ProductComponent);

                                                                                                                                                                                                                                                                                                                                                                                                                  method dataSource

                                                                                                                                                                                                                                                                                                                                                                                                                  dataSource: (
                                                                                                                                                                                                                                                                                                                                                                                                                  dataSource: Class<juggler.DataSource> | juggler.DataSource,
                                                                                                                                                                                                                                                                                                                                                                                                                  name?: string
                                                                                                                                                                                                                                                                                                                                                                                                                  ) => Binding;
                                                                                                                                                                                                                                                                                                                                                                                                                  • Add the dataSource to this application.

                                                                                                                                                                                                                                                                                                                                                                                                                    Parameter dataSource

                                                                                                                                                                                                                                                                                                                                                                                                                    The dataSource to add.

                                                                                                                                                                                                                                                                                                                                                                                                                    Parameter name

                                                                                                                                                                                                                                                                                                                                                                                                                    The binding name of the datasource; defaults to dataSource.name

                                                                                                                                                                                                                                                                                                                                                                                                                    Example 1

                                                                                                                                                                                                                                                                                                                                                                                                                    const ds: juggler.DataSource = new juggler.DataSource({
                                                                                                                                                                                                                                                                                                                                                                                                                    name: 'db',
                                                                                                                                                                                                                                                                                                                                                                                                                    connector: 'memory',
                                                                                                                                                                                                                                                                                                                                                                                                                    });
                                                                                                                                                                                                                                                                                                                                                                                                                    app.dataSource(ds);
                                                                                                                                                                                                                                                                                                                                                                                                                    // The datasource can be injected with
                                                                                                                                                                                                                                                                                                                                                                                                                    constructor(@inject('datasources.db') dataSource: DataSourceType) {
                                                                                                                                                                                                                                                                                                                                                                                                                    }

                                                                                                                                                                                                                                                                                                                                                                                                                  method getRepository

                                                                                                                                                                                                                                                                                                                                                                                                                  getRepository: <R extends Repository<any>>(repo: Class<R>) => Promise<R>;
                                                                                                                                                                                                                                                                                                                                                                                                                  • Retrieve the repository instance from the given Repository class

                                                                                                                                                                                                                                                                                                                                                                                                                    Parameter repo

                                                                                                                                                                                                                                                                                                                                                                                                                    The repository class to retrieve the instance of

                                                                                                                                                                                                                                                                                                                                                                                                                  method migrateSchema

                                                                                                                                                                                                                                                                                                                                                                                                                  migrateSchema: (options?: SchemaMigrationOptions) => Promise<void>;
                                                                                                                                                                                                                                                                                                                                                                                                                  • Update or recreate the database schema for all repositories.

                                                                                                                                                                                                                                                                                                                                                                                                                    **WARNING**: By default, migrateSchema() will attempt to preserve data while updating the schema in your target database, but this is not guaranteed to be safe.

                                                                                                                                                                                                                                                                                                                                                                                                                    Please check the documentation for your specific connector(s) for a detailed breakdown of behaviors for automigrate!

                                                                                                                                                                                                                                                                                                                                                                                                                    Parameter options

                                                                                                                                                                                                                                                                                                                                                                                                                    Migration options, e.g. whether to update tables preserving data or rebuild everything from scratch.

                                                                                                                                                                                                                                                                                                                                                                                                                  method mountComponentRepository

                                                                                                                                                                                                                                                                                                                                                                                                                  mountComponentRepository: (component: Class<{}>) => void;
                                                                                                                                                                                                                                                                                                                                                                                                                  • Get an instance of a component and mount all it's repositories. This function is intended to be used internally by component()

                                                                                                                                                                                                                                                                                                                                                                                                                    Parameter component

                                                                                                                                                                                                                                                                                                                                                                                                                    The component to mount repositories of

                                                                                                                                                                                                                                                                                                                                                                                                                  method repository

                                                                                                                                                                                                                                                                                                                                                                                                                  repository: (repo: Class<Repository<any>>) => Binding;
                                                                                                                                                                                                                                                                                                                                                                                                                  • Add a repository to this application.

                                                                                                                                                                                                                                                                                                                                                                                                                    Parameter repo

                                                                                                                                                                                                                                                                                                                                                                                                                    The repository to add.

                                                                                                                                                                                                                                                                                                                                                                                                                    Example 1

                                                                                                                                                                                                                                                                                                                                                                                                                    class NoteRepo {
                                                                                                                                                                                                                                                                                                                                                                                                                    model: any;
                                                                                                                                                                                                                                                                                                                                                                                                                    constructor() {
                                                                                                                                                                                                                                                                                                                                                                                                                    const ds: juggler.DataSource = new juggler.DataSource({
                                                                                                                                                                                                                                                                                                                                                                                                                    name: 'db',
                                                                                                                                                                                                                                                                                                                                                                                                                    connector: 'memory',
                                                                                                                                                                                                                                                                                                                                                                                                                    });
                                                                                                                                                                                                                                                                                                                                                                                                                    this.model = ds.createModel(
                                                                                                                                                                                                                                                                                                                                                                                                                    'note',
                                                                                                                                                                                                                                                                                                                                                                                                                    {title: 'string', content: 'string'},
                                                                                                                                                                                                                                                                                                                                                                                                                    {}
                                                                                                                                                                                                                                                                                                                                                                                                                    );
                                                                                                                                                                                                                                                                                                                                                                                                                    }
                                                                                                                                                                                                                                                                                                                                                                                                                    };
                                                                                                                                                                                                                                                                                                                                                                                                                    app.repository(NoteRepo);

                                                                                                                                                                                                                                                                                                                                                                                                                  class StringType

                                                                                                                                                                                                                                                                                                                                                                                                                  class StringType implements Type<string> {}
                                                                                                                                                                                                                                                                                                                                                                                                                  • String type

                                                                                                                                                                                                                                                                                                                                                                                                                  property name

                                                                                                                                                                                                                                                                                                                                                                                                                  readonly name: string;

                                                                                                                                                                                                                                                                                                                                                                                                                    method coerce

                                                                                                                                                                                                                                                                                                                                                                                                                    coerce: (value: any) => string;

                                                                                                                                                                                                                                                                                                                                                                                                                      method defaultValue

                                                                                                                                                                                                                                                                                                                                                                                                                      defaultValue: () => string;

                                                                                                                                                                                                                                                                                                                                                                                                                        method isCoercible

                                                                                                                                                                                                                                                                                                                                                                                                                        isCoercible: (value: any) => boolean;

                                                                                                                                                                                                                                                                                                                                                                                                                          method isInstance

                                                                                                                                                                                                                                                                                                                                                                                                                          isInstance: (value: any) => boolean;

                                                                                                                                                                                                                                                                                                                                                                                                                            method serialize

                                                                                                                                                                                                                                                                                                                                                                                                                            serialize: (value: string | null | undefined) => string | null | undefined;

                                                                                                                                                                                                                                                                                                                                                                                                                              class UnionType

                                                                                                                                                                                                                                                                                                                                                                                                                              class UnionType implements Type<any> {}
                                                                                                                                                                                                                                                                                                                                                                                                                              • Union type, such as string | number

                                                                                                                                                                                                                                                                                                                                                                                                                              constructor

                                                                                                                                                                                                                                                                                                                                                                                                                              constructor(itemTypes: Type<any>[]);

                                                                                                                                                                                                                                                                                                                                                                                                                                property itemTypes

                                                                                                                                                                                                                                                                                                                                                                                                                                itemTypes: Type<any>[];

                                                                                                                                                                                                                                                                                                                                                                                                                                  property name

                                                                                                                                                                                                                                                                                                                                                                                                                                  readonly name: string;

                                                                                                                                                                                                                                                                                                                                                                                                                                    method coerce

                                                                                                                                                                                                                                                                                                                                                                                                                                    coerce: (value: any) => any;

                                                                                                                                                                                                                                                                                                                                                                                                                                      method defaultValue

                                                                                                                                                                                                                                                                                                                                                                                                                                      defaultValue: () => any;

                                                                                                                                                                                                                                                                                                                                                                                                                                        method isCoercible

                                                                                                                                                                                                                                                                                                                                                                                                                                        isCoercible: (value: any) => boolean;

                                                                                                                                                                                                                                                                                                                                                                                                                                          method isInstance

                                                                                                                                                                                                                                                                                                                                                                                                                                          isInstance: (value: any) => boolean;

                                                                                                                                                                                                                                                                                                                                                                                                                                            method serialize

                                                                                                                                                                                                                                                                                                                                                                                                                                            serialize: (value: any) => any;

                                                                                                                                                                                                                                                                                                                                                                                                                                              class ValueObject

                                                                                                                                                                                                                                                                                                                                                                                                                                              abstract class ValueObject extends Model implements Persistable {}
                                                                                                                                                                                                                                                                                                                                                                                                                                              • Base class for value objects - An object that contains attributes but has no conceptual identity. They should be treated as immutable.

                                                                                                                                                                                                                                                                                                                                                                                                                                              Interfaces

                                                                                                                                                                                                                                                                                                                                                                                                                                              interface AnyObject

                                                                                                                                                                                                                                                                                                                                                                                                                                              interface AnyObject {}
                                                                                                                                                                                                                                                                                                                                                                                                                                              • Objects with open properties

                                                                                                                                                                                                                                                                                                                                                                                                                                              index signature

                                                                                                                                                                                                                                                                                                                                                                                                                                              [property: string]: any;

                                                                                                                                                                                                                                                                                                                                                                                                                                                interface ApplicationWithRepositories

                                                                                                                                                                                                                                                                                                                                                                                                                                                interface ApplicationWithRepositories extends Application {}
                                                                                                                                                                                                                                                                                                                                                                                                                                                • Interface for an Application mixed in with RepositoryMixin

                                                                                                                                                                                                                                                                                                                                                                                                                                                method component

                                                                                                                                                                                                                                                                                                                                                                                                                                                component: (component: Class<unknown>, name?: string) => Binding;

                                                                                                                                                                                                                                                                                                                                                                                                                                                  method dataSource

                                                                                                                                                                                                                                                                                                                                                                                                                                                  dataSource: <D extends juggler.DataSource>(
                                                                                                                                                                                                                                                                                                                                                                                                                                                  dataSource: Class<D> | D,
                                                                                                                                                                                                                                                                                                                                                                                                                                                  name?: string
                                                                                                                                                                                                                                                                                                                                                                                                                                                  ) => Binding<D>;

                                                                                                                                                                                                                                                                                                                                                                                                                                                    method getRepository

                                                                                                                                                                                                                                                                                                                                                                                                                                                    getRepository: <R extends Repository<any>>(repo: Class<R>) => Promise<R>;

                                                                                                                                                                                                                                                                                                                                                                                                                                                      method migrateSchema

                                                                                                                                                                                                                                                                                                                                                                                                                                                      migrateSchema: (options?: SchemaMigrationOptions) => Promise<void>;

                                                                                                                                                                                                                                                                                                                                                                                                                                                        method model

                                                                                                                                                                                                                                                                                                                                                                                                                                                        model: <M extends Class<unknown>>(modelClass: M) => Binding<M>;

                                                                                                                                                                                                                                                                                                                                                                                                                                                          method mountComponentRepositories

                                                                                                                                                                                                                                                                                                                                                                                                                                                          mountComponentRepositories: (component: Class<unknown>) => void;

                                                                                                                                                                                                                                                                                                                                                                                                                                                            method repository

                                                                                                                                                                                                                                                                                                                                                                                                                                                            repository: <R extends Repository<any>>(
                                                                                                                                                                                                                                                                                                                                                                                                                                                            repo: Class<R>,
                                                                                                                                                                                                                                                                                                                                                                                                                                                            name?: string
                                                                                                                                                                                                                                                                                                                                                                                                                                                            ) => Binding<R>;

                                                                                                                                                                                                                                                                                                                                                                                                                                                              interface BaseRepositoryClass

                                                                                                                                                                                                                                                                                                                                                                                                                                                              interface BaseRepositoryClass<
                                                                                                                                                                                                                                                                                                                                                                                                                                                              M extends typeof Model,
                                                                                                                                                                                                                                                                                                                                                                                                                                                              R extends Repository<PrototypeOf<M>>
                                                                                                                                                                                                                                                                                                                                                                                                                                                              > {}
                                                                                                                                                                                                                                                                                                                                                                                                                                                              • Signature for repository classes that can be used as the base class for define* functions. The constructor of a base repository class accepts the target model constructor and the datasource to use.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                define* functions require a class implementing this interface on input.

                                                                                                                                                                                                                                                                                                                                                                                                                                                              property prototype

                                                                                                                                                                                                                                                                                                                                                                                                                                                              prototype: R;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                construct signature

                                                                                                                                                                                                                                                                                                                                                                                                                                                                new (modelClass: M, dataSource: juggler.DataSource): R;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                • The constructor for the generated repository class

                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Parameter modelClass

                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Model class

                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Parameter dataSource

                                                                                                                                                                                                                                                                                                                                                                                                                                                                  DataSource object

                                                                                                                                                                                                                                                                                                                                                                                                                                                                interface BelongsToAccessor

                                                                                                                                                                                                                                                                                                                                                                                                                                                                interface BelongsToAccessor<Target extends Entity, SourceId> {}

                                                                                                                                                                                                                                                                                                                                                                                                                                                                  property inclusionResolver

                                                                                                                                                                                                                                                                                                                                                                                                                                                                  inclusionResolver: InclusionResolver<Entity, Target>;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • Use resolver property to obtain an InclusionResolver for this relation.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                  call signature

                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (sourceId: SourceId, polymorphicTypes?: string | string[]): Promise<Target>;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  • Invoke the function to obtain HasManyRepository.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                  interface BelongsToDefinition

                                                                                                                                                                                                                                                                                                                                                                                                                                                                  interface BelongsToDefinition extends RelationDefinitionBase {}

                                                                                                                                                                                                                                                                                                                                                                                                                                                                    property keyFrom

                                                                                                                                                                                                                                                                                                                                                                                                                                                                    keyFrom?: string;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      property keyTo

                                                                                                                                                                                                                                                                                                                                                                                                                                                                      keyTo?: string;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                        property polymorphic

                                                                                                                                                                                                                                                                                                                                                                                                                                                                        polymorphic?:
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | boolean
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        discriminator: string;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        };
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        • The polymorphism of the target model. The discriminator is a key of source model. If the target model is not polymorphic, then the value should be left undefined or false; If the key on source model indicating the concrete class of the target instance is default i.e. camelCase(classNameOf(throughModelInstance)) + "Id" Then the discriminator field can be undefined

                                                                                                                                                                                                                                                                                                                                                                                                                                                                        property targetsMany

                                                                                                                                                                                                                                                                                                                                                                                                                                                                        targetsMany: false;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                          property type

                                                                                                                                                                                                                                                                                                                                                                                                                                                                          type: RelationType.belongsTo;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            interface BelongsToRepository

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            interface BelongsToRepository<Target extends Entity> {}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • CRUD operations for a target repository of a BelongsTo relation

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            method get

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            get: (
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            options?: Options & { polymorphicType?: string | string[] }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ) => Promise<Target>;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • Gets the target model instance

                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Parameter options

                                                                                                                                                                                                                                                                                                                                                                                                                                                                              options.polymorphicType - a string or a string array of polymorphic type names to specify which repositories should are expected to be searched It is highly recommended to contain this param especially for datasources using deplicated ids across tables

                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Returns

                                                                                                                                                                                                                                                                                                                                                                                                                                                                              A promise resolved with the target object or rejected with an EntityNotFoundError when target model instance was not found.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            interface Class

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            interface Class<T> {}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            • Interface for classes with new operator and static properties/methods

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            construct signature

                                                                                                                                                                                                                                                                                                                                                                                                                                                                            new (...args: any[]): T;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                              index signature

                                                                                                                                                                                                                                                                                                                                                                                                                                                                              [property: string]: any;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                interface Connector

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                interface Connector {}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • Common properties/operations for connectors

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                property configModel

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                configModel?: Model;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  property interfaces

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  interfaces?: (
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | string
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | ConnectorInterfaces.StrongRelation
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | ConnectorInterfaces.StrongJoins
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  )[];

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    property name

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    name: string;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      method connect

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      connect: () => Promise<void>;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        method disconnect

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        disconnect: () => Promise<void>;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          method execute

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          execute: (
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          command: Command,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          parameters: NamedParameters | PositionalParameters,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          options?: Options
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ) => Promise<AnyObject>;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            method ping

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ping: () => Promise<void>;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              interface ConstructorFunction

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              interface ConstructorFunction<T> {}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              • Interface for constructor functions without new operator.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Example 1

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                function Foo(x) {
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                if (!(this instanceof Foo)) { return new Foo(x); }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                this.x = x;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              call signature

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (...args: any[]): T;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                interface Count

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                interface Count {}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                • Count of Model instances that were successful for methods like updateAll, deleteAll, etc.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                property count