@decaf-ts/db-decorators 0.15.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/index.cjs +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/types/identity/index.d.cts +1 -1
- package/lib/types/identity/index.d.mts +1 -1
- package/lib/types/index.d.cts +8 -8
- package/lib/types/index.d.mts +8 -8
- package/lib/types/interfaces/BulkCrudOperator.d.cts +2 -2
- package/lib/types/interfaces/BulkCrudOperator.d.mts +2 -2
- package/lib/types/interfaces/Contextual.d.cts +2 -2
- package/lib/types/interfaces/Contextual.d.mts +2 -2
- package/lib/types/interfaces/CrudOperator.d.cts +1 -1
- package/lib/types/interfaces/CrudOperator.d.mts +1 -1
- package/lib/types/interfaces/IRepository.d.cts +2 -2
- package/lib/types/interfaces/IRepository.d.mts +2 -2
- package/lib/types/interfaces/index.d.cts +4 -4
- package/lib/types/interfaces/index.d.mts +4 -4
- package/lib/types/model/decorators.d.cts +3 -3
- package/lib/types/model/decorators.d.mts +3 -3
- package/lib/types/model/index.d.cts +4 -4
- package/lib/types/model/index.d.mts +4 -4
- package/lib/types/operations/Operations.d.cts +3 -3
- package/lib/types/operations/Operations.d.mts +3 -3
- package/lib/types/operations/OperationsRegistry.d.cts +3 -3
- package/lib/types/operations/OperationsRegistry.d.mts +3 -3
- package/lib/types/operations/decorators.d.cts +3 -3
- package/lib/types/operations/decorators.d.mts +3 -3
- package/lib/types/operations/index.d.cts +5 -5
- package/lib/types/operations/index.d.mts +5 -5
- package/lib/types/operations/types.d.cts +3 -3
- package/lib/types/operations/types.d.mts +3 -3
- package/lib/types/overrides/Model.d.cts +2 -2
- package/lib/types/overrides/Model.d.mts +2 -2
- package/lib/types/overrides/index.d.cts +4 -4
- package/lib/types/overrides/index.d.mts +4 -4
- package/lib/types/repository/Context.d.cts +4 -4
- package/lib/types/repository/Context.d.mts +4 -4
- package/lib/types/repository/Repository.d.cts +3 -3
- package/lib/types/repository/Repository.d.mts +3 -3
- package/lib/types/repository/constants.d.cts +1 -1
- package/lib/types/repository/constants.d.mts +1 -1
- package/lib/types/repository/index.d.cts +7 -7
- package/lib/types/repository/index.d.mts +7 -7
- package/lib/types/repository/types.d.cts +3 -3
- package/lib/types/repository/types.d.mts +3 -3
- package/lib/types/repository/utils.d.cts +3 -3
- package/lib/types/repository/utils.d.mts +3 -3
- package/lib/types/validation/decorators.d.cts +3 -3
- package/lib/types/validation/decorators.d.mts +3 -3
- package/lib/types/validation/index.d.cts +4 -4
- package/lib/types/validation/index.d.mts +4 -4
- package/lib/types/validation/validators/index.d.cts +3 -3
- package/lib/types/validation/validators/index.d.mts +3 -3
- package/package.json +1 -1
- package/lib/types/identity/decorators.d.ts +0 -8
- package/lib/types/identity/index.d.ts +0 -6
- package/lib/types/index.d.ts +0 -15
- package/lib/types/interfaces/BulkCrudOperator.d.ts +0 -47
- package/lib/types/interfaces/Contextual.d.ts +0 -23
- package/lib/types/interfaces/CrudOperator.d.ts +0 -46
- package/lib/types/interfaces/IRepository.d.ts +0 -19
- package/lib/types/interfaces/index.d.ts +0 -9
- package/lib/types/model/constants.d.ts +0 -37
- package/lib/types/model/decorators.d.ts +0 -145
- package/lib/types/model/index.d.ts +0 -9
- package/lib/types/model/model.d.ts +0 -6
- package/lib/types/model/validation.d.ts +0 -57
- package/lib/types/operations/Operations.d.ts +0 -80
- package/lib/types/operations/OperationsRegistry.d.ts +0 -72
- package/lib/types/operations/constants.d.ts +0 -106
- package/lib/types/operations/decorators.d.ts +0 -348
- package/lib/types/operations/index.d.ts +0 -10
- package/lib/types/operations/types.d.ts +0 -60
- package/lib/types/overrides/Metadata.d.ts +0 -54
- package/lib/types/overrides/Model.d.ts +0 -84
- package/lib/types/overrides/ModelBuilderExtensions.d.ts +0 -15
- package/lib/types/overrides/index.d.ts +0 -10
- package/lib/types/overrides/overrides.d.ts +0 -1
- package/lib/types/repository/Context.d.ts +0 -112
- package/lib/types/repository/Repository.d.ts +0 -352
- package/lib/types/repository/constants.d.ts +0 -9
- package/lib/types/repository/errors.d.ts +0 -126
- package/lib/types/repository/index.d.ts +0 -12
- package/lib/types/repository/types.d.ts +0 -62
- package/lib/types/repository/utils.d.ts +0 -34
- package/lib/types/repository/wrappers.d.ts +0 -39
- package/lib/types/validation/constants.d.ts +0 -45
- package/lib/types/validation/decorators.d.ts +0 -143
- package/lib/types/validation/index.d.ts +0 -4
- package/lib/types/validation/validation.d.ts +0 -41
- package/lib/types/validation/validators/ReadOnlyValidator.d.ts +0 -47
- package/lib/types/validation/validators/TimestampValidator.d.ts +0 -48
- package/lib/types/validation/validators/UpdateValidator.d.ts +0 -40
- package/lib/types/validation/validators/index.d.ts +0 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from "./validators/index.
|
|
2
|
-
export * from "./constants.
|
|
3
|
-
export * from "./decorators.
|
|
4
|
-
export * from "./validation.
|
|
1
|
+
export * from "./validators/index.d.cts";
|
|
2
|
+
export * from "./constants.d.cts";
|
|
3
|
+
export * from "./decorators.d.cts";
|
|
4
|
+
export * from "./validation.d.cts";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from "./validators/index.
|
|
2
|
-
export * from "./constants.
|
|
3
|
-
export * from "./decorators.
|
|
4
|
-
export * from "./validation.
|
|
1
|
+
export * from "./validators/index.d.mts";
|
|
2
|
+
export * from "./constants.d.mts";
|
|
3
|
+
export * from "./decorators.d.mts";
|
|
4
|
+
export * from "./validation.d.mts";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from "./ReadOnlyValidator.
|
|
2
|
-
export * from "./TimestampValidator.
|
|
3
|
-
export * from "./UpdateValidator.
|
|
1
|
+
export * from "./ReadOnlyValidator.d.cts";
|
|
2
|
+
export * from "./TimestampValidator.d.cts";
|
|
3
|
+
export * from "./UpdateValidator.d.cts";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from "./ReadOnlyValidator.
|
|
2
|
-
export * from "./TimestampValidator.
|
|
3
|
-
export * from "./UpdateValidator.
|
|
1
|
+
export * from "./ReadOnlyValidator.d.mts";
|
|
2
|
+
export * from "./TimestampValidator.d.mts";
|
|
3
|
+
export * from "./UpdateValidator.d.mts";
|
package/package.json
CHANGED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @description Decorator that marks a property as an ID field
|
|
3
|
-
* @summary Creates a composite decorator that marks a property as required, readonly, and as the ID field for database operations
|
|
4
|
-
* @return {PropertyDecorator} A decorator that can be applied to class properties
|
|
5
|
-
* @function id
|
|
6
|
-
* @category Property Decorators
|
|
7
|
-
*/
|
|
8
|
-
export declare function id(): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor | number) => void;
|
package/lib/types/index.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export * from "./identity";
|
|
2
|
-
export * from "./interfaces";
|
|
3
|
-
export * from "./model";
|
|
4
|
-
export * from "./operations";
|
|
5
|
-
export * from "./overrides";
|
|
6
|
-
export * from "./repository";
|
|
7
|
-
export * from "./validation";
|
|
8
|
-
/**
|
|
9
|
-
* @description Current version of the reflection package
|
|
10
|
-
* @summary Stores the semantic version number of the package
|
|
11
|
-
* @const VERSION
|
|
12
|
-
* @memberOf module:db-decorators
|
|
13
|
-
*/
|
|
14
|
-
export declare const VERSION = "0.14.0";
|
|
15
|
-
export declare const PACKAGE_NAME = "@decaf-ts/db-decorators";
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { CrudOperator } from "./CrudOperator";
|
|
2
|
-
import { PrimaryKeyType } from "../repository/index";
|
|
3
|
-
/**
|
|
4
|
-
* @description Interface for bulk CRUD operations
|
|
5
|
-
* @summary Extends the basic CRUD operations to support bulk operations on multiple models at once
|
|
6
|
-
* @template M - The model type
|
|
7
|
-
* @interface BulkCrudOperator
|
|
8
|
-
* @memberOf module:db-decorators
|
|
9
|
-
*/
|
|
10
|
-
export interface BulkCrudOperator<M> extends CrudOperator<M> {
|
|
11
|
-
/**
|
|
12
|
-
* @description Creates multiple model instances in the database
|
|
13
|
-
* @summary Bulk operation to create multiple models at once
|
|
14
|
-
* @template M - The model type
|
|
15
|
-
* @param {M[]} models - Array of model instances to create
|
|
16
|
-
* @param {...any[]} args - Additional arguments
|
|
17
|
-
* @return {Promise<M[]>} Promise resolving to the created model instances
|
|
18
|
-
*/
|
|
19
|
-
createAll(models: M[], ...args: any[]): Promise<M[]>;
|
|
20
|
-
/**
|
|
21
|
-
* @description Retrieves multiple model instances from the database by their keys
|
|
22
|
-
* @summary Bulk operation to read multiple models at once
|
|
23
|
-
* @template M - The model type
|
|
24
|
-
* @param {(PrimaryKeyType[])} keys - Array of primary keys to retrieve
|
|
25
|
-
* @param {...any[]} args - Additional arguments
|
|
26
|
-
* @return {Promise<M[]>} Promise resolving to the retrieved model instances
|
|
27
|
-
*/
|
|
28
|
-
readAll(keys: PrimaryKeyType[], ...args: any[]): Promise<M[]>;
|
|
29
|
-
/**
|
|
30
|
-
* @description Updates multiple model instances in the database
|
|
31
|
-
* @summary Bulk operation to update multiple models at once
|
|
32
|
-
* @template M - The model type
|
|
33
|
-
* @param {M[]} models - Array of model instances to update
|
|
34
|
-
* @param {...any[]} args - Additional arguments
|
|
35
|
-
* @return {Promise<M[]>} Promise resolving to the updated model instances
|
|
36
|
-
*/
|
|
37
|
-
updateAll(models: M[], ...args: any[]): Promise<M[]>;
|
|
38
|
-
/**
|
|
39
|
-
* @description Deletes multiple model instances from the database by their keys
|
|
40
|
-
* @summary Bulk operation to delete multiple models at once
|
|
41
|
-
* @template M - The model type
|
|
42
|
-
* @param {(PrimaryKeyType[])} keys - Array of primary keys to delete
|
|
43
|
-
* @param {...any[]} args - Additional arguments
|
|
44
|
-
* @return {Promise<M[]>} Promise resolving to the deleted model instances
|
|
45
|
-
*/
|
|
46
|
-
deleteAll(keys: PrimaryKeyType[], ...args: any[]): Promise<M[]>;
|
|
47
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { OperationKeys } from "../operations";
|
|
2
|
-
import { Context } from "../repository";
|
|
3
|
-
export type FlagsOf<C extends Context<any>> = C extends Context<infer T> ? T : never;
|
|
4
|
-
/**
|
|
5
|
-
* @description Interface for context-aware operations
|
|
6
|
-
* @summary Provides context management for database operations
|
|
7
|
-
* @template F - Type extending RepositoryFlags, defaults to RepositoryFlags
|
|
8
|
-
* @template C - Type extending Context<F>, defaults to Context<F>
|
|
9
|
-
* @interface Contextual
|
|
10
|
-
* @memberOf module:db-decorators
|
|
11
|
-
*/
|
|
12
|
-
export interface Contextual<C extends Context<any> = Context<any>> {
|
|
13
|
-
/**
|
|
14
|
-
* @description Creates a context for a specific operation
|
|
15
|
-
* @summary Generates an operation-specific context with custom flags
|
|
16
|
-
* @param {(OperationKeys.CREATE|OperationKeys.READ|OperationKeys.UPDATE|OperationKeys.DELETE)} operation - The operation type
|
|
17
|
-
* @template F - Type extending RepositoryFlags, defaults to RepositoryFlags
|
|
18
|
-
* @param {Partial<F>} overrides - Custom flag overrides for this context
|
|
19
|
-
* @param {...any[]} args - Additional arguments
|
|
20
|
-
* @return {Promise<C>} Promise resolving to the created context
|
|
21
|
-
*/
|
|
22
|
-
context(operation: ((...args: any[]) => any) | OperationKeys.CREATE | OperationKeys.READ | OperationKeys.UPDATE | OperationKeys.DELETE | string, overrides: Partial<FlagsOf<C>>, ...args: any[]): Promise<C>;
|
|
23
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { PrimaryKeyType } from "../repository/index";
|
|
2
|
-
/**
|
|
3
|
-
* @description Basic CRUD operations interface
|
|
4
|
-
* @summary Exposes a standard Create, Read, Update, Delete API for database operations
|
|
5
|
-
* @template M - The model type
|
|
6
|
-
* @interface CrudOperator
|
|
7
|
-
* @memberOf module:db-decorators
|
|
8
|
-
*/
|
|
9
|
-
export interface CrudOperator<M> {
|
|
10
|
-
/**
|
|
11
|
-
* @description Creates a new model instance in the database
|
|
12
|
-
* @summary Create a new model
|
|
13
|
-
* @template M - The model type
|
|
14
|
-
* @param {M} model - The model instance to create
|
|
15
|
-
* @param {...any[]} args - Additional arguments
|
|
16
|
-
* @return {Promise<M>} Promise resolving to the created model instance
|
|
17
|
-
*/
|
|
18
|
-
create(model: M, ...args: any[]): Promise<M>;
|
|
19
|
-
/**
|
|
20
|
-
* @description Retrieves a model instance from the database by its key
|
|
21
|
-
* @summary Read a model
|
|
22
|
-
* @template M - The model type
|
|
23
|
-
* @param {PrimaryKeyType} key - The primary key of the model to retrieve
|
|
24
|
-
* @param {...any[]} args - Additional arguments
|
|
25
|
-
* @return {Promise<M>} Promise resolving to the retrieved model instance
|
|
26
|
-
*/
|
|
27
|
-
read(key: PrimaryKeyType, ...args: any[]): Promise<M>;
|
|
28
|
-
/**
|
|
29
|
-
* @description Updates a model instance in the database
|
|
30
|
-
* @summary Update a model
|
|
31
|
-
* @template M - The model type
|
|
32
|
-
* @param {M} model - The model instance to update
|
|
33
|
-
* @param {...any[]} args - Additional arguments
|
|
34
|
-
* @return {Promise<M>} Promise resolving to the updated model instance
|
|
35
|
-
*/
|
|
36
|
-
update(model: M, ...args: any[]): Promise<M>;
|
|
37
|
-
/**
|
|
38
|
-
* @description Deletes a model instance from the database by its key
|
|
39
|
-
* @summary Delete a model
|
|
40
|
-
* @template M - The model type
|
|
41
|
-
* @param {PrimaryKeyType} key - The primary key of the model to delete
|
|
42
|
-
* @param {...any[]} args - Additional arguments
|
|
43
|
-
* @return {Promise<M>} Promise resolving to the deleted model instance
|
|
44
|
-
*/
|
|
45
|
-
delete(key: PrimaryKeyType, ...args: any[]): Promise<M>;
|
|
46
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Model, ModelConstructor } from "@decaf-ts/decorator-validation";
|
|
2
|
-
import { BulkCrudOperator } from "./BulkCrudOperator";
|
|
3
|
-
import { Context, RepositoryFlags } from "../repository";
|
|
4
|
-
/**
|
|
5
|
-
* @description Repository interface for database operations
|
|
6
|
-
* @summary Interface holding basic CRUD APIs for database models, providing standard operations and metadata
|
|
7
|
-
* @template M - Type extending Model
|
|
8
|
-
* @template F - Type extending RepositoryFlags, defaults to RepositoryFlags
|
|
9
|
-
* @template C - Type extending Context<F>, defaults to Context<F>
|
|
10
|
-
* @interface IRepository
|
|
11
|
-
* @memberOf module:db-decorators
|
|
12
|
-
*/
|
|
13
|
-
export interface IRepository<M extends Model<boolean>, C extends Context<any> = Context<RepositoryFlags>> extends BulkCrudOperator<M> {
|
|
14
|
-
/**
|
|
15
|
-
* @description The constructor of the model class
|
|
16
|
-
* @summary Reference to the model class constructor used to create new instances
|
|
17
|
-
*/
|
|
18
|
-
readonly class: ModelConstructor<M>;
|
|
19
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @description Exports for the interfaces module.
|
|
3
|
-
* @summary This file exports all the necessary components for the interfaces functionality, including BulkCrudOperator, Contextual, CrudOperator, and IRepository.
|
|
4
|
-
* @module db-decorators/interfaces
|
|
5
|
-
*/
|
|
6
|
-
export * from "./BulkCrudOperator";
|
|
7
|
-
export * from "./Contextual";
|
|
8
|
-
export * from "./CrudOperator";
|
|
9
|
-
export * from "./IRepository";
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @description Database reflection keys
|
|
3
|
-
* @summary Collection of keys used for reflection metadata in database operations
|
|
4
|
-
* @const DBKeys
|
|
5
|
-
* @memberOf module:db-decorators
|
|
6
|
-
*/
|
|
7
|
-
export declare const DBKeys: {
|
|
8
|
-
REFLECT: string;
|
|
9
|
-
REPOSITORY: string;
|
|
10
|
-
CLASS: string;
|
|
11
|
-
ID: string;
|
|
12
|
-
INDEX: string;
|
|
13
|
-
UNIQUE: string;
|
|
14
|
-
SERIALIZE: string;
|
|
15
|
-
READONLY: string;
|
|
16
|
-
TIMESTAMP: string;
|
|
17
|
-
TRANSIENT: string;
|
|
18
|
-
HASH: string;
|
|
19
|
-
COMPOSED: string;
|
|
20
|
-
GENERATED: string;
|
|
21
|
-
VERSION: string;
|
|
22
|
-
ORIGINAL: string;
|
|
23
|
-
};
|
|
24
|
-
/**
|
|
25
|
-
* @description Default separator character for composite indexes
|
|
26
|
-
* @summary The default separator character used when concatenating multiple fields into a single index
|
|
27
|
-
* @const DefaultSeparator
|
|
28
|
-
* @memberOf module:db-decorators
|
|
29
|
-
*/
|
|
30
|
-
export declare const DefaultSeparator = "_";
|
|
31
|
-
/**
|
|
32
|
-
* @description Default format for timestamp fields
|
|
33
|
-
* @summary Standard date format string used for timestamp fields in database models
|
|
34
|
-
* @const DEFAULT_TIMESTAMP_FORMAT
|
|
35
|
-
* @memberOf module:db-decorators
|
|
36
|
-
*/
|
|
37
|
-
export declare const DEFAULT_TIMESTAMP_FORMAT = "dd/MM/yyyy HH:mm:ss:S";
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import { Model } from "@decaf-ts/decorator-validation";
|
|
2
|
-
import { IRepository } from "../interfaces/IRepository";
|
|
3
|
-
import { CrudOperations, GroupSort } from "../operations";
|
|
4
|
-
import { ContextOfRepository } from "../repository/index";
|
|
5
|
-
export declare function generated(type?: string): (target: object, prop?: any) => void;
|
|
6
|
-
/**
|
|
7
|
-
* @description Hashes a property value during create or update operations
|
|
8
|
-
* @summary Callback function used by the hash decorator to apply hashing to a property value
|
|
9
|
-
* @template M - Type extending Model
|
|
10
|
-
* @template R - Type extending IRepository
|
|
11
|
-
* @template V - Type for metadata
|
|
12
|
-
* @template F - Type extending RepositoryFlags
|
|
13
|
-
* @template C - Type extending Context
|
|
14
|
-
* @param {C} context - The operation context
|
|
15
|
-
* @param {V} data - Metadata for the operation
|
|
16
|
-
* @param key - The property key to hash
|
|
17
|
-
* @param {M} model - The model being processed
|
|
18
|
-
* @param {M} [oldModel] - The previous model state (for updates)
|
|
19
|
-
* @return {void}
|
|
20
|
-
* @function hashOnCreateUpdate
|
|
21
|
-
* @memberOf module:db-decorators
|
|
22
|
-
*/
|
|
23
|
-
export declare function hashOnCreateUpdate<M extends Model, R extends IRepository<M, any>, V extends object>(this: R, context: ContextOfRepository<R>, data: V, key: keyof M, model: M, oldModel?: M): void;
|
|
24
|
-
/**
|
|
25
|
-
* @description Creates a decorator that hashes a property value
|
|
26
|
-
* @summary Decorator that automatically hashes a property value during create and update operations
|
|
27
|
-
* @return {PropertyDecorator} A decorator that can be applied to class properties
|
|
28
|
-
* @function hash
|
|
29
|
-
* @category Property Decorators
|
|
30
|
-
*/
|
|
31
|
-
export declare function hash(): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor | number) => void;
|
|
32
|
-
/**
|
|
33
|
-
* @description Metadata for composed property decorators
|
|
34
|
-
* @summary Configuration options for property composition from other properties
|
|
35
|
-
* @typedef {Object} ComposedFromMetadata
|
|
36
|
-
* @property {string[]} args - Property names to compose from
|
|
37
|
-
* @property {string} separator - Character used to join the composed values
|
|
38
|
-
* @property {boolean} hashResult - Whether to hash the composed result
|
|
39
|
-
* @property {"keys"|"values"} type - Whether to use property keys or values
|
|
40
|
-
* @property {string} [prefix] - Optional prefix to add to the composed value
|
|
41
|
-
* @property {string} [suffix] - Optional suffix to add to the composed value
|
|
42
|
-
* @memberOf module:db-decorators
|
|
43
|
-
*/
|
|
44
|
-
export type ComposedFromMetadata = {
|
|
45
|
-
args: string[];
|
|
46
|
-
separator: string;
|
|
47
|
-
hashResult: boolean;
|
|
48
|
-
type: "keys" | "values";
|
|
49
|
-
prefix?: string;
|
|
50
|
-
suffix?: string;
|
|
51
|
-
filterEmpty: boolean | string[];
|
|
52
|
-
};
|
|
53
|
-
export declare function composeAttributeValue<M extends Model>(model: M, metadata: ComposedFromMetadata): any;
|
|
54
|
-
/**
|
|
55
|
-
* @description Composes a property value from other properties during create or update operations
|
|
56
|
-
* @summary Callback function used by composed decorators to generate a property value from other properties
|
|
57
|
-
* @template M - Type extending Model
|
|
58
|
-
* @template R - Type extending IRepository
|
|
59
|
-
* @template V - Type extending ComposedFromMetadata
|
|
60
|
-
* @template F - Type extending RepositoryFlags
|
|
61
|
-
* @template C - Type extending Context
|
|
62
|
-
* @param {C} context - The operation context
|
|
63
|
-
* @param {V} data - Metadata for the composition
|
|
64
|
-
* @param key - The property key to set the composed value on
|
|
65
|
-
* @param {M} model - The model being processed
|
|
66
|
-
* @return {void}
|
|
67
|
-
* @function composedFromCreateUpdate
|
|
68
|
-
* @memberOf module:db-decorators
|
|
69
|
-
*/
|
|
70
|
-
export declare function composedFromCreateUpdate<M extends Model, R extends IRepository<M, any>, V extends ComposedFromMetadata>(this: R, context: ContextOfRepository<R>, data: V, key: keyof M, model: M): void;
|
|
71
|
-
/**
|
|
72
|
-
* @description Creates a decorator that composes a property value from property keys
|
|
73
|
-
* @summary Decorator that generates a property value by joining the names of other properties
|
|
74
|
-
* @param {string[]} args - Property names to compose from
|
|
75
|
-
* @param {string} [separator=DefaultSeparator] - Character used to join the property names
|
|
76
|
-
* @param {boolean} [hash=false] - Whether to hash the composed result
|
|
77
|
-
* @param {string} [prefix=""] - Optional prefix to add to the composed value
|
|
78
|
-
* @param {string} [suffix=""] - Optional suffix to add to the composed value
|
|
79
|
-
* @param {GroupSort} groupsort - GroupSort configuration
|
|
80
|
-
* @return {PropertyDecorator} A decorator that can be applied to class properties
|
|
81
|
-
* @function composedFromKeys
|
|
82
|
-
* @category PropertyDecorators
|
|
83
|
-
*/
|
|
84
|
-
export declare function composedFromKeys(args: string[], separator?: string, filterEmpty?: boolean | string[], hash?: boolean, prefix?: string, suffix?: string, groupsort?: GroupSort): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
85
|
-
/**
|
|
86
|
-
* @description Creates a decorator that composes a property value from property values
|
|
87
|
-
* @summary Decorator that generates a property value by joining the values of other properties
|
|
88
|
-
* @param {string[]} args - Property names whose values will be composed
|
|
89
|
-
* @param {string} [separator=DefaultSeparator] - Character used to join the property values
|
|
90
|
-
* @param {boolean} [hash=false] - Whether to hash the composed result
|
|
91
|
-
* @param {string} [prefix=""] - Optional prefix to add to the composed value
|
|
92
|
-
* @param {string} [suffix=""] - Optional suffix to add to the composed value
|
|
93
|
-
* @param {GroupSort} groupsort - GroupSort configuration
|
|
94
|
-
* @return {PropertyDecorator} A decorator that can be applied to class properties
|
|
95
|
-
* @function composed
|
|
96
|
-
* @category PropertyDecorators
|
|
97
|
-
*/
|
|
98
|
-
export declare function composed(args: string[], separator?: string, filterEmpty?: boolean | string[], hash?: boolean, prefix?: string, suffix?: string, groupsort?: GroupSort): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
99
|
-
/**
|
|
100
|
-
* @description Creates a function that updates a version property during operations
|
|
101
|
-
* @summary Factory function that generates a callback for incrementing version numbers
|
|
102
|
-
* @param {CrudOperations} operation - The type of operation (CREATE or UPDATE)
|
|
103
|
-
* @return {Function} A callback function that updates the version property
|
|
104
|
-
* @template M - Type extending Model
|
|
105
|
-
* @template R - Type extending IRepository
|
|
106
|
-
* @template V - Type for metadata
|
|
107
|
-
* @template F - Type extending RepositoryFlags
|
|
108
|
-
* @template C - Type extending Context
|
|
109
|
-
* @function versionCreateUpdate
|
|
110
|
-
* @memberOf module:db-decorators
|
|
111
|
-
* @mermaid
|
|
112
|
-
* sequenceDiagram
|
|
113
|
-
* participant Caller
|
|
114
|
-
* participant versionCreateUpdate
|
|
115
|
-
*
|
|
116
|
-
* Caller->>versionCreateUpdate: operation
|
|
117
|
-
* versionCreateUpdate-->>Caller: callback function
|
|
118
|
-
* Note over Caller,versionCreateUpdate: When callback is executed:
|
|
119
|
-
* Caller->>versionCreateUpdate: context, data, key, model
|
|
120
|
-
* alt operation is CREATE
|
|
121
|
-
* versionCreateUpdate->>versionCreateUpdate: set version to 1
|
|
122
|
-
* else operation is UPDATE
|
|
123
|
-
* versionCreateUpdate->>versionCreateUpdate: increment version
|
|
124
|
-
* else invalid operation
|
|
125
|
-
* versionCreateUpdate->>versionCreateUpdate: throw error
|
|
126
|
-
* end
|
|
127
|
-
* versionCreateUpdate-->>Caller: void
|
|
128
|
-
*/
|
|
129
|
-
export declare function versionCreateUpdate(operation: CrudOperations): <M extends Model, R extends IRepository<M>, V extends object>(this: R, context: ContextOfRepository<R>, data: V, key: keyof M, model: M, oldModel?: M) => void;
|
|
130
|
-
/**
|
|
131
|
-
* @description Creates a decorator for versioning a property in a model
|
|
132
|
-
* @summary This decorator applies multiple sub-decorators to handle version management during create and update operations
|
|
133
|
-
* @return {PropertyDecorator} A composite decorator that sets the type to Number, manages version updates, and adds versioning metadata
|
|
134
|
-
* @function version
|
|
135
|
-
* @category PropertyDecorators
|
|
136
|
-
*/
|
|
137
|
-
export declare function version(): (target: any, propertyKey?: any) => any;
|
|
138
|
-
/**
|
|
139
|
-
* @description Creates a decorator that marks a property as transient
|
|
140
|
-
* @summary Decorator that indicates a property should not be persisted to the database
|
|
141
|
-
* @return {PropertyDecorator} A decorator that can be applied to class properties
|
|
142
|
-
* @function transient
|
|
143
|
-
* @category PropertyDecorators
|
|
144
|
-
*/
|
|
145
|
-
export declare function transient(): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @description Exports for the model module.
|
|
3
|
-
* @summary This file exports all the necessary components for the model functionality, including constants, decorators, and the model itself.
|
|
4
|
-
* @module db-decorators/model
|
|
5
|
-
*/
|
|
6
|
-
export * from "./constants";
|
|
7
|
-
export * from "./decorators";
|
|
8
|
-
export * from "./model";
|
|
9
|
-
export * from "./validation";
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { ConditionalAsync, ModelErrorDefinition } from "@decaf-ts/decorator-validation";
|
|
2
|
-
declare module "@decaf-ts/decorator-validation" {
|
|
3
|
-
interface Model<Async extends boolean = false> {
|
|
4
|
-
hasErrors(previousVersion?: Model | any, ...exclusions: any[]): ConditionalAsync<Async, ModelErrorDefinition | undefined>;
|
|
5
|
-
}
|
|
6
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { ConditionalAsync, Model, ModelConditionalAsync } from "@decaf-ts/decorator-validation";
|
|
2
|
-
/**
|
|
3
|
-
* @description
|
|
4
|
-
* Retrieves validation decorator definitions from a model for update operations, including
|
|
5
|
-
* support for special handling of list decorators.
|
|
6
|
-
*
|
|
7
|
-
* @summary
|
|
8
|
-
* Iterates over the model's own enumerable properties and filters out those specified in the
|
|
9
|
-
* `propsToIgnore` array. For each remaining property, retrieves validation decorators specific
|
|
10
|
-
* to update operations using the `UpdateValidationKeys.REFLECT` key. Additionally, it explicitly
|
|
11
|
-
* checks for and appends any `LIST` type decorators to ensure proper validation of collection types.
|
|
12
|
-
*
|
|
13
|
-
* @template M - A generic parameter extending the `Model` class, representing the model type being inspected.
|
|
14
|
-
*
|
|
15
|
-
* @param {M} model - The model instance whose properties are being inspected for update-related validations.
|
|
16
|
-
* @param {string[]} propsToIgnore - A list of property names to exclude from the validation decorator retrieval process.
|
|
17
|
-
*
|
|
18
|
-
* @return {ValidationPropertyDecoratorDefinition[]} An array of validation decorator definitions, including both
|
|
19
|
-
* update-specific and list-type decorators, excluding those for ignored properties.
|
|
20
|
-
*
|
|
21
|
-
* @function getValidatableUpdateProps
|
|
22
|
-
*/
|
|
23
|
-
export declare function getValidatableUpdateProps<M extends Model>(model: M, propsToIgnore: string[]): any[];
|
|
24
|
-
export declare function validateDecorator<M extends Model, Async extends boolean = false>(newModel: M, oldModel: M, prop: string, decorator: any, async?: Async): ConditionalAsync<Async, string | undefined>;
|
|
25
|
-
export declare function validateDecorators<M extends Model, Async extends boolean = false>(newModel: M, oldModel: M, prop: string, decorators: any, async?: Async): ConditionalAsync<Async, Record<string, string>> | undefined;
|
|
26
|
-
/**
|
|
27
|
-
* @description Validates changes between two model versions
|
|
28
|
-
* @summary Compares an old and new model version to validate update operations
|
|
29
|
-
* @template M - Type extending Model
|
|
30
|
-
* @param {M} oldModel - The original model version
|
|
31
|
-
* @param {M} newModel - The updated model version
|
|
32
|
-
* @param {boolean} async - A flag indicating whether validation should be asynchronous.
|
|
33
|
-
* @param {...string[]} propsToIgnore - Properties to exclude from validation
|
|
34
|
-
* @return {ModelErrorDefinition|undefined} Error definition if validation fails, undefined otherwise
|
|
35
|
-
* @function validateCompare
|
|
36
|
-
* @memberOf module:db-decorators
|
|
37
|
-
* @mermaid
|
|
38
|
-
* sequenceDiagram
|
|
39
|
-
* participant Caller
|
|
40
|
-
* participant validateCompare
|
|
41
|
-
* participant Reflection
|
|
42
|
-
* participant Validation
|
|
43
|
-
*
|
|
44
|
-
* Caller->>validateCompare: oldModel, newModel, propsToIgnore
|
|
45
|
-
* validateCompare->>Reflection: get decorated properties
|
|
46
|
-
* Reflection-->>validateCompare: property decorators
|
|
47
|
-
* loop For each decorated property
|
|
48
|
-
* validateCompare->>Validation: get validator
|
|
49
|
-
* Validation-->>validateCompare: validator
|
|
50
|
-
* validateCompare->>validateCompare: validate property update
|
|
51
|
-
* end
|
|
52
|
-
* loop For nested models
|
|
53
|
-
* validateCompare->>validateCompare: validate nested models
|
|
54
|
-
* end
|
|
55
|
-
* validateCompare-->>Caller: validation errors or undefined
|
|
56
|
-
*/
|
|
57
|
-
export declare function validateCompare<M extends Model<any>>(oldModel: M, newModel: M, async: boolean, ...propsToIgnore: string[]): ModelConditionalAsync<M>;
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { Model } from "@decaf-ts/decorator-validation";
|
|
2
|
-
import { OperationHandler } from "./types";
|
|
3
|
-
import { OperationKeys } from "./constants";
|
|
4
|
-
import { IRepository } from "../interfaces";
|
|
5
|
-
/**
|
|
6
|
-
* @description Static utility class for database operation management
|
|
7
|
-
* @summary Provides functionality for registering, retrieving, and managing database operation handlers
|
|
8
|
-
* @class Operations
|
|
9
|
-
* @template M - Model type
|
|
10
|
-
* @template R - Repository type
|
|
11
|
-
* @template V - Metadata type
|
|
12
|
-
* @example
|
|
13
|
-
* // Register a handler for a create operation
|
|
14
|
-
* Operations.register(myHandler, OperationKeys.CREATE, targetModel, 'propertyName');
|
|
15
|
-
*
|
|
16
|
-
* // Get handlers for a specific operation
|
|
17
|
-
* const handlers = Operations.get(targetModel.constructor.name, 'propertyName', 'onCreate');
|
|
18
|
-
*
|
|
19
|
-
* @mermaid
|
|
20
|
-
* classDiagram
|
|
21
|
-
* class Operations {
|
|
22
|
-
* -registry: OperationsRegistry
|
|
23
|
-
* +getHandlerName(handler)
|
|
24
|
-
* +key(str)
|
|
25
|
-
* +get(targetName, propKey, operation)
|
|
26
|
-
* -getOpRegistry()
|
|
27
|
-
* +register(handler, operation, target, propKey)
|
|
28
|
-
* }
|
|
29
|
-
* Operations --> OperationsRegistry : uses
|
|
30
|
-
*/
|
|
31
|
-
export declare class Operations {
|
|
32
|
-
private static registry;
|
|
33
|
-
private constructor();
|
|
34
|
-
/**
|
|
35
|
-
* @description Gets a unique name for an operation handler
|
|
36
|
-
* @summary Returns the name of the handler function or generates a hash if name is not available
|
|
37
|
-
* @param {OperationHandler<any, any, any>} handler - The handler function to get the name for
|
|
38
|
-
* @return {string} The name of the handler or a generated hash
|
|
39
|
-
*/
|
|
40
|
-
static getHandlerName(handler: OperationHandler<any, any, any>): any;
|
|
41
|
-
/**
|
|
42
|
-
* @description Generates a reflection metadata key
|
|
43
|
-
* @summary Creates a fully qualified metadata key by prefixing with the reflection namespace
|
|
44
|
-
* @param {string} str - The operation key string to prefix
|
|
45
|
-
* @return {string} The fully qualified metadata key
|
|
46
|
-
*/
|
|
47
|
-
static key(str: string): string;
|
|
48
|
-
/**
|
|
49
|
-
* @description Retrieves operation handlers for a specific target and operation
|
|
50
|
-
* @summary Gets registered handlers from the operations registry for a given target, property, and operation
|
|
51
|
-
* @template M - Model type extending Model
|
|
52
|
-
* @template R - Repository type extending IRepository
|
|
53
|
-
* @template V - Metadata type, defaults to object
|
|
54
|
-
* @template F - Repository flags extending RepositoryFlags
|
|
55
|
-
* @template C - Context type extending Context<F>
|
|
56
|
-
* @param {string | Record<string, any>} targetName - The target class name or object
|
|
57
|
-
* @param {string} propKey - The property key to get handlers for
|
|
58
|
-
* @param {string} operation - The operation key to get handlers for
|
|
59
|
-
* @return {any} The registered handlers for the specified target, property, and operation
|
|
60
|
-
*/
|
|
61
|
-
static get<M extends Model, R extends IRepository<M, any>, V = object>(targetName: string | Record<string, any>, propKey: string, operation: string): OperationHandler<M, R, V>[] | undefined;
|
|
62
|
-
/**
|
|
63
|
-
* @description Gets or initializes the operations registry
|
|
64
|
-
* @summary Returns the existing registry or creates a new one if it doesn't exist
|
|
65
|
-
* @return {OperationsRegistry} The operations registry instance
|
|
66
|
-
* @private
|
|
67
|
-
*/
|
|
68
|
-
private static getOpRegistry;
|
|
69
|
-
/**
|
|
70
|
-
* @description Registers an operation handler for a specific target and operation
|
|
71
|
-
* @summary Adds a handler to the operations registry for a given target, property, and operation
|
|
72
|
-
* @template V - Model type extending Model
|
|
73
|
-
* @param {OperationHandler<V, any, any>} handler - The handler function to register
|
|
74
|
-
* @param {OperationKeys} operation - The operation key to register the handler for
|
|
75
|
-
* @param {V} target - The target model instance
|
|
76
|
-
* @param {string | symbol} propKey - The property key to register the handler for
|
|
77
|
-
* @return {void}
|
|
78
|
-
*/
|
|
79
|
-
static register<V extends Model>(handler: OperationHandler<V, any, any>, operation: OperationKeys, target: V, propKey: string | symbol): void;
|
|
80
|
-
}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { OperationHandler } from "./types";
|
|
2
|
-
import { OperationKeys } from "./constants";
|
|
3
|
-
import { IRepository } from "../interfaces/IRepository";
|
|
4
|
-
import { Model } from "@decaf-ts/decorator-validation";
|
|
5
|
-
/**
|
|
6
|
-
* @description Registry for database operation handlers
|
|
7
|
-
* @summary Manages and stores operation handlers for different model properties and operations
|
|
8
|
-
* @class OperationsRegistry
|
|
9
|
-
* @template M - Model type
|
|
10
|
-
* @template R - Repository type
|
|
11
|
-
* @template V - Metadata type
|
|
12
|
-
* @template F - Repository flags
|
|
13
|
-
* @template C - Context type
|
|
14
|
-
* @example
|
|
15
|
-
* // Create a registry and register a handler
|
|
16
|
-
* const registry = new OperationsRegistry();
|
|
17
|
-
* registry.register(myHandler, OperationKeys.CREATE, targetModel, 'propertyName');
|
|
18
|
-
*
|
|
19
|
-
* // Get handlers for a specific operation
|
|
20
|
-
* const handlers = registry.get(targetModel.constructor.name, 'propertyName', 'onCreate');
|
|
21
|
-
*
|
|
22
|
-
* @mermaid
|
|
23
|
-
* classDiagram
|
|
24
|
-
* class OperationsRegistry {
|
|
25
|
-
* -cache: Record~string, Record~string|symbol, Record~string, Record~string, OperationHandler~~~~
|
|
26
|
-
* +get(target, propKey, operation, accum)
|
|
27
|
-
* +register(handler, operation, target, propKey)
|
|
28
|
-
* }
|
|
29
|
-
*/
|
|
30
|
-
export declare class OperationsRegistry {
|
|
31
|
-
private readonly cache;
|
|
32
|
-
/**
|
|
33
|
-
* @description Retrieves operation handlers for a specific target and operation
|
|
34
|
-
* @summary Finds all registered handlers for a given target, property, and operation, including from parent classes
|
|
35
|
-
* @template M - Model type extending Model
|
|
36
|
-
* @template R - Repository type extending IRepository
|
|
37
|
-
* @template V - Metadata type
|
|
38
|
-
* @param {string | Record<string, any>} target - The target class name or object
|
|
39
|
-
* @param {string} propKey - The property key to get handlers for
|
|
40
|
-
* @param {string} operation - The operation key to get handlers for
|
|
41
|
-
* @param {OperationHandler[]} [accum] - Accumulator for recursive calls
|
|
42
|
-
* @return {OperationHandler[] | undefined} Array of handlers or undefined if none found
|
|
43
|
-
*/
|
|
44
|
-
get<M extends Model, R extends IRepository<M, any>, V>(target: string | Record<string, any>, propKey: string, operation: string, accum?: OperationHandler<M, R, V>[]): OperationHandler<M, R, V>[] | undefined;
|
|
45
|
-
/**
|
|
46
|
-
* @description Registers an operation handler for a specific target and operation
|
|
47
|
-
* @summary Stores a handler in the registry for a given target, property, and operation
|
|
48
|
-
* @template M - Model type extending Model
|
|
49
|
-
* @template R - Repository type extending IRepository
|
|
50
|
-
* @template V - Metadata type
|
|
51
|
-
* @template F - Repository flags extending RepositoryFlags
|
|
52
|
-
* @template C - Context type extending Context<F>
|
|
53
|
-
* @param {OperationHandler} handler - The handler function to register
|
|
54
|
-
* @param {OperationKeys} operation - The operation key to register the handler for
|
|
55
|
-
* @param {M} target - The target model instance
|
|
56
|
-
* @param {string | symbol} propKey - The property key to register the handler for
|
|
57
|
-
* @return {void}
|
|
58
|
-
*/
|
|
59
|
-
register<M extends Model, R extends IRepository<M, any>, V>(handler: OperationHandler<M, R, V>, operation: OperationKeys, target: M, propKey: string | symbol): void;
|
|
60
|
-
private resolveOwner;
|
|
61
|
-
private resolveTargetName;
|
|
62
|
-
private resolveFlavour;
|
|
63
|
-
private selectHandlers;
|
|
64
|
-
private firstBucket;
|
|
65
|
-
/**
|
|
66
|
-
* @description Gets a unique name for an operation handler
|
|
67
|
-
* @summary Returns the name of the handler function or generates a hash if name is not available
|
|
68
|
-
* @param {OperationHandler<any, any, any>} handler - The handler function to get the name for
|
|
69
|
-
* @return {string} The name of the handler or a generated hash
|
|
70
|
-
*/
|
|
71
|
-
static getHandlerName(handler: OperationHandler<any, any, any>): any;
|
|
72
|
-
}
|