@decaf-ts/db-decorators 0.6.0 → 0.6.2
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/LICENSE.md +21 -157
- package/README.md +571 -10
- package/dist/db-decorators.cjs +1375 -327
- package/dist/db-decorators.esm.cjs +1375 -328
- package/lib/esm/identity/decorators.d.ts +7 -0
- package/lib/esm/identity/decorators.js +11 -4
- package/lib/esm/identity/index.js +3 -3
- package/lib/esm/identity/utils.d.ts +36 -23
- package/lib/esm/identity/utils.js +38 -25
- package/lib/esm/index.d.ts +12 -27
- package/lib/esm/index.js +13 -28
- package/lib/esm/interfaces/BulkCrudOperator.d.ts +39 -0
- package/lib/esm/interfaces/BulkCrudOperator.js +1 -1
- package/lib/esm/interfaces/Contextual.d.ts +19 -2
- package/lib/esm/interfaces/Contextual.js +1 -1
- package/lib/esm/interfaces/CrudOperator.d.ts +26 -23
- package/lib/esm/interfaces/CrudOperator.js +1 -1
- package/lib/esm/interfaces/IRepository.d.ts +10 -2
- package/lib/esm/interfaces/IRepository.js +1 -1
- package/lib/esm/interfaces/index.js +5 -5
- package/lib/esm/model/constants.d.ts +11 -13
- package/lib/esm/model/constants.js +12 -14
- package/lib/esm/model/decorators.d.ts +112 -23
- package/lib/esm/model/decorators.js +119 -29
- package/lib/esm/model/index.d.ts +1 -0
- package/lib/esm/model/index.js +7 -6
- package/lib/esm/model/model.d.ts +2 -141
- package/lib/esm/model/model.js +2 -13
- package/lib/esm/model/overrides.d.ts +1 -0
- package/lib/esm/model/overrides.js +23 -0
- package/lib/esm/model/utils.d.ts +39 -0
- package/lib/esm/model/utils.js +43 -4
- package/lib/esm/model/validation.d.ts +26 -8
- package/lib/esm/model/validation.js +29 -11
- package/lib/esm/operations/Operations.d.ts +65 -3
- package/lib/esm/operations/Operations.js +68 -6
- package/lib/esm/operations/OperationsRegistry.d.ts +44 -16
- package/lib/esm/operations/OperationsRegistry.js +46 -18
- package/lib/esm/operations/constants.d.ts +34 -8
- package/lib/esm/operations/constants.js +23 -9
- package/lib/esm/operations/decorators.d.ts +140 -134
- package/lib/esm/operations/decorators.js +152 -137
- package/lib/esm/operations/index.js +6 -6
- package/lib/esm/operations/types.d.ts +10 -0
- package/lib/esm/operations/types.js +1 -1
- package/lib/esm/repository/BaseRepository.d.ts +324 -0
- package/lib/esm/repository/BaseRepository.js +309 -9
- package/lib/esm/repository/Context.d.ts +153 -2
- package/lib/esm/repository/Context.js +154 -6
- package/lib/esm/repository/Repository.d.ts +89 -0
- package/lib/esm/repository/Repository.js +96 -7
- package/lib/esm/repository/constants.d.ts +7 -0
- package/lib/esm/repository/constants.js +9 -1
- package/lib/esm/repository/errors.d.ts +61 -34
- package/lib/esm/repository/errors.js +62 -35
- package/lib/esm/repository/index.js +9 -9
- package/lib/esm/repository/types.d.ts +26 -0
- package/lib/esm/repository/types.js +1 -1
- package/lib/esm/repository/utils.d.ts +11 -0
- package/lib/esm/repository/utils.js +7 -7
- package/lib/esm/repository/wrappers.d.ts +2 -2
- package/lib/esm/repository/wrappers.js +5 -5
- package/lib/esm/validation/constants.d.ts +20 -5
- package/lib/esm/validation/constants.js +22 -7
- package/lib/esm/validation/decorators.d.ts +101 -19
- package/lib/esm/validation/decorators.js +109 -27
- package/lib/esm/validation/index.js +5 -5
- package/lib/esm/validation/validation.js +10 -2
- package/lib/esm/validation/validators/ReadOnlyValidator.d.ts +32 -8
- package/lib/esm/validation/validators/ReadOnlyValidator.js +34 -10
- package/lib/esm/validation/validators/TimestampValidator.d.ts +37 -3
- package/lib/esm/validation/validators/TimestampValidator.js +39 -5
- package/lib/esm/validation/validators/UpdateValidator.d.ts +28 -11
- package/lib/esm/validation/validators/UpdateValidator.js +23 -8
- package/lib/esm/validation/validators/index.js +4 -4
- package/lib/identity/decorators.cjs +8 -1
- package/lib/identity/decorators.d.ts +7 -0
- package/lib/identity/utils.cjs +35 -22
- package/lib/identity/utils.d.ts +36 -23
- package/lib/index.cjs +14 -28
- package/lib/index.d.ts +12 -27
- package/lib/interfaces/BulkCrudOperator.cjs +1 -1
- package/lib/interfaces/BulkCrudOperator.d.ts +39 -0
- package/lib/interfaces/Contextual.cjs +1 -1
- package/lib/interfaces/Contextual.d.ts +19 -2
- package/lib/interfaces/CrudOperator.cjs +1 -1
- package/lib/interfaces/CrudOperator.d.ts +26 -23
- package/lib/interfaces/IRepository.cjs +1 -1
- package/lib/interfaces/IRepository.d.ts +10 -2
- package/lib/model/constants.cjs +12 -14
- package/lib/model/constants.d.ts +11 -13
- package/lib/model/decorators.cjs +114 -24
- package/lib/model/decorators.d.ts +112 -23
- package/lib/model/index.cjs +2 -1
- package/lib/model/index.d.ts +1 -0
- package/lib/model/model.cjs +1 -13
- package/lib/model/model.d.ts +2 -141
- package/lib/model/overrides.cjs +25 -0
- package/lib/model/overrides.d.ts +1 -0
- package/lib/model/utils.cjs +41 -2
- package/lib/model/utils.d.ts +39 -0
- package/lib/model/validation.cjs +27 -9
- package/lib/model/validation.d.ts +26 -8
- package/lib/operations/Operations.cjs +66 -4
- package/lib/operations/Operations.d.ts +65 -3
- package/lib/operations/OperationsRegistry.cjs +45 -17
- package/lib/operations/OperationsRegistry.d.ts +44 -16
- package/lib/operations/constants.cjs +24 -10
- package/lib/operations/constants.d.ts +34 -8
- package/lib/operations/decorators.cjs +150 -135
- package/lib/operations/decorators.d.ts +140 -134
- package/lib/operations/types.cjs +1 -1
- package/lib/operations/types.d.ts +10 -0
- package/lib/repository/BaseRepository.cjs +303 -3
- package/lib/repository/BaseRepository.d.ts +324 -0
- package/lib/repository/Context.cjs +153 -5
- package/lib/repository/Context.d.ts +153 -2
- package/lib/repository/Repository.cjs +90 -1
- package/lib/repository/Repository.d.ts +89 -0
- package/lib/repository/constants.cjs +9 -1
- package/lib/repository/constants.d.ts +7 -0
- package/lib/repository/errors.cjs +62 -35
- package/lib/repository/errors.d.ts +61 -34
- package/lib/repository/types.cjs +1 -1
- package/lib/repository/types.d.ts +26 -0
- package/lib/repository/utils.cjs +3 -3
- package/lib/repository/utils.d.ts +11 -0
- package/lib/repository/wrappers.cjs +3 -3
- package/lib/repository/wrappers.d.ts +2 -2
- package/lib/validation/constants.cjs +21 -6
- package/lib/validation/constants.d.ts +20 -5
- package/lib/validation/decorators.cjs +102 -20
- package/lib/validation/decorators.d.ts +101 -19
- package/lib/validation/validation.cjs +9 -1
- package/lib/validation/validators/ReadOnlyValidator.cjs +33 -9
- package/lib/validation/validators/ReadOnlyValidator.d.ts +32 -8
- package/lib/validation/validators/TimestampValidator.cjs +38 -4
- package/lib/validation/validators/TimestampValidator.d.ts +37 -3
- package/lib/validation/validators/UpdateValidator.cjs +23 -8
- package/lib/validation/validators/UpdateValidator.d.ts +28 -11
- package/package.json +2 -2
|
@@ -1,14 +1,29 @@
|
|
|
1
1
|
import { DEFAULT_ERROR_MESSAGES as DecoratorMessages, Validator, } from "@decaf-ts/decorator-validation";
|
|
2
2
|
/**
|
|
3
|
-
* @
|
|
4
|
-
*
|
|
5
|
-
* @param {string} [message]
|
|
6
|
-
* @param {string[]} [acceptedTypes]
|
|
7
|
-
*
|
|
3
|
+
* @description Abstract base class for validators that compare new values with old values during updates.
|
|
4
|
+
* @summary Base class for an Update validator that provides a framework for implementing validation logic that compares a new value with its previous state.
|
|
5
|
+
* @param {string} [message] - Error message. Defaults to {@link DecoratorMessages#DEFAULT}
|
|
6
|
+
* @param {string[]} [acceptedTypes] - The accepted value types by the decorator
|
|
8
7
|
* @class UpdateValidator
|
|
9
|
-
* @
|
|
10
|
-
*
|
|
8
|
+
* @example
|
|
9
|
+
* // Extending UpdateValidator to create a custom validator
|
|
10
|
+
* class MyCustomValidator extends UpdateValidator {
|
|
11
|
+
* constructor() {
|
|
12
|
+
* super("Custom validation failed");
|
|
13
|
+
* }
|
|
14
|
+
*
|
|
15
|
+
* public updateHasErrors(value: any, oldValue: any): string | undefined {
|
|
16
|
+
* // Custom validation logic
|
|
17
|
+
* if (value === oldValue) {
|
|
18
|
+
* return this.message;
|
|
19
|
+
* }
|
|
20
|
+
* return undefined;
|
|
21
|
+
* }
|
|
11
22
|
*
|
|
23
|
+
* hasErrors(value: any): string | undefined {
|
|
24
|
+
* return undefined; // Not used for update validators
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
12
27
|
* @category Validators
|
|
13
28
|
*/
|
|
14
29
|
export class UpdateValidator extends Validator {
|
|
@@ -16,4 +31,4 @@ export class UpdateValidator extends Validator {
|
|
|
16
31
|
super(message, ...acceptedTypes);
|
|
17
32
|
}
|
|
18
33
|
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXBkYXRlVmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3ZhbGlkYXRpb24vdmFsaWRhdG9ycy9VcGRhdGVWYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHNCQUFzQixJQUFJLGlCQUFpQixFQUMzQyxTQUFTLEdBQ1YsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFDSCxNQUFNLE9BQWdCLGVBQWdCLFNBQVEsU0FBUztJQUNyRCxZQUNFLFVBQWtCLGlCQUFpQixDQUFDLE9BQU8sRUFDM0MsR0FBRyxhQUF1QjtRQUUxQixLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsYUFBYSxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQWVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyBhcyBEZWNvcmF0b3JNZXNzYWdlcyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHZhbGlkYXRvcnMgdGhhdCBjb21wYXJlIG5ldyB2YWx1ZXMgd2l0aCBvbGQgdmFsdWVzIGR1cmluZyB1cGRhdGVzLlxuICogQHN1bW1hcnkgQmFzZSBjbGFzcyBmb3IgYW4gVXBkYXRlIHZhbGlkYXRvciB0aGF0IHByb3ZpZGVzIGEgZnJhbWV3b3JrIGZvciBpbXBsZW1lbnRpbmcgdmFsaWRhdGlvbiBsb2dpYyB0aGF0IGNvbXBhcmVzIGEgbmV3IHZhbHVlIHdpdGggaXRzIHByZXZpb3VzIHN0YXRlLlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSAtIEVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBEZWNvcmF0b3JNZXNzYWdlcyNERUZBVUxUfVxuICogQHBhcmFtIHtzdHJpbmdbXX0gW2FjY2VwdGVkVHlwZXNdIC0gVGhlIGFjY2VwdGVkIHZhbHVlIHR5cGVzIGJ5IHRoZSBkZWNvcmF0b3JcbiAqIEBjbGFzcyBVcGRhdGVWYWxpZGF0b3JcbiAqIEBleGFtcGxlXG4gKiAvLyBFeHRlbmRpbmcgVXBkYXRlVmFsaWRhdG9yIHRvIGNyZWF0ZSBhIGN1c3RvbSB2YWxpZGF0b3JcbiAqIGNsYXNzIE15Q3VzdG9tVmFsaWRhdG9yIGV4dGVuZHMgVXBkYXRlVmFsaWRhdG9yIHtcbiAqICAgY29uc3RydWN0b3IoKSB7XG4gKiAgICAgc3VwZXIoXCJDdXN0b20gdmFsaWRhdGlvbiBmYWlsZWRcIik7XG4gKiAgIH1cbiAqICAgXG4gKiAgIHB1YmxpYyB1cGRhdGVIYXNFcnJvcnModmFsdWU6IGFueSwgb2xkVmFsdWU6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gKiAgICAgLy8gQ3VzdG9tIHZhbGlkYXRpb24gbG9naWNcbiAqICAgICBpZiAodmFsdWUgPT09IG9sZFZhbHVlKSB7XG4gKiAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlO1xuICogICAgIH1cbiAqICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICogICB9XG4gKiAgIFxuICogICBoYXNFcnJvcnModmFsdWU6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gKiAgICAgcmV0dXJuIHVuZGVmaW5lZDsgLy8gTm90IHVzZWQgZm9yIHVwZGF0ZSB2YWxpZGF0b3JzXG4gKiAgIH1cbiAqIH1cbiAqIEBjYXRlZ29yeSBWYWxpZGF0b3JzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBVcGRhdGVWYWxpZGF0b3IgZXh0ZW5kcyBWYWxpZGF0b3Ige1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nID0gRGVjb3JhdG9yTWVzc2FnZXMuREVGQVVMVCxcbiAgICAuLi5hY2NlcHRlZFR5cGVzOiBzdHJpbmdbXVxuICApIHtcbiAgICBzdXBlcihtZXNzYWdlLCAuLi5hY2NlcHRlZFR5cGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQWJzdHJhY3QgbWV0aG9kIHRoYXQgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzIHRvIHBlcmZvcm0gdXBkYXRlIHZhbGlkYXRpb24uXG4gICAqIEBzdW1tYXJ5IFZhbGlkYXRlcyBhIHZhbHVlIGJ5IGNvbXBhcmluZyBpdCB0byBpdHMgb2xkIHZlcnNpb24gdG8gZGV0ZXJtaW5lIGlmIHRoZSB1cGRhdGUgaXMgdmFsaWQuXG4gICAqIEBwYXJhbSB7YW55fSB2YWx1ZSAtIFRoZSBuZXcgdmFsdWUgdG8gdmFsaWRhdGVcbiAgICogQHBhcmFtIHthbnl9IG9sZFZhbHVlIC0gVGhlIHByZXZpb3VzIHZhbHVlIHRvIGNvbXBhcmUgYWdhaW5zdFxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzIC0gQWRkaXRpb25hbCBhcmd1bWVudHMgdGhhdCBtYXkgYmUgbmVlZGVkIGZvciB2YWxpZGF0aW9uXG4gICAqIEByZXR1cm4ge3N0cmluZyB8IHVuZGVmaW5lZH0gQW4gZXJyb3IgbWVzc2FnZSBpZiB2YWxpZGF0aW9uIGZhaWxzLCB1bmRlZmluZWQgaWYgdmFsaWRhdGlvbiBwYXNzZXNcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCB1cGRhdGVIYXNFcnJvcnMoXG4gICAgdmFsdWU6IGFueSxcbiAgICBvbGRWYWx1ZTogYW55LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from "./ReadOnlyValidator";
|
|
2
|
-
export * from "./TimestampValidator";
|
|
3
|
-
export * from "./UpdateValidator";
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from "./ReadOnlyValidator.js";
|
|
2
|
+
export * from "./TimestampValidator.js";
|
|
3
|
+
export * from "./UpdateValidator.js";
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdmFsaWRhdGlvbi92YWxpZGF0b3JzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVDQUFvQztBQUNwQyx3Q0FBcUM7QUFDckMscUNBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vUmVhZE9ubHlWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1RpbWVzdGFtcFZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vVXBkYXRlVmFsaWRhdG9yXCI7XG4iXX0=
|
|
@@ -6,7 +6,14 @@ const validation_1 = require("./../validation/index.cjs");
|
|
|
6
6
|
const constants_1 = require("./../model/constants.cjs");
|
|
7
7
|
const repository_1 = require("./../repository/index.cjs");
|
|
8
8
|
const reflection_1 = require("@decaf-ts/reflection");
|
|
9
|
+
/**
|
|
10
|
+
* @description Decorator that marks a property as an ID field
|
|
11
|
+
* @summary Creates a composite decorator that marks a property as required, readonly, and as the ID field for database operations
|
|
12
|
+
* @return {PropertyDecorator} A decorator that can be applied to class properties
|
|
13
|
+
* @function id
|
|
14
|
+
* @category Property Decorators
|
|
15
|
+
*/
|
|
9
16
|
function id() {
|
|
10
17
|
return (0, reflection_1.apply)((0, decorator_validation_1.required)(), (0, validation_1.readonly)(), (0, decorator_validation_1.propMetadata)(repository_1.Repository.key(constants_1.DBKeys.ID), {}));
|
|
11
18
|
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pZGVudGl0eS9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBYUEsZ0JBTUM7QUFuQkQseUVBQXdFO0FBQ3hFLDBEQUF5QztBQUN6Qyx3REFBNEM7QUFDNUMsMERBQTJDO0FBQzNDLHFEQUE2QztBQUU3Qzs7Ozs7O0dBTUc7QUFDSCxTQUFnQixFQUFFO0lBQ2hCLE9BQU8sSUFBQSxrQkFBSyxFQUNWLElBQUEsK0JBQVEsR0FBRSxFQUNWLElBQUEscUJBQVEsR0FBRSxFQUNWLElBQUEsbUNBQVksRUFBQyx1QkFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUM1QyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb3BNZXRhZGF0YSwgcmVxdWlyZWQgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyByZWFkb25seSB9IGZyb20gXCIuLi92YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBEQktleXMgfSBmcm9tIFwiLi4vbW9kZWwvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IGFwcGx5IH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERlY29yYXRvciB0aGF0IG1hcmtzIGEgcHJvcGVydHkgYXMgYW4gSUQgZmllbGRcbiAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBjb21wb3NpdGUgZGVjb3JhdG9yIHRoYXQgbWFya3MgYSBwcm9wZXJ0eSBhcyByZXF1aXJlZCwgcmVhZG9ubHksIGFuZCBhcyB0aGUgSUQgZmllbGQgZm9yIGRhdGFiYXNlIG9wZXJhdGlvbnNcbiAqIEByZXR1cm4ge1Byb3BlcnR5RGVjb3JhdG9yfSBBIGRlY29yYXRvciB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIGNsYXNzIHByb3BlcnRpZXNcbiAqIEBmdW5jdGlvbiBpZFxuICogQGNhdGVnb3J5IFByb3BlcnR5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlkKCkge1xuICByZXR1cm4gYXBwbHkoXG4gICAgcmVxdWlyZWQoKSxcbiAgICByZWFkb25seSgpLFxuICAgIHByb3BNZXRhZGF0YShSZXBvc2l0b3J5LmtleShEQktleXMuSUQpLCB7fSlcbiAgKTtcbn1cbiJdfQ==
|
|
@@ -1 +1,8 @@
|
|
|
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
|
+
*/
|
|
1
8
|
export declare function id(): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
|
package/lib/identity/utils.cjs
CHANGED
|
@@ -7,17 +7,24 @@ const utils_1 = require("./../repository/utils.cjs");
|
|
|
7
7
|
const decorator_validation_1 = require("@decaf-ts/decorator-validation");
|
|
8
8
|
const errors_1 = require("./../repository/errors.cjs");
|
|
9
9
|
/**
|
|
10
|
-
* @
|
|
11
|
-
* @
|
|
12
|
-
*
|
|
13
|
-
* @
|
|
14
|
-
*
|
|
15
|
-
* @throws {InternalError} if no property or more than one properties are {@link id} decorated
|
|
16
|
-
* or no value is set in that property
|
|
17
|
-
*
|
|
10
|
+
* @description Finds the primary key attribute for a model
|
|
11
|
+
* @summary Searches in all the properties in the object for an {@link id} decorated property and returns the property key and metadata
|
|
12
|
+
* @param {Model} model - The model object to search for primary key
|
|
13
|
+
* @return {Object} An object containing the id property name and its metadata
|
|
18
14
|
* @function findPrimaryKey
|
|
15
|
+
* @mermaid
|
|
16
|
+
* sequenceDiagram
|
|
17
|
+
* participant Caller
|
|
18
|
+
* participant findPrimaryKey
|
|
19
|
+
* participant getAllPropertyDecoratorsRecursive
|
|
19
20
|
*
|
|
20
|
-
*
|
|
21
|
+
* Caller->>findPrimaryKey: model
|
|
22
|
+
* findPrimaryKey->>getAllPropertyDecoratorsRecursive: get decorators
|
|
23
|
+
* getAllPropertyDecoratorsRecursive-->>findPrimaryKey: decorators
|
|
24
|
+
* findPrimaryKey->>findPrimaryKey: filter ID decorators
|
|
25
|
+
* findPrimaryKey->>findPrimaryKey: validate single ID property
|
|
26
|
+
* findPrimaryKey-->>Caller: {id, props}
|
|
27
|
+
* @memberOf module:db-decorators
|
|
21
28
|
*/
|
|
22
29
|
function findPrimaryKey(model) {
|
|
23
30
|
const decorators = (0, utils_1.getAllPropertyDecoratorsRecursive)(model, undefined, constants_1.DBKeys.REFLECT + constants_1.DBKeys.ID);
|
|
@@ -42,19 +49,25 @@ function findPrimaryKey(model) {
|
|
|
42
49
|
};
|
|
43
50
|
}
|
|
44
51
|
/**
|
|
45
|
-
* @
|
|
46
|
-
* @
|
|
47
|
-
*
|
|
48
|
-
* @param {
|
|
49
|
-
* @
|
|
50
|
-
* @
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
52
|
+
* @description Retrieves the primary key value from a model
|
|
53
|
+
* @summary Searches for the ID-decorated property in the model and returns its value
|
|
54
|
+
* @param {Model} model - The model object to extract the ID from
|
|
55
|
+
* @param {boolean} [returnEmpty=false] - Whether to return undefined if no ID value is found
|
|
56
|
+
* @return {string | number | bigint} The primary key value
|
|
57
|
+
* @function findModelId
|
|
58
|
+
* @mermaid
|
|
59
|
+
* sequenceDiagram
|
|
60
|
+
* participant Caller
|
|
61
|
+
* participant findModelId
|
|
62
|
+
* participant findPrimaryKey
|
|
56
63
|
*
|
|
57
|
-
*
|
|
64
|
+
* Caller->>findModelId: model, returnEmpty
|
|
65
|
+
* findModelId->>findPrimaryKey: model
|
|
66
|
+
* findPrimaryKey-->>findModelId: {id, props}
|
|
67
|
+
* findModelId->>findModelId: extract model[id]
|
|
68
|
+
* findModelId->>findModelId: validate ID exists if required
|
|
69
|
+
* findModelId-->>Caller: ID value
|
|
70
|
+
* @memberOf module:db-decorators
|
|
58
71
|
*/
|
|
59
72
|
function findModelId(model, returnEmpty = false) {
|
|
60
73
|
const idProp = findPrimaryKey(model).id;
|
|
@@ -63,4 +76,4 @@ function findModelId(model, returnEmpty = false) {
|
|
|
63
76
|
throw new errors_1.InternalError(`No value for the Id is defined under the property ${idProp}`);
|
|
64
77
|
return modelId;
|
|
65
78
|
}
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWRlbnRpdHkvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF5QkEsd0NBOEJDO0FBdUJELGtDQVdDO0FBekZELHdEQUE0QztBQUM1QyxxREFBd0U7QUFDeEUseUVBQXNFO0FBQ3RFLHVEQUFxRDtBQUVyRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILFNBQWdCLGNBQWMsQ0FBa0IsS0FBUTtJQUN0RCxNQUFNLFVBQVUsR0FBRyxJQUFBLHlDQUFpQyxFQUNsRCxLQUFLLEVBQ0wsU0FBUyxFQUNULGtCQUFNLENBQUMsT0FBTyxHQUFHLGtCQUFNLENBQUMsRUFBRSxDQUMzQixDQUFDO0lBQ0YsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFvQixDQUFDLENBQUMsTUFBTSxDQUM5RCxDQUFDLEtBQW1DLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtRQUNwRCxNQUFNLFFBQVEsR0FBSSxJQUEwQixDQUFDLE1BQU0sQ0FDakQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssZ0NBQVMsQ0FBQyxJQUFJLENBQ2hDLENBQUM7UUFDRixJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsRUFDRCxFQUFFLENBQ0gsQ0FBQztJQUVGLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU07UUFDcEQsTUFBTSxJQUFJLHNCQUFhLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUNsRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDdEMsTUFBTSxJQUFJLHNCQUFhLENBQUMsSUFBQSx5QkFBRSxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLElBQUksQ0FBQyxNQUFNO1FBQUUsTUFBTSxJQUFJLHNCQUFhLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUM3RSxPQUFPO1FBQ0wsRUFBRSxFQUFFLE1BQWlCO1FBQ3JCLEtBQUssRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztLQUNyQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILFNBQWdCLFdBQVcsQ0FDekIsS0FBUSxFQUNSLFdBQVcsR0FBRyxLQUFLO0lBRW5CLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLElBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxJQUFJLENBQUMsV0FBVztRQUNoRCxNQUFNLElBQUksc0JBQWEsQ0FDckIscURBQXFELE1BQWdCLEVBQUUsQ0FDeEUsQ0FBQztJQUNKLE9BQU8sT0FBbUMsQ0FBQztBQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREJLZXlzIH0gZnJvbSBcIi4uL21vZGVsL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgZ2V0QWxsUHJvcGVydHlEZWNvcmF0b3JzUmVjdXJzaXZlIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvdXRpbHNcIjtcbmltcG9ydCB7IE1vZGVsLCBNb2RlbEtleXMsIHNmIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L2Vycm9yc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBGaW5kcyB0aGUgcHJpbWFyeSBrZXkgYXR0cmlidXRlIGZvciBhIG1vZGVsXG4gKiBAc3VtbWFyeSBTZWFyY2hlcyBpbiBhbGwgdGhlIHByb3BlcnRpZXMgaW4gdGhlIG9iamVjdCBmb3IgYW4ge0BsaW5rIGlkfSBkZWNvcmF0ZWQgcHJvcGVydHkgYW5kIHJldHVybnMgdGhlIHByb3BlcnR5IGtleSBhbmQgbWV0YWRhdGFcbiAqIEBwYXJhbSB7TW9kZWx9IG1vZGVsIC0gVGhlIG1vZGVsIG9iamVjdCB0byBzZWFyY2ggZm9yIHByaW1hcnkga2V5XG4gKiBAcmV0dXJuIHtPYmplY3R9IEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBpZCBwcm9wZXJ0eSBuYW1lIGFuZCBpdHMgbWV0YWRhdGFcbiAqIEBmdW5jdGlvbiBmaW5kUHJpbWFyeUtleVxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDYWxsZXJcbiAqICAgcGFydGljaXBhbnQgZmluZFByaW1hcnlLZXlcbiAqICAgcGFydGljaXBhbnQgZ2V0QWxsUHJvcGVydHlEZWNvcmF0b3JzUmVjdXJzaXZlXG4gKlxuICogICBDYWxsZXItPj5maW5kUHJpbWFyeUtleTogbW9kZWxcbiAqICAgZmluZFByaW1hcnlLZXktPj5nZXRBbGxQcm9wZXJ0eURlY29yYXRvcnNSZWN1cnNpdmU6IGdldCBkZWNvcmF0b3JzXG4gKiAgIGdldEFsbFByb3BlcnR5RGVjb3JhdG9yc1JlY3Vyc2l2ZS0tPj5maW5kUHJpbWFyeUtleTogZGVjb3JhdG9yc1xuICogICBmaW5kUHJpbWFyeUtleS0+PmZpbmRQcmltYXJ5S2V5OiBmaWx0ZXIgSUQgZGVjb3JhdG9yc1xuICogICBmaW5kUHJpbWFyeUtleS0+PmZpbmRQcmltYXJ5S2V5OiB2YWxpZGF0ZSBzaW5nbGUgSUQgcHJvcGVydHlcbiAqICAgZmluZFByaW1hcnlLZXktLT4+Q2FsbGVyOiB7aWQsIHByb3BzfVxuICogQG1lbWJlck9mIG1vZHVsZTpkYi1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUHJpbWFyeUtleTxNIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBNKSB7XG4gIGNvbnN0IGRlY29yYXRvcnMgPSBnZXRBbGxQcm9wZXJ0eURlY29yYXRvcnNSZWN1cnNpdmUoXG4gICAgbW9kZWwsXG4gICAgdW5kZWZpbmVkLFxuICAgIERCS2V5cy5SRUZMRUNUICsgREJLZXlzLklEXG4gICk7XG4gIGNvbnN0IGlkRGVjb3JhdG9ycyA9IE9iamVjdC5lbnRyaWVzKGRlY29yYXRvcnMgYXMgb2JqZWN0KS5yZWR1Y2UoXG4gICAgKGFjY3VtOiB7IFtpbmRleGVyOiBzdHJpbmddOiBhbnlbXSB9LCBbcHJvcCwgZGVjc10pID0+IHtcbiAgICAgIGNvbnN0IGZpbHRlcmVkID0gKGRlY3MgYXMgeyBrZXk6IHN0cmluZyB9W10pLmZpbHRlcihcbiAgICAgICAgKGQpID0+IGQua2V5ICE9PSBNb2RlbEtleXMuVFlQRVxuICAgICAgKTtcbiAgICAgIGlmIChmaWx0ZXJlZCAmJiBmaWx0ZXJlZC5sZW5ndGgpIHtcbiAgICAgICAgYWNjdW1bcHJvcF0gPSBhY2N1bVtwcm9wXSB8fCBbXTtcbiAgICAgICAgYWNjdW1bcHJvcF0ucHVzaCguLi5maWx0ZXJlZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjdW07XG4gICAgfSxcbiAgICB7fVxuICApO1xuXG4gIGlmICghaWREZWNvcmF0b3JzIHx8ICFPYmplY3Qua2V5cyhpZERlY29yYXRvcnMpLmxlbmd0aClcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIkNvdWxkIG5vdCBmaW5kIElEIGRlY29yYXRlZCBQcm9wZXJ0eVwiKTtcbiAgaWYgKE9iamVjdC5rZXlzKGlkRGVjb3JhdG9ycykubGVuZ3RoID4gMSlcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihzZihPYmplY3Qua2V5cyhpZERlY29yYXRvcnMpLmpvaW4oXCIsIFwiKSkpO1xuICBjb25zdCBpZFByb3AgPSBPYmplY3Qua2V5cyhpZERlY29yYXRvcnMpWzBdO1xuICBpZiAoIWlkUHJvcCkgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJDb3VsZCBub3QgZmluZCBJRCBkZWNvcmF0ZWQgUHJvcGVydHlcIik7XG4gIHJldHVybiB7XG4gICAgaWQ6IGlkUHJvcCBhcyBrZXlvZiBNLFxuICAgIHByb3BzOiBpZERlY29yYXRvcnNbaWRQcm9wXVswXS5wcm9wcyxcbiAgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIHRoZSBwcmltYXJ5IGtleSB2YWx1ZSBmcm9tIGEgbW9kZWxcbiAqIEBzdW1tYXJ5IFNlYXJjaGVzIGZvciB0aGUgSUQtZGVjb3JhdGVkIHByb3BlcnR5IGluIHRoZSBtb2RlbCBhbmQgcmV0dXJucyBpdHMgdmFsdWVcbiAqIEBwYXJhbSB7TW9kZWx9IG1vZGVsIC0gVGhlIG1vZGVsIG9iamVjdCB0byBleHRyYWN0IHRoZSBJRCBmcm9tXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXR1cm5FbXB0eT1mYWxzZV0gLSBXaGV0aGVyIHRvIHJldHVybiB1bmRlZmluZWQgaWYgbm8gSUQgdmFsdWUgaXMgZm91bmRcbiAqIEByZXR1cm4ge3N0cmluZyB8IG51bWJlciB8IGJpZ2ludH0gVGhlIHByaW1hcnkga2V5IHZhbHVlXG4gKiBAZnVuY3Rpb24gZmluZE1vZGVsSWRcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ2FsbGVyXG4gKiAgIHBhcnRpY2lwYW50IGZpbmRNb2RlbElkXG4gKiAgIHBhcnRpY2lwYW50IGZpbmRQcmltYXJ5S2V5XG4gKlxuICogICBDYWxsZXItPj5maW5kTW9kZWxJZDogbW9kZWwsIHJldHVybkVtcHR5XG4gKiAgIGZpbmRNb2RlbElkLT4+ZmluZFByaW1hcnlLZXk6IG1vZGVsXG4gKiAgIGZpbmRQcmltYXJ5S2V5LS0+PmZpbmRNb2RlbElkOiB7aWQsIHByb3BzfVxuICogICBmaW5kTW9kZWxJZC0+PmZpbmRNb2RlbElkOiBleHRyYWN0IG1vZGVsW2lkXVxuICogICBmaW5kTW9kZWxJZC0+PmZpbmRNb2RlbElkOiB2YWxpZGF0ZSBJRCBleGlzdHMgaWYgcmVxdWlyZWRcbiAqICAgZmluZE1vZGVsSWQtLT4+Q2FsbGVyOiBJRCB2YWx1ZVxuICogQG1lbWJlck9mIG1vZHVsZTpkYi1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTW9kZWxJZDxNIGV4dGVuZHMgTW9kZWw+KFxuICBtb2RlbDogTSxcbiAgcmV0dXJuRW1wdHkgPSBmYWxzZVxuKTogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50IHtcbiAgY29uc3QgaWRQcm9wID0gZmluZFByaW1hcnlLZXkobW9kZWwpLmlkO1xuICBjb25zdCBtb2RlbElkID0gbW9kZWxbaWRQcm9wXTtcbiAgaWYgKHR5cGVvZiBtb2RlbElkID09PSBcInVuZGVmaW5lZFwiICYmICFyZXR1cm5FbXB0eSlcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgIGBObyB2YWx1ZSBmb3IgdGhlIElkIGlzIGRlZmluZWQgdW5kZXIgdGhlIHByb3BlcnR5ICR7aWRQcm9wIGFzIHN0cmluZ31gXG4gICAgKTtcbiAgcmV0dXJuIG1vZGVsSWQgYXMgc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50O1xufVxuIl19
|
package/lib/identity/utils.d.ts
CHANGED
|
@@ -1,34 +1,47 @@
|
|
|
1
1
|
import { Model } from "@decaf-ts/decorator-validation";
|
|
2
2
|
/**
|
|
3
|
-
* @
|
|
4
|
-
* @
|
|
5
|
-
*
|
|
6
|
-
* @
|
|
7
|
-
*
|
|
8
|
-
* @throws {InternalError} if no property or more than one properties are {@link id} decorated
|
|
9
|
-
* or no value is set in that property
|
|
10
|
-
*
|
|
3
|
+
* @description Finds the primary key attribute for a model
|
|
4
|
+
* @summary Searches in all the properties in the object for an {@link id} decorated property and returns the property key and metadata
|
|
5
|
+
* @param {Model} model - The model object to search for primary key
|
|
6
|
+
* @return {Object} An object containing the id property name and its metadata
|
|
11
7
|
* @function findPrimaryKey
|
|
12
|
-
*
|
|
13
|
-
*
|
|
8
|
+
* @mermaid
|
|
9
|
+
* sequenceDiagram
|
|
10
|
+
* participant Caller
|
|
11
|
+
* participant findPrimaryKey
|
|
12
|
+
* participant getAllPropertyDecoratorsRecursive
|
|
13
|
+
*
|
|
14
|
+
* Caller->>findPrimaryKey: model
|
|
15
|
+
* findPrimaryKey->>getAllPropertyDecoratorsRecursive: get decorators
|
|
16
|
+
* getAllPropertyDecoratorsRecursive-->>findPrimaryKey: decorators
|
|
17
|
+
* findPrimaryKey->>findPrimaryKey: filter ID decorators
|
|
18
|
+
* findPrimaryKey->>findPrimaryKey: validate single ID property
|
|
19
|
+
* findPrimaryKey-->>Caller: {id, props}
|
|
20
|
+
* @memberOf module:db-decorators
|
|
14
21
|
*/
|
|
15
22
|
export declare function findPrimaryKey<M extends Model>(model: M): {
|
|
16
23
|
id: keyof M;
|
|
17
24
|
props: any;
|
|
18
25
|
};
|
|
19
26
|
/**
|
|
20
|
-
* @
|
|
21
|
-
* @
|
|
22
|
-
*
|
|
23
|
-
* @param {
|
|
24
|
-
* @
|
|
25
|
-
* @
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
27
|
+
* @description Retrieves the primary key value from a model
|
|
28
|
+
* @summary Searches for the ID-decorated property in the model and returns its value
|
|
29
|
+
* @param {Model} model - The model object to extract the ID from
|
|
30
|
+
* @param {boolean} [returnEmpty=false] - Whether to return undefined if no ID value is found
|
|
31
|
+
* @return {string | number | bigint} The primary key value
|
|
32
|
+
* @function findModelId
|
|
33
|
+
* @mermaid
|
|
34
|
+
* sequenceDiagram
|
|
35
|
+
* participant Caller
|
|
36
|
+
* participant findModelId
|
|
37
|
+
* participant findPrimaryKey
|
|
38
|
+
*
|
|
39
|
+
* Caller->>findModelId: model, returnEmpty
|
|
40
|
+
* findModelId->>findPrimaryKey: model
|
|
41
|
+
* findPrimaryKey-->>findModelId: {id, props}
|
|
42
|
+
* findModelId->>findModelId: extract model[id]
|
|
43
|
+
* findModelId->>findModelId: validate ID exists if required
|
|
44
|
+
* findModelId-->>Caller: ID value
|
|
45
|
+
* @memberOf module:db-decorators
|
|
33
46
|
*/
|
|
34
47
|
export declare function findModelId<M extends Model>(model: M, returnEmpty?: boolean): string | number | bigint;
|
package/lib/index.cjs
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @module db-decorators
|
|
4
|
-
*/
|
|
5
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
3
|
if (k2 === undefined) k2 = k;
|
|
7
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -17,34 +14,23 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
17
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
15
|
};
|
|
19
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
|
|
21
|
-
* @namespace Model
|
|
22
|
-
* @memberOf module:db-decorators
|
|
23
|
-
*/
|
|
24
|
-
/**
|
|
25
|
-
* @namespace Operations
|
|
26
|
-
* @memberOf module:db-decorators
|
|
27
|
-
*/
|
|
28
|
-
/**
|
|
29
|
-
* @namespace Repository
|
|
30
|
-
* @memberOf module:db-decorators
|
|
31
|
-
*/
|
|
32
|
-
/**
|
|
33
|
-
* @namespace Validation
|
|
34
|
-
* @memberOf module:db-decorators
|
|
35
|
-
*/
|
|
36
|
-
/**
|
|
37
|
-
* @namespace Validators
|
|
38
|
-
* @memberOf module:db-decorators.Validation
|
|
39
|
-
*/
|
|
40
|
-
/**
|
|
41
|
-
* @namespace Utils
|
|
42
|
-
* @memberOf module:db-decorators
|
|
43
|
-
*/
|
|
17
|
+
exports.VERSION = void 0;
|
|
44
18
|
__exportStar(require("./identity/index.cjs"), exports);
|
|
45
19
|
__exportStar(require("./interfaces/index.cjs"), exports);
|
|
46
20
|
__exportStar(require("./model/index.cjs"), exports);
|
|
47
21
|
__exportStar(require("./operations/index.cjs"), exports);
|
|
48
22
|
__exportStar(require("./repository/index.cjs"), exports);
|
|
49
23
|
__exportStar(require("./validation/index.cjs"), exports);
|
|
50
|
-
|
|
24
|
+
/**
|
|
25
|
+
* @description Database decorators for TypeScript applications
|
|
26
|
+
* @summary A comprehensive library providing decorators and utilities for database operations, model definitions, validation, and repository patterns in TypeScript applications
|
|
27
|
+
* @module db-decorators
|
|
28
|
+
*/
|
|
29
|
+
/**
|
|
30
|
+
* @description Current version of the reflection package
|
|
31
|
+
* @summary Stores the semantic version number of the package
|
|
32
|
+
* @const VERSION
|
|
33
|
+
* @memberOf module:db-decorators
|
|
34
|
+
*/
|
|
35
|
+
exports.VERSION = "0.6.2";
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1REFBMkI7QUFDM0IseURBQTZCO0FBQzdCLG9EQUF3QjtBQUN4Qix5REFBNkI7QUFDN0IseURBQTZCO0FBQzdCLHlEQUE2QjtBQUU3Qjs7OztHQUlHO0FBR0g7Ozs7O0dBS0c7QUFDVSxRQUFBLE9BQU8sR0FBRyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9pZGVudGl0eVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL29wZXJhdGlvbnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JlcG9zaXRvcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ZhbGlkYXRpb25cIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGF0YWJhc2UgZGVjb3JhdG9ycyBmb3IgVHlwZVNjcmlwdCBhcHBsaWNhdGlvbnNcbiAqIEBzdW1tYXJ5IEEgY29tcHJlaGVuc2l2ZSBsaWJyYXJ5IHByb3ZpZGluZyBkZWNvcmF0b3JzIGFuZCB1dGlsaXRpZXMgZm9yIGRhdGFiYXNlIG9wZXJhdGlvbnMsIG1vZGVsIGRlZmluaXRpb25zLCB2YWxpZGF0aW9uLCBhbmQgcmVwb3NpdG9yeSBwYXR0ZXJucyBpbiBUeXBlU2NyaXB0IGFwcGxpY2F0aW9uc1xuICogQG1vZHVsZSBkYi1kZWNvcmF0b3JzXG4gKi9cblxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDdXJyZW50IHZlcnNpb24gb2YgdGhlIHJlZmxlY3Rpb24gcGFja2FnZVxuICogQHN1bW1hcnkgU3RvcmVzIHRoZSBzZW1hbnRpYyB2ZXJzaW9uIG51bWJlciBvZiB0aGUgcGFja2FnZVxuICogQGNvbnN0IFZFUlNJT05cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGItZGVjb3JhdG9yc1xuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiIyNWRVJTSU9OIyNcIjtcbiJdfQ==
|
package/lib/index.d.ts
CHANGED
|
@@ -1,33 +1,18 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module db-decorators
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* @namespace Model
|
|
6
|
-
* @memberOf module:db-decorators
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* @namespace Operations
|
|
10
|
-
* @memberOf module:db-decorators
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* @namespace Repository
|
|
14
|
-
* @memberOf module:db-decorators
|
|
15
|
-
*/
|
|
16
|
-
/**
|
|
17
|
-
* @namespace Validation
|
|
18
|
-
* @memberOf module:db-decorators
|
|
19
|
-
*/
|
|
20
|
-
/**
|
|
21
|
-
* @namespace Validators
|
|
22
|
-
* @memberOf module:db-decorators.Validation
|
|
23
|
-
*/
|
|
24
|
-
/**
|
|
25
|
-
* @namespace Utils
|
|
26
|
-
* @memberOf module:db-decorators
|
|
27
|
-
*/
|
|
28
1
|
export * from "./identity";
|
|
29
2
|
export * from "./interfaces";
|
|
30
3
|
export * from "./model";
|
|
31
4
|
export * from "./operations";
|
|
32
5
|
export * from "./repository";
|
|
33
6
|
export * from "./validation";
|
|
7
|
+
/**
|
|
8
|
+
* @description Database decorators for TypeScript applications
|
|
9
|
+
* @summary A comprehensive library providing decorators and utilities for database operations, model definitions, validation, and repository patterns in TypeScript applications
|
|
10
|
+
* @module db-decorators
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* @description Current version of the reflection package
|
|
14
|
+
* @summary Stores the semantic version number of the package
|
|
15
|
+
* @const VERSION
|
|
16
|
+
* @memberOf module:db-decorators
|
|
17
|
+
*/
|
|
18
|
+
export declare const VERSION = "0.6.2";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnVsa0NydWRPcGVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmZhY2VzL0J1bGtDcnVkT3BlcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENydWRPcGVyYXRvciB9IGZyb20gXCIuL0NydWRPcGVyYXRvclwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIGJ1bGsgQ1JVRCBvcGVyYXRpb25zXG4gKiBAc3VtbWFyeSBFeHRlbmRzIHRoZSBiYXNpYyBDUlVEIG9wZXJhdGlvbnMgdG8gc3VwcG9ydCBidWxrIG9wZXJhdGlvbnMgb24gbXVsdGlwbGUgbW9kZWxzIGF0IG9uY2VcbiAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGVcbiAqIEBpbnRlcmZhY2UgQnVsa0NydWRPcGVyYXRvclxuICogQG1lbWJlck9mIG1vZHVsZTpkYi1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVsa0NydWRPcGVyYXRvcjxNPiBleHRlbmRzIENydWRPcGVyYXRvcjxNPiB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBtdWx0aXBsZSBtb2RlbCBpbnN0YW5jZXMgaW4gdGhlIGRhdGFiYXNlXG4gICAqIEBzdW1tYXJ5IEJ1bGsgb3BlcmF0aW9uIHRvIGNyZWF0ZSBtdWx0aXBsZSBtb2RlbHMgYXQgb25jZVxuICAgKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlXG4gICAqIEBwYXJhbSB7TVtdfSBtb2RlbHMgLSBBcnJheSBvZiBtb2RlbCBpbnN0YW5jZXMgdG8gY3JlYXRlXG4gICAqIEBwYXJhbSB7Li4uYW55W119IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPE1bXT59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBjcmVhdGVkIG1vZGVsIGluc3RhbmNlc1xuICAgKi9cbiAgY3JlYXRlQWxsKG1vZGVsczogTVtdLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8TVtdPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyBtdWx0aXBsZSBtb2RlbCBpbnN0YW5jZXMgZnJvbSB0aGUgZGF0YWJhc2UgYnkgdGhlaXIga2V5c1xuICAgKiBAc3VtbWFyeSBCdWxrIG9wZXJhdGlvbiB0byByZWFkIG11bHRpcGxlIG1vZGVscyBhdCBvbmNlXG4gICAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGVcbiAgICogQHBhcmFtIHsoc3RyaW5nW118bnVtYmVyW10pfSBrZXlzIC0gQXJyYXkgb2YgcHJpbWFyeSBrZXlzIHRvIHJldHJpZXZlXG4gICAqIEBwYXJhbSB7Li4uYW55W119IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPE1bXT59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSByZXRyaWV2ZWQgbW9kZWwgaW5zdGFuY2VzXG4gICAqL1xuICByZWFkQWxsKGtleXM6IHN0cmluZ1tdIHwgbnVtYmVyW10sIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxNW10+O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlcyBtdWx0aXBsZSBtb2RlbCBpbnN0YW5jZXMgaW4gdGhlIGRhdGFiYXNlXG4gICAqIEBzdW1tYXJ5IEJ1bGsgb3BlcmF0aW9uIHRvIHVwZGF0ZSBtdWx0aXBsZSBtb2RlbHMgYXQgb25jZVxuICAgKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlXG4gICAqIEBwYXJhbSB7TVtdfSBtb2RlbHMgLSBBcnJheSBvZiBtb2RlbCBpbnN0YW5jZXMgdG8gdXBkYXRlXG4gICAqIEBwYXJhbSB7Li4uYW55W119IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPE1bXT59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSB1cGRhdGVkIG1vZGVsIGluc3RhbmNlc1xuICAgKi9cbiAgdXBkYXRlQWxsKG1vZGVsczogTVtdLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8TVtdPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZXMgbXVsdGlwbGUgbW9kZWwgaW5zdGFuY2VzIGZyb20gdGhlIGRhdGFiYXNlIGJ5IHRoZWlyIGtleXNcbiAgICogQHN1bW1hcnkgQnVsayBvcGVyYXRpb24gdG8gZGVsZXRlIG11bHRpcGxlIG1vZGVscyBhdCBvbmNlXG4gICAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGVcbiAgICogQHBhcmFtIHsoc3RyaW5nW118bnVtYmVyW10pfSBrZXlzIC0gQXJyYXkgb2YgcHJpbWFyeSBrZXlzIHRvIGRlbGV0ZVxuICAgKiBAcGFyYW0gey4uLmFueVtdfSBhcmdzIC0gQWRkaXRpb25hbCBhcmd1bWVudHNcbiAgICogQHJldHVybiB7UHJvbWlzZTxNW10+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgZGVsZXRlZCBtb2RlbCBpbnN0YW5jZXNcbiAgICovXG4gIGRlbGV0ZUFsbChrZXlzOiBzdHJpbmdbXSB8IG51bWJlcltdLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8TVtdPjtcbn1cbiJdfQ==
|
|
@@ -1,7 +1,46 @@
|
|
|
1
1
|
import { CrudOperator } from "./CrudOperator";
|
|
2
|
+
/**
|
|
3
|
+
* @description Interface for bulk CRUD operations
|
|
4
|
+
* @summary Extends the basic CRUD operations to support bulk operations on multiple models at once
|
|
5
|
+
* @template M - The model type
|
|
6
|
+
* @interface BulkCrudOperator
|
|
7
|
+
* @memberOf module:db-decorators
|
|
8
|
+
*/
|
|
2
9
|
export interface BulkCrudOperator<M> extends CrudOperator<M> {
|
|
10
|
+
/**
|
|
11
|
+
* @description Creates multiple model instances in the database
|
|
12
|
+
* @summary Bulk operation to create multiple models at once
|
|
13
|
+
* @template M - The model type
|
|
14
|
+
* @param {M[]} models - Array of model instances to create
|
|
15
|
+
* @param {...any[]} args - Additional arguments
|
|
16
|
+
* @return {Promise<M[]>} Promise resolving to the created model instances
|
|
17
|
+
*/
|
|
3
18
|
createAll(models: M[], ...args: any[]): Promise<M[]>;
|
|
19
|
+
/**
|
|
20
|
+
* @description Retrieves multiple model instances from the database by their keys
|
|
21
|
+
* @summary Bulk operation to read multiple models at once
|
|
22
|
+
* @template M - The model type
|
|
23
|
+
* @param {(string[]|number[])} keys - Array of primary keys to retrieve
|
|
24
|
+
* @param {...any[]} args - Additional arguments
|
|
25
|
+
* @return {Promise<M[]>} Promise resolving to the retrieved model instances
|
|
26
|
+
*/
|
|
4
27
|
readAll(keys: string[] | number[], ...args: any[]): Promise<M[]>;
|
|
28
|
+
/**
|
|
29
|
+
* @description Updates multiple model instances in the database
|
|
30
|
+
* @summary Bulk operation to update multiple models at once
|
|
31
|
+
* @template M - The model type
|
|
32
|
+
* @param {M[]} models - Array of model instances to update
|
|
33
|
+
* @param {...any[]} args - Additional arguments
|
|
34
|
+
* @return {Promise<M[]>} Promise resolving to the updated model instances
|
|
35
|
+
*/
|
|
5
36
|
updateAll(models: M[], ...args: any[]): Promise<M[]>;
|
|
37
|
+
/**
|
|
38
|
+
* @description Deletes multiple model instances from the database by their keys
|
|
39
|
+
* @summary Bulk operation to delete multiple models at once
|
|
40
|
+
* @template M - The model type
|
|
41
|
+
* @param {(string[]|number[])} keys - Array of primary keys to delete
|
|
42
|
+
* @param {...any[]} args - Additional arguments
|
|
43
|
+
* @return {Promise<M[]>} Promise resolving to the deleted model instances
|
|
44
|
+
*/
|
|
6
45
|
deleteAll(keys: string[] | number[], ...args: any[]): Promise<M[]>;
|
|
7
46
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dHVhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmZhY2VzL0NvbnRleHR1YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wZXJhdGlvbktleXMgfSBmcm9tIFwiLi4vb3BlcmF0aW9uc1wiO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCIuLi9yZXBvc2l0b3J5XCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5RmxhZ3MgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS90eXBlc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIGNvbnRleHQtYXdhcmUgb3BlcmF0aW9uc1xuICogQHN1bW1hcnkgUHJvdmlkZXMgY29udGV4dCBtYW5hZ2VtZW50IGZvciBkYXRhYmFzZSBvcGVyYXRpb25zXG4gKiBAdGVtcGxhdGUgRiAtIFR5cGUgZXh0ZW5kaW5nIFJlcG9zaXRvcnlGbGFncywgZGVmYXVsdHMgdG8gUmVwb3NpdG9yeUZsYWdzXG4gKiBAdGVtcGxhdGUgQyAtIFR5cGUgZXh0ZW5kaW5nIENvbnRleHQ8Rj4sIGRlZmF1bHRzIHRvIENvbnRleHQ8Rj5cbiAqIEBpbnRlcmZhY2UgQ29udGV4dHVhbFxuICogQG1lbWJlck9mIG1vZHVsZTpkYi1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dHVhbDxcbiAgRiBleHRlbmRzIFJlcG9zaXRvcnlGbGFncyA9IFJlcG9zaXRvcnlGbGFncyxcbiAgQyBleHRlbmRzIENvbnRleHQ8Rj4gPSBDb250ZXh0PEY+LFxuPiB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIGNvbnRleHQgZm9yIGEgc3BlY2lmaWMgb3BlcmF0aW9uXG4gICAqIEBzdW1tYXJ5IEdlbmVyYXRlcyBhbiBvcGVyYXRpb24tc3BlY2lmaWMgY29udGV4dCB3aXRoIGN1c3RvbSBmbGFnc1xuICAgKiBAcGFyYW0geyhPcGVyYXRpb25LZXlzLkNSRUFURXxPcGVyYXRpb25LZXlzLlJFQUR8T3BlcmF0aW9uS2V5cy5VUERBVEV8T3BlcmF0aW9uS2V5cy5ERUxFVEUpfSBvcGVyYXRpb24gLSBUaGUgb3BlcmF0aW9uIHR5cGVcbiAgICogQHRlbXBsYXRlIEYgLSBUeXBlIGV4dGVuZGluZyBSZXBvc2l0b3J5RmxhZ3MsIGRlZmF1bHRzIHRvIFJlcG9zaXRvcnlGbGFnc1xuICAgKiBAcGFyYW0ge1BhcnRpYWw8Rj59IG92ZXJyaWRlcyAtIEN1c3RvbSBmbGFnIG92ZXJyaWRlcyBmb3IgdGhpcyBjb250ZXh0XG4gICAqIEBwYXJhbSB7Li4uYW55W119IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPEM+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgY3JlYXRlZCBjb250ZXh0XG4gICAqL1xuICBjb250ZXh0KFxuICAgIG9wZXJhdGlvbjpcbiAgICAgIHwgT3BlcmF0aW9uS2V5cy5DUkVBVEVcbiAgICAgIHwgT3BlcmF0aW9uS2V5cy5SRUFEXG4gICAgICB8IE9wZXJhdGlvbktleXMuVVBEQVRFXG4gICAgICB8IE9wZXJhdGlvbktleXMuREVMRVRFLFxuICAgIG92ZXJyaWRlczogUGFydGlhbDxGPixcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPEM+O1xufVxuIl19
|
|
@@ -1,6 +1,23 @@
|
|
|
1
1
|
import { OperationKeys } from "../operations";
|
|
2
2
|
import { Context } from "../repository";
|
|
3
3
|
import { RepositoryFlags } from "../repository/types";
|
|
4
|
-
|
|
5
|
-
|
|
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<F extends RepositoryFlags = RepositoryFlags, C extends Context<F> = Context<F>> {
|
|
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: OperationKeys.CREATE | OperationKeys.READ | OperationKeys.UPDATE | OperationKeys.DELETE, overrides: Partial<F>, ...args: any[]): Promise<C>;
|
|
6
23
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J1ZE9wZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludGVyZmFjZXMvQ3J1ZE9wZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiBCYXNpYyBDUlVEIG9wZXJhdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBFeHBvc2VzIGEgc3RhbmRhcmQgQ3JlYXRlLCBSZWFkLCBVcGRhdGUsIERlbGV0ZSBBUEkgZm9yIGRhdGFiYXNlIG9wZXJhdGlvbnNcbiAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGVcbiAqIEBpbnRlcmZhY2UgQ3J1ZE9wZXJhdG9yXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRiLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcnVkT3BlcmF0b3I8TT4ge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBuZXcgbW9kZWwgaW5zdGFuY2UgaW4gdGhlIGRhdGFiYXNlXG4gICAqIEBzdW1tYXJ5IENyZWF0ZSBhIG5ldyBtb2RlbFxuICAgKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlXG4gICAqIEBwYXJhbSB7TX0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2UgdG8gY3JlYXRlXG4gICAqIEBwYXJhbSB7Li4uYW55W119IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPE0+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgY3JlYXRlZCBtb2RlbCBpbnN0YW5jZVxuICAgKi9cbiAgY3JlYXRlKG1vZGVsOiBNLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8TT47XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIGEgbW9kZWwgaW5zdGFuY2UgZnJvbSB0aGUgZGF0YWJhc2UgYnkgaXRzIGtleVxuICAgKiBAc3VtbWFyeSBSZWFkIGEgbW9kZWxcbiAgICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZVxuICAgKiBAcGFyYW0geyhzdHJpbmd8bnVtYmVyKX0ga2V5IC0gVGhlIHByaW1hcnkga2V5IG9mIHRoZSBtb2RlbCB0byByZXRyaWV2ZVxuICAgKiBAcGFyYW0gey4uLmFueVtdfSBhcmdzIC0gQWRkaXRpb25hbCBhcmd1bWVudHNcbiAgICogQHJldHVybiB7UHJvbWlzZTxNPn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIHJldHJpZXZlZCBtb2RlbCBpbnN0YW5jZVxuICAgKi9cbiAgcmVhZChrZXk6IHN0cmluZyB8IG51bWJlciwgLi4uYXJnczogYW55W10pOiBQcm9taXNlPE0+O1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZXMgYSBtb2RlbCBpbnN0YW5jZSBpbiB0aGUgZGF0YWJhc2VcbiAgICogQHN1bW1hcnkgVXBkYXRlIGEgbW9kZWxcbiAgICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZVxuICAgKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIHRvIHVwZGF0ZVxuICAgKiBAcGFyYW0gey4uLmFueVtdfSBhcmdzIC0gQWRkaXRpb25hbCBhcmd1bWVudHNcbiAgICogQHJldHVybiB7UHJvbWlzZTxNPn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIHVwZGF0ZWQgbW9kZWwgaW5zdGFuY2VcbiAgICovXG4gIHVwZGF0ZShtb2RlbDogTSwgLi4uYXJnczogYW55W10pOiBQcm9taXNlPE0+O1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZXMgYSBtb2RlbCBpbnN0YW5jZSBmcm9tIHRoZSBkYXRhYmFzZSBieSBpdHMga2V5XG4gICAqIEBzdW1tYXJ5IERlbGV0ZSBhIG1vZGVsXG4gICAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGVcbiAgICogQHBhcmFtIHsoc3RyaW5nfG51bWJlcil9IGtleSAtIFRoZSBwcmltYXJ5IGtleSBvZiB0aGUgbW9kZWwgdG8gZGVsZXRlXG4gICAqIEBwYXJhbSB7Li4uYW55W119IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPE0+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgZGVsZXRlZCBtb2RlbCBpbnN0YW5jZVxuICAgKi9cbiAgZGVsZXRlKGtleTogc3RyaW5nIHwgbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8TT47XG59XG4iXX0=
|
|
@@ -1,42 +1,45 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @
|
|
3
|
-
* @
|
|
4
|
-
*
|
|
2
|
+
* @description Basic CRUD operations interface
|
|
3
|
+
* @summary Exposes a standard Create, Read, Update, Delete API for database operations
|
|
4
|
+
* @template M - The model type
|
|
5
5
|
* @interface CrudOperator
|
|
6
|
-
*
|
|
7
|
-
* @category Managers
|
|
6
|
+
* @memberOf module:db-decorators
|
|
8
7
|
*/
|
|
9
8
|
export interface CrudOperator<M> {
|
|
10
9
|
/**
|
|
10
|
+
* @description Creates a new model instance in the database
|
|
11
11
|
* @summary Create a new model
|
|
12
|
-
* @
|
|
13
|
-
* @param {
|
|
14
|
-
*
|
|
15
|
-
* @
|
|
12
|
+
* @template M - The model type
|
|
13
|
+
* @param {M} model - The model instance to create
|
|
14
|
+
* @param {...any[]} args - Additional arguments
|
|
15
|
+
* @return {Promise<M>} Promise resolving to the created model instance
|
|
16
16
|
*/
|
|
17
17
|
create(model: M, ...args: any[]): Promise<M>;
|
|
18
18
|
/**
|
|
19
|
+
* @description Retrieves a model instance from the database by its key
|
|
19
20
|
* @summary Read a model
|
|
20
|
-
* @
|
|
21
|
-
* @param {
|
|
22
|
-
*
|
|
23
|
-
* @
|
|
21
|
+
* @template M - The model type
|
|
22
|
+
* @param {(string|number)} key - The primary key of the model to retrieve
|
|
23
|
+
* @param {...any[]} args - Additional arguments
|
|
24
|
+
* @return {Promise<M>} Promise resolving to the retrieved model instance
|
|
24
25
|
*/
|
|
25
26
|
read(key: string | number, ...args: any[]): Promise<M>;
|
|
26
27
|
/**
|
|
27
|
-
* @
|
|
28
|
-
* @
|
|
29
|
-
* @
|
|
30
|
-
*
|
|
31
|
-
* @
|
|
28
|
+
* @description Updates a model instance in the database
|
|
29
|
+
* @summary Update a model
|
|
30
|
+
* @template M - The model type
|
|
31
|
+
* @param {M} model - The model instance to update
|
|
32
|
+
* @param {...any[]} args - Additional arguments
|
|
33
|
+
* @return {Promise<M>} Promise resolving to the updated model instance
|
|
32
34
|
*/
|
|
33
35
|
update(model: M, ...args: any[]): Promise<M>;
|
|
34
36
|
/**
|
|
35
|
-
* @
|
|
36
|
-
* @
|
|
37
|
-
* @
|
|
38
|
-
*
|
|
39
|
-
* @
|
|
37
|
+
* @description Deletes a model instance from the database by its key
|
|
38
|
+
* @summary Delete a model
|
|
39
|
+
* @template M - The model type
|
|
40
|
+
* @param {(string|number)} key - The primary key of the model to delete
|
|
41
|
+
* @param {...any[]} args - Additional arguments
|
|
42
|
+
* @return {Promise<M>} Promise resolving to the deleted model instance
|
|
40
43
|
*/
|
|
41
44
|
delete(key: string | number, ...args: any[]): Promise<M>;
|
|
42
45
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVJlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9JUmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWwsIE1vZGVsQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBCdWxrQ3J1ZE9wZXJhdG9yIH0gZnJvbSBcIi4vQnVsa0NydWRPcGVyYXRvclwiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeUZsYWdzIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvdHlwZXNcIjtcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeVwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZXBvc2l0b3J5IGludGVyZmFjZSBmb3IgZGF0YWJhc2Ugb3BlcmF0aW9uc1xuICogQHN1bW1hcnkgSW50ZXJmYWNlIGhvbGRpbmcgYmFzaWMgQ1JVRCBBUElzIGZvciBkYXRhYmFzZSBtb2RlbHMsIHByb3ZpZGluZyBzdGFuZGFyZCBvcGVyYXRpb25zIGFuZCBtZXRhZGF0YVxuICogQHRlbXBsYXRlIE0gLSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICogQHRlbXBsYXRlIEYgLSBUeXBlIGV4dGVuZGluZyBSZXBvc2l0b3J5RmxhZ3MsIGRlZmF1bHRzIHRvIFJlcG9zaXRvcnlGbGFnc1xuICogQHRlbXBsYXRlIEMgLSBUeXBlIGV4dGVuZGluZyBDb250ZXh0PEY+LCBkZWZhdWx0cyB0byBDb250ZXh0PEY+XG4gKiBAaW50ZXJmYWNlIElSZXBvc2l0b3J5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRiLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUmVwb3NpdG9yeTxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBGIGV4dGVuZHMgUmVwb3NpdG9yeUZsYWdzID0gUmVwb3NpdG9yeUZsYWdzLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIEMgZXh0ZW5kcyBDb250ZXh0PEY+ID0gQ29udGV4dDxGPixcbj4gZXh0ZW5kcyBCdWxrQ3J1ZE9wZXJhdG9yPE0+IHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgY29uc3RydWN0b3Igb2YgdGhlIG1vZGVsIGNsYXNzXG4gICAqIEBzdW1tYXJ5IFJlZmVyZW5jZSB0byB0aGUgbW9kZWwgY2xhc3MgY29uc3RydWN0b3IgdXNlZCB0byBjcmVhdGUgbmV3IGluc3RhbmNlc1xuICAgKi9cbiAgcmVhZG9ubHkgY2xhc3M6IE1vZGVsQ29uc3RydWN0b3I8TT47XG5cbiAgcmVhZG9ubHkgcGs6IGtleW9mIE07XG59XG4iXX0=
|
|
@@ -3,11 +3,19 @@ import { BulkCrudOperator } from "./BulkCrudOperator";
|
|
|
3
3
|
import { RepositoryFlags } from "../repository/types";
|
|
4
4
|
import { Context } from "../repository";
|
|
5
5
|
/**
|
|
6
|
-
* @
|
|
7
|
-
* @
|
|
6
|
+
* @description Repository interface for database operations
|
|
7
|
+
* @summary Interface holding basic CRUD APIs for database models, providing standard operations and metadata
|
|
8
|
+
* @template M - Type extending Model
|
|
9
|
+
* @template F - Type extending RepositoryFlags, defaults to RepositoryFlags
|
|
10
|
+
* @template C - Type extending Context<F>, defaults to Context<F>
|
|
8
11
|
* @interface IRepository
|
|
12
|
+
* @memberOf module:db-decorators
|
|
9
13
|
*/
|
|
10
14
|
export interface IRepository<M extends Model, F extends RepositoryFlags = RepositoryFlags, C extends Context<F> = Context<F>> extends BulkCrudOperator<M> {
|
|
15
|
+
/**
|
|
16
|
+
* @description The constructor of the model class
|
|
17
|
+
* @summary Reference to the model class constructor used to create new instances
|
|
18
|
+
*/
|
|
11
19
|
readonly class: ModelConstructor<M>;
|
|
12
20
|
readonly pk: keyof M;
|
|
13
21
|
}
|