functional-models
    Preparing search index...

    Interface OrmModel<TData, TModelExtensions, TModelInstanceExtensions>

    A model that has ORM functions attached.

    interface OrmModel<
        TData extends DataDescription,
        TModelExtensions extends object = object,
        TModelInstanceExtensions extends object = object,
    > {
        bulkInsert: <TData extends Readonly<{ [s: string]: any }>>(
            instances: readonly OrmModelInstance<
                TData,
                TModelExtensions,
                TModelInstanceExtensions,
            >[],
        ) => Promise<void>;
        count: () => Promise<number>;
        create: <IgnoreProperties extends string = "">(
            data: CreateParams<TData, IgnoreProperties>,
        ) => ModelInstance<
            TData,
            Readonly<
                {
                    bulkInsert: <TData extends Readonly<{ [s: string]: any }>>(
                        instances: readonly OrmModelInstance<
                            TData,
                            TModelExtensions,
                            TModelInstanceExtensions,
                        >[],
                    ) => Promise<void>;
                    count: () => Promise<number>;
                    createAndSave: <TData extends Readonly<{ [s: string]: any }>>(
                        data: OrmModelInstance<
                            TData,
                            TModelExtensions,
                            TModelInstanceExtensions,
                        >,
                    ) => Promise<
                        OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
                    >;
                    delete: (id: PrimaryKeyType) => Promise<void>;
                    retrieve: <TData extends Readonly<{ [s: string]: any }>>(
                        primaryKey: PrimaryKeyType,
                    ) => Promise<
                        Maybe<
                            OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
                        >,
                    >;
                    save: <TData extends Readonly<{ [s: string]: any }>>(
                        instance: OrmModelInstance<
                            TData,
                            TModelExtensions,
                            TModelInstanceExtensions,
                        >,
                    ) => Promise<
                        OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
                    >;
                    search: <TData extends Readonly<{ [s: string]: any }>>(
                        query: OrmSearch,
                    ) => Promise<
                        Readonly<
                            {
                                instances: readonly OrmModelInstance<
                                    TData,
                                    OrmModel<(...), (...), (...)>,
                                    object,
                                >[];
                                page?: any;
                            },
                        >,
                    >;
                    searchOne: <TData extends Readonly<{ [s: string]: any }>>(
                        query: Omit<OrmSearch, "take">,
                    ) => Promise<
                        | undefined
                        | OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
                    >;
                },
            >,
            Readonly<
                {
                    delete: () => Promise<void>;
                    save: <TData extends Readonly<{ [s: string]: any }>>() => Promise<
                        OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
                    >;
                },
            >,
        >;
        createAndSave: <TData extends Readonly<{ [s: string]: any }>>(
            data: OrmModelInstance<
                TData,
                TModelExtensions,
                TModelInstanceExtensions,
            >,
        ) => Promise<
            OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
        >;
        delete: (id: PrimaryKeyType) => Promise<void>;
        getApiInfo: () => Required<ApiInfo>;
        getModelDefinition: () => Readonly<
            {
                api?: Partial<ApiInfoPartialRest>;
                description: string;
                displayName: string;
                modelValidators: readonly ModelValidatorComponent<TData, object, object>[];
                namespace: string;
                pluralName: string;
                primaryKeyName: string;
                properties: PropertiesList<Required<TData>>;
                singularName: string;
            },
        >;
        getName: () => string;
        getPrimaryKey: (
            instanceData: TData | ToObjectResult<TData>,
        ) => PrimaryKeyType;
        retrieve: <TData extends Readonly<{ [s: string]: any }>>(
            primaryKey: PrimaryKeyType,
        ) => Promise<
            Maybe<
                OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
            >,
        >;
        save: <TData extends Readonly<{ [s: string]: any }>>(
            instance: OrmModelInstance<
                TData,
                TModelExtensions,
                TModelInstanceExtensions,
            >,
        ) => Promise<
            OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
        >;
        search: <TData extends Readonly<{ [s: string]: any }>>(
            query: OrmSearch,
        ) => Promise<
            Readonly<
                {
                    instances: readonly OrmModelInstance<
                        TData,
                        OrmModel<TData, TModelExtensions, TModelInstanceExtensions>,
                        object,
                    >[];
                    page?: any;
                },
            >,
        >;
        searchOne: <TData extends Readonly<{ [s: string]: any }>>(
            query: Omit<OrmSearch, "take">,
        ) => Promise<
            | undefined
            | OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
        >;
    }

    Type Parameters

    • TData extends DataDescription
    • TModelExtensions extends object = object
    • TModelInstanceExtensions extends object = object
    Index

    Properties

    bulkInsert: <TData extends Readonly<{ [s: string]: any }>>(
        instances: readonly OrmModelInstance<
            TData,
            TModelExtensions,
            TModelInstanceExtensions,
        >[],
    ) => Promise<void>

    Inserts multiple objects at once. Can often see great optimizations in some databases.

    count: () => Promise<number>

    Counts the number of models saved in the database.

    create: <IgnoreProperties extends string = "">(
        data: CreateParams<TData, IgnoreProperties>,
    ) => ModelInstance<
        TData,
        Readonly<
            {
                bulkInsert: <TData extends Readonly<{ [s: string]: any }>>(
                    instances: readonly OrmModelInstance<
                        TData,
                        TModelExtensions,
                        TModelInstanceExtensions,
                    >[],
                ) => Promise<void>;
                count: () => Promise<number>;
                createAndSave: <TData extends Readonly<{ [s: string]: any }>>(
                    data: OrmModelInstance<
                        TData,
                        TModelExtensions,
                        TModelInstanceExtensions,
                    >,
                ) => Promise<
                    OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
                >;
                delete: (id: PrimaryKeyType) => Promise<void>;
                retrieve: <TData extends Readonly<{ [s: string]: any }>>(
                    primaryKey: PrimaryKeyType,
                ) => Promise<
                    Maybe<
                        OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
                    >,
                >;
                save: <TData extends Readonly<{ [s: string]: any }>>(
                    instance: OrmModelInstance<
                        TData,
                        TModelExtensions,
                        TModelInstanceExtensions,
                    >,
                ) => Promise<
                    OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
                >;
                search: <TData extends Readonly<{ [s: string]: any }>>(
                    query: OrmSearch,
                ) => Promise<
                    Readonly<
                        {
                            instances: readonly OrmModelInstance<
                                TData,
                                OrmModel<(...), (...), (...)>,
                                object,
                            >[];
                            page?: any;
                        },
                    >,
                >;
                searchOne: <TData extends Readonly<{ [s: string]: any }>>(
                    query: Omit<OrmSearch, "take">,
                ) => Promise<
                    | undefined
                    | OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
                >;
            },
        >,
        Readonly<
            {
                delete: () => Promise<void>;
                save: <TData extends Readonly<{ [s: string]: any }>>() => Promise<
                    OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
                >;
            },
        >,
    >

    Creates an instance of this model with the data that is provided.

    Type declaration

      • <IgnoreProperties extends string = "">(
            data: CreateParams<TData, IgnoreProperties>,
        ): ModelInstance<
            TData,
            Readonly<
                {
                    bulkInsert: <TData extends Readonly<{ [s: string]: any }>>(
                        instances: readonly OrmModelInstance<
                            TData,
                            TModelExtensions,
                            TModelInstanceExtensions,
                        >[],
                    ) => Promise<void>;
                    count: () => Promise<number>;
                    createAndSave: <TData extends Readonly<{ [s: string]: any }>>(
                        data: OrmModelInstance<
                            TData,
                            TModelExtensions,
                            TModelInstanceExtensions,
                        >,
                    ) => Promise<
                        OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
                    >;
                    delete: (id: PrimaryKeyType) => Promise<void>;
                    retrieve: <TData extends Readonly<{ [s: string]: any }>>(
                        primaryKey: PrimaryKeyType,
                    ) => Promise<
                        Maybe<
                            OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
                        >,
                    >;
                    save: <TData extends Readonly<{ [s: string]: any }>>(
                        instance: OrmModelInstance<
                            TData,
                            TModelExtensions,
                            TModelInstanceExtensions,
                        >,
                    ) => Promise<
                        OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
                    >;
                    search: <TData extends Readonly<{ [s: string]: any }>>(
                        query: OrmSearch,
                    ) => Promise<
                        Readonly<
                            {
                                instances: readonly OrmModelInstance<
                                    TData,
                                    OrmModel<(...), (...), (...)>,
                                    object,
                                >[];
                                page?: any;
                            },
                        >,
                    >;
                    searchOne: <TData extends Readonly<{ [s: string]: any }>>(
                        query: Omit<OrmSearch, "take">,
                    ) => Promise<
                        | undefined
                        | OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
                    >;
                },
            >,
            Readonly<
                {
                    delete: () => Promise<void>;
                    save: <TData extends Readonly<{ [s: string]: any }>>() => Promise<
                        OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
                    >;
                },
            >,
        >
      • Type Parameters

        • IgnoreProperties extends string = ""

        Parameters

        • data: CreateParams<TData, IgnoreProperties>

          The data that makes up an instance of the model. NOTE: A tradeoff was made between supporting the DataDescription vs a ToObjectReturn. One or the other could be supported, but not both. In order to support executing create() while passing in data that comes from ".toObj()" we recommend using that case feature of toObj().

        Returns ModelInstance<
            TData,
            Readonly<
                {
                    bulkInsert: <TData extends Readonly<{ [s: string]: any }>>(
                        instances: readonly OrmModelInstance<
                            TData,
                            TModelExtensions,
                            TModelInstanceExtensions,
                        >[],
                    ) => Promise<void>;
                    count: () => Promise<number>;
                    createAndSave: <TData extends Readonly<{ [s: string]: any }>>(
                        data: OrmModelInstance<
                            TData,
                            TModelExtensions,
                            TModelInstanceExtensions,
                        >,
                    ) => Promise<
                        OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
                    >;
                    delete: (id: PrimaryKeyType) => Promise<void>;
                    retrieve: <TData extends Readonly<{ [s: string]: any }>>(
                        primaryKey: PrimaryKeyType,
                    ) => Promise<
                        Maybe<
                            OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
                        >,
                    >;
                    save: <TData extends Readonly<{ [s: string]: any }>>(
                        instance: OrmModelInstance<
                            TData,
                            TModelExtensions,
                            TModelInstanceExtensions,
                        >,
                    ) => Promise<
                        OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
                    >;
                    search: <TData extends Readonly<{ [s: string]: any }>>(
                        query: OrmSearch,
                    ) => Promise<
                        Readonly<
                            {
                                instances: readonly OrmModelInstance<
                                    TData,
                                    OrmModel<(...), (...), (...)>,
                                    object,
                                >[];
                                page?: any;
                            },
                        >,
                    >;
                    searchOne: <TData extends Readonly<{ [s: string]: any }>>(
                        query: Omit<OrmSearch, "take">,
                    ) => Promise<
                        | undefined
                        | OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
                    >;
                },
            >,
            Readonly<
                {
                    delete: () => Promise<void>;
                    save: <TData extends Readonly<{ [s: string]: any }>>() => Promise<
                        OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
                    >;
                },
            >,
        >

    createAndSave: <TData extends Readonly<{ [s: string]: any }>>(
        data: OrmModelInstance<
            TData,
            TModelExtensions,
            TModelInstanceExtensions,
        >,
    ) => Promise<
        OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
    >

    Creates and saves an instance. An optimization in some databases

    delete: (id: PrimaryKeyType) => Promise<void>

    Deletes an instance by its id.

    Type declaration

    getApiInfo: () => Required<ApiInfo>

    Gets the Api Information on the model.

    This will take what is manually provided via the ModelDefinition and autopopulate everything that is possible with default values, or values that make sense based on the ApiInformation provided.

    getModelDefinition: () => Readonly<
        {
            api?: Partial<ApiInfoPartialRest>;
            description: string;
            displayName: string;
            modelValidators: readonly ModelValidatorComponent<TData, object, object>[];
            namespace: string;
            pluralName: string;
            primaryKeyName: string;
            properties: PropertiesList<Required<TData>>;
            singularName: string;
        },
    >

    Gets the metadata that describes the model.

    getName: () => string

    This is a unique name combining namespace + pluralName. This can be used as a key to uniquely identify this model across an entire system. Example: pluralName=MyModels namespace=@my-package/namespace

    Return: '@my-package/namespace-my-models'

    getPrimaryKey: (instanceData: TData | ToObjectResult<TData>) => PrimaryKeyType

    Gets the primary key of instance data. This helpful method shortcuts having to figure out the primaryKey's name and then reaching inside the instance data to get the primary key.

    Type declaration

    retrieve: <TData extends Readonly<{ [s: string]: any }>>(
        primaryKey: PrimaryKeyType,
    ) => Promise<
        Maybe<
            OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
        >,
    >

    Attempts to get an instance by its id

    save: <TData extends Readonly<{ [s: string]: any }>>(
        instance: OrmModelInstance<
            TData,
            TModelExtensions,
            TModelInstanceExtensions,
        >,
    ) => Promise<
        OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
    >

    Save the model

    Type declaration

    search: <TData extends Readonly<{ [s: string]: any }>>(
        query: OrmSearch,
    ) => Promise<
        Readonly<
            {
                instances: readonly OrmModelInstance<
                    TData,
                    OrmModel<TData, TModelExtensions, TModelInstanceExtensions>,
                    object,
                >[];
                page?: any;
            },
        >,
    >

    Searches instances by the provided search query

    searchOne: <TData extends Readonly<{ [s: string]: any }>>(
        query: Omit<OrmSearch, "take">,
    ) => Promise<
        | undefined
        | OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>,
    >

    Searches for a single instance with the given query.