@decaf-ts/db-decorators 0.6.1 → 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.
Files changed (141) hide show
  1. package/LICENSE.md +21 -157
  2. package/README.md +571 -10
  3. package/dist/db-decorators.cjs +1352 -322
  4. package/dist/db-decorators.esm.cjs +1352 -323
  5. package/lib/esm/identity/decorators.d.ts +7 -0
  6. package/lib/esm/identity/decorators.js +11 -4
  7. package/lib/esm/identity/index.js +3 -3
  8. package/lib/esm/identity/utils.d.ts +36 -23
  9. package/lib/esm/identity/utils.js +38 -25
  10. package/lib/esm/index.d.ts +12 -27
  11. package/lib/esm/index.js +13 -28
  12. package/lib/esm/interfaces/BulkCrudOperator.d.ts +39 -0
  13. package/lib/esm/interfaces/BulkCrudOperator.js +1 -1
  14. package/lib/esm/interfaces/Contextual.d.ts +17 -0
  15. package/lib/esm/interfaces/Contextual.js +1 -1
  16. package/lib/esm/interfaces/CrudOperator.d.ts +26 -23
  17. package/lib/esm/interfaces/CrudOperator.js +1 -1
  18. package/lib/esm/interfaces/IRepository.d.ts +10 -2
  19. package/lib/esm/interfaces/IRepository.js +1 -1
  20. package/lib/esm/interfaces/index.js +5 -5
  21. package/lib/esm/model/constants.d.ts +11 -13
  22. package/lib/esm/model/constants.js +12 -14
  23. package/lib/esm/model/decorators.d.ts +112 -23
  24. package/lib/esm/model/decorators.js +119 -29
  25. package/lib/esm/model/index.d.ts +1 -0
  26. package/lib/esm/model/index.js +7 -6
  27. package/lib/esm/model/model.d.ts +2 -141
  28. package/lib/esm/model/model.js +2 -13
  29. package/lib/esm/model/overrides.d.ts +1 -0
  30. package/lib/esm/model/overrides.js +23 -0
  31. package/lib/esm/model/utils.d.ts +39 -0
  32. package/lib/esm/model/utils.js +42 -3
  33. package/lib/esm/model/validation.d.ts +26 -8
  34. package/lib/esm/model/validation.js +29 -11
  35. package/lib/esm/operations/Operations.d.ts +65 -3
  36. package/lib/esm/operations/Operations.js +68 -6
  37. package/lib/esm/operations/OperationsRegistry.d.ts +44 -16
  38. package/lib/esm/operations/OperationsRegistry.js +46 -18
  39. package/lib/esm/operations/constants.d.ts +27 -8
  40. package/lib/esm/operations/constants.js +16 -9
  41. package/lib/esm/operations/decorators.d.ts +140 -134
  42. package/lib/esm/operations/decorators.js +152 -137
  43. package/lib/esm/operations/index.js +6 -6
  44. package/lib/esm/operations/types.d.ts +10 -0
  45. package/lib/esm/operations/types.js +1 -1
  46. package/lib/esm/repository/BaseRepository.d.ts +322 -0
  47. package/lib/esm/repository/BaseRepository.js +297 -7
  48. package/lib/esm/repository/Context.d.ts +153 -2
  49. package/lib/esm/repository/Context.js +154 -6
  50. package/lib/esm/repository/Repository.d.ts +89 -0
  51. package/lib/esm/repository/Repository.js +96 -7
  52. package/lib/esm/repository/constants.d.ts +7 -0
  53. package/lib/esm/repository/constants.js +8 -1
  54. package/lib/esm/repository/errors.d.ts +61 -34
  55. package/lib/esm/repository/errors.js +62 -35
  56. package/lib/esm/repository/index.js +9 -9
  57. package/lib/esm/repository/types.d.ts +25 -0
  58. package/lib/esm/repository/types.js +1 -1
  59. package/lib/esm/repository/utils.d.ts +11 -0
  60. package/lib/esm/repository/utils.js +4 -4
  61. package/lib/esm/repository/wrappers.d.ts +2 -2
  62. package/lib/esm/repository/wrappers.js +5 -5
  63. package/lib/esm/validation/constants.d.ts +20 -5
  64. package/lib/esm/validation/constants.js +22 -7
  65. package/lib/esm/validation/decorators.d.ts +101 -19
  66. package/lib/esm/validation/decorators.js +109 -27
  67. package/lib/esm/validation/index.js +5 -5
  68. package/lib/esm/validation/validation.js +10 -2
  69. package/lib/esm/validation/validators/ReadOnlyValidator.d.ts +32 -8
  70. package/lib/esm/validation/validators/ReadOnlyValidator.js +34 -10
  71. package/lib/esm/validation/validators/TimestampValidator.d.ts +37 -3
  72. package/lib/esm/validation/validators/TimestampValidator.js +39 -5
  73. package/lib/esm/validation/validators/UpdateValidator.d.ts +28 -11
  74. package/lib/esm/validation/validators/UpdateValidator.js +23 -8
  75. package/lib/esm/validation/validators/index.js +4 -4
  76. package/lib/identity/decorators.cjs +8 -1
  77. package/lib/identity/decorators.d.ts +7 -0
  78. package/lib/identity/utils.cjs +35 -22
  79. package/lib/identity/utils.d.ts +36 -23
  80. package/lib/index.cjs +14 -28
  81. package/lib/index.d.ts +12 -27
  82. package/lib/interfaces/BulkCrudOperator.cjs +1 -1
  83. package/lib/interfaces/BulkCrudOperator.d.ts +39 -0
  84. package/lib/interfaces/Contextual.cjs +1 -1
  85. package/lib/interfaces/Contextual.d.ts +17 -0
  86. package/lib/interfaces/CrudOperator.cjs +1 -1
  87. package/lib/interfaces/CrudOperator.d.ts +26 -23
  88. package/lib/interfaces/IRepository.cjs +1 -1
  89. package/lib/interfaces/IRepository.d.ts +10 -2
  90. package/lib/model/constants.cjs +12 -14
  91. package/lib/model/constants.d.ts +11 -13
  92. package/lib/model/decorators.cjs +114 -24
  93. package/lib/model/decorators.d.ts +112 -23
  94. package/lib/model/index.cjs +2 -1
  95. package/lib/model/index.d.ts +1 -0
  96. package/lib/model/model.cjs +1 -13
  97. package/lib/model/model.d.ts +2 -141
  98. package/lib/model/overrides.cjs +25 -0
  99. package/lib/model/overrides.d.ts +1 -0
  100. package/lib/model/utils.cjs +40 -1
  101. package/lib/model/utils.d.ts +39 -0
  102. package/lib/model/validation.cjs +27 -9
  103. package/lib/model/validation.d.ts +26 -8
  104. package/lib/operations/Operations.cjs +66 -4
  105. package/lib/operations/Operations.d.ts +65 -3
  106. package/lib/operations/OperationsRegistry.cjs +45 -17
  107. package/lib/operations/OperationsRegistry.d.ts +44 -16
  108. package/lib/operations/constants.cjs +16 -9
  109. package/lib/operations/constants.d.ts +27 -8
  110. package/lib/operations/decorators.cjs +150 -135
  111. package/lib/operations/decorators.d.ts +140 -134
  112. package/lib/operations/types.cjs +1 -1
  113. package/lib/operations/types.d.ts +10 -0
  114. package/lib/repository/BaseRepository.cjs +291 -1
  115. package/lib/repository/BaseRepository.d.ts +322 -0
  116. package/lib/repository/Context.cjs +153 -5
  117. package/lib/repository/Context.d.ts +153 -2
  118. package/lib/repository/Repository.cjs +90 -1
  119. package/lib/repository/Repository.d.ts +89 -0
  120. package/lib/repository/constants.cjs +8 -1
  121. package/lib/repository/constants.d.ts +7 -0
  122. package/lib/repository/errors.cjs +62 -35
  123. package/lib/repository/errors.d.ts +61 -34
  124. package/lib/repository/types.cjs +1 -1
  125. package/lib/repository/types.d.ts +25 -0
  126. package/lib/repository/utils.cjs +1 -1
  127. package/lib/repository/utils.d.ts +11 -0
  128. package/lib/repository/wrappers.cjs +3 -3
  129. package/lib/repository/wrappers.d.ts +2 -2
  130. package/lib/validation/constants.cjs +21 -6
  131. package/lib/validation/constants.d.ts +20 -5
  132. package/lib/validation/decorators.cjs +102 -20
  133. package/lib/validation/decorators.d.ts +101 -19
  134. package/lib/validation/validation.cjs +9 -1
  135. package/lib/validation/validators/ReadOnlyValidator.cjs +33 -9
  136. package/lib/validation/validators/ReadOnlyValidator.d.ts +32 -8
  137. package/lib/validation/validators/TimestampValidator.cjs +38 -4
  138. package/lib/validation/validators/TimestampValidator.d.ts +37 -3
  139. package/lib/validation/validators/UpdateValidator.cjs +23 -8
  140. package/lib/validation/validators/UpdateValidator.d.ts +28 -11
  141. 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
- * @summary Base class for an Update validator
4
- *
5
- * @param {string} [message] error message. defaults to {@link DecoratorMessages#DEFAULT}
6
- * @param {string[]} [acceptedTypes] the accepted value types by the decorator
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
- * @abstract
10
- * @extends Validator
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXBkYXRlVmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3ZhbGlkYXRpb24vdmFsaWRhdG9ycy9VcGRhdGVWYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHNCQUFzQixJQUFJLGlCQUFpQixFQUMzQyxTQUFTLEdBQ1YsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV4Qzs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sT0FBZ0IsZUFBZ0IsU0FBUSxTQUFTO0lBQ3JELFlBQ0UsVUFBa0IsaUJBQWlCLENBQUMsT0FBTyxFQUMzQyxHQUFHLGFBQXVCO1FBRTFCLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxhQUFhLENBQUMsQ0FBQztJQUNuQyxDQUFDO0NBYUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBERUZBVUxUX0VSUk9SX01FU1NBR0VTIGFzIERlY29yYXRvck1lc3NhZ2VzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBCYXNlIGNsYXNzIGZvciBhbiBVcGRhdGUgdmFsaWRhdG9yXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSBlcnJvciBtZXNzYWdlLiBkZWZhdWx0cyB0byB7QGxpbmsgRGVjb3JhdG9yTWVzc2FnZXMjREVGQVVMVH1cbiAqIEBwYXJhbSB7c3RyaW5nW119IFthY2NlcHRlZFR5cGVzXSB0aGUgYWNjZXB0ZWQgdmFsdWUgdHlwZXMgYnkgdGhlIGRlY29yYXRvclxuICpcbiAqIEBjbGFzcyBVcGRhdGVWYWxpZGF0b3JcbiAqIEBhYnN0cmFjdFxuICogQGV4dGVuZHMgVmFsaWRhdG9yXG4gKlxuICogQGNhdGVnb3J5IFZhbGlkYXRvcnNcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFVwZGF0ZVZhbGlkYXRvciBleHRlbmRzIFZhbGlkYXRvciB7XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcgPSBEZWNvcmF0b3JNZXNzYWdlcy5ERUZBVUxULFxuICAgIC4uLmFjY2VwdGVkVHlwZXM6IHN0cmluZ1tdXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UsIC4uLmFjY2VwdGVkVHlwZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IHZhbGlkYXRlcyBhIHZhbHVlIGJ5IGNvbXBhcmluZyB0byBpdHMgb2xkIHZlcnNpb25cbiAgICogQHBhcmFtIHthbnl9IHZhbHVlXG4gICAqIEBwYXJhbSB7YW55fSBvbGRWYWx1ZVxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgdXBkYXRlSGFzRXJyb3JzKFxuICAgIHZhbHVlOiBhbnksXG4gICAgb2xkVmFsdWU6IGFueSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG4iXX0=
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdmFsaWRhdGlvbi92YWxpZGF0b3JzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vUmVhZE9ubHlWYWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1RpbWVzdGFtcFZhbGlkYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vVXBkYXRlVmFsaWRhdG9yXCI7XG4iXX0=
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pZGVudGl0eS9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBTUEsZ0JBTUM7QUFaRCx5RUFBd0U7QUFDeEUsMERBQXlDO0FBQ3pDLHdEQUE0QztBQUM1QywwREFBMkM7QUFDM0MscURBQTZDO0FBRTdDLFNBQWdCLEVBQUU7SUFDaEIsT0FBTyxJQUFBLGtCQUFLLEVBQ1YsSUFBQSwrQkFBUSxHQUFFLEVBQ1YsSUFBQSxxQkFBUSxHQUFFLEVBQ1YsSUFBQSxtQ0FBWSxFQUFDLHVCQUFVLENBQUMsR0FBRyxDQUFDLGtCQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQzVDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvcE1ldGFkYXRhLCByZXF1aXJlZCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHJlYWRvbmx5IH0gZnJvbSBcIi4uL3ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IERCS2V5cyB9IGZyb20gXCIuLi9tb2RlbC9jb25zdGFudHNcIjtcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeVwiO1xuaW1wb3J0IHsgYXBwbHkgfSBmcm9tIFwiQGRlY2FmLXRzL3JlZmxlY3Rpb25cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlkKCkge1xuICByZXR1cm4gYXBwbHkoXG4gICAgcmVxdWlyZWQoKSxcbiAgICByZWFkb25seSgpLFxuICAgIHByb3BNZXRhZGF0YShSZXBvc2l0b3J5LmtleShEQktleXMuSUQpLCB7fSlcbiAgKTtcbn1cbiJdfQ==
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;
@@ -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
- * @summary Returns the primary key attribute for a {@link Model}
11
- * @description searches in all the properties in the object for an {@link id} decorated property
12
- *
13
- * @param {Model} model
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
- * @category managers
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
- * @summary Returns the primary key value for a {@link Model}
46
- * @description searches in all the properties in the object for an {@link pk} decorated property
47
- *
48
- * @param {Model} model
49
- * @param {boolean} [returnEmpty]
50
- * @return {string | number | bigint} primary key
51
- *
52
- * @throws {InternalError} if no property or more than one properties are {@link pk} decorated
53
- * @throws {NotFoundError} returnEmpty is false and no value is set on the {@link pk} decorated property
54
- *
55
- * @function findModelID
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
- * @category managers
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWRlbnRpdHkvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFrQkEsd0NBOEJDO0FBaUJELGtDQVdDO0FBNUVELHdEQUE0QztBQUM1QyxxREFBd0U7QUFDeEUseUVBQXNFO0FBQ3RFLHVEQUFxRDtBQUVyRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxTQUFnQixjQUFjLENBQWtCLEtBQVE7SUFDdEQsTUFBTSxVQUFVLEdBQUcsSUFBQSx5Q0FBaUMsRUFDbEQsS0FBSyxFQUNMLFNBQVMsRUFDVCxrQkFBTSxDQUFDLE9BQU8sR0FBRyxrQkFBTSxDQUFDLEVBQUUsQ0FDM0IsQ0FBQztJQUNGLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBb0IsQ0FBQyxDQUFDLE1BQU0sQ0FDOUQsQ0FBQyxLQUFtQyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7UUFDcEQsTUFBTSxRQUFRLEdBQUksSUFBMEIsQ0FBQyxNQUFNLENBQ2pELENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLGdDQUFTLENBQUMsSUFBSSxDQUNoQyxDQUFDO1FBQ0YsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLEVBQ0QsRUFBRSxDQUNILENBQUM7SUFFRixJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNO1FBQ3BELE1BQU0sSUFBSSxzQkFBYSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFDbEUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxzQkFBYSxDQUFDLElBQUEseUJBQUUsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxJQUFJLENBQUMsTUFBTTtRQUFFLE1BQU0sSUFBSSxzQkFBYSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFDN0UsT0FBTztRQUNMLEVBQUUsRUFBRSxNQUFpQjtRQUNyQixLQUFLLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUs7S0FDckMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILFNBQWdCLFdBQVcsQ0FDekIsS0FBUSxFQUNSLFdBQVcsR0FBRyxLQUFLO0lBRW5CLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLElBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxJQUFJLENBQUMsV0FBVztRQUNoRCxNQUFNLElBQUksc0JBQWEsQ0FDckIscURBQXFELE1BQWdCLEVBQUUsQ0FDeEUsQ0FBQztJQUNKLE9BQU8sT0FBbUMsQ0FBQztBQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREJLZXlzIH0gZnJvbSBcIi4uL21vZGVsL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgZ2V0QWxsUHJvcGVydHlEZWNvcmF0b3JzUmVjdXJzaXZlIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvdXRpbHNcIjtcbmltcG9ydCB7IE1vZGVsLCBNb2RlbEtleXMsIHNmIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L2Vycm9yc1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFJldHVybnMgdGhlIHByaW1hcnkga2V5IGF0dHJpYnV0ZSBmb3IgYSB7QGxpbmsgTW9kZWx9XG4gKiBAZGVzY3JpcHRpb24gc2VhcmNoZXMgaW4gYWxsIHRoZSBwcm9wZXJ0aWVzIGluIHRoZSBvYmplY3QgZm9yIGFuIHtAbGluayBpZH0gZGVjb3JhdGVkIHByb3BlcnR5XG4gKlxuICogQHBhcmFtIHtNb2RlbH0gbW9kZWxcbiAqXG4gKiBAdGhyb3dzIHtJbnRlcm5hbEVycm9yfSBpZiBubyBwcm9wZXJ0eSBvciBtb3JlIHRoYW4gb25lIHByb3BlcnRpZXMgYXJlIHtAbGluayBpZH0gZGVjb3JhdGVkXG4gKiBvciBubyB2YWx1ZSBpcyBzZXQgaW4gdGhhdCBwcm9wZXJ0eVxuICpcbiAqIEBmdW5jdGlvbiBmaW5kUHJpbWFyeUtleVxuICpcbiAqIEBjYXRlZ29yeSBtYW5hZ2Vyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFByaW1hcnlLZXk8TSBleHRlbmRzIE1vZGVsPihtb2RlbDogTSkge1xuICBjb25zdCBkZWNvcmF0b3JzID0gZ2V0QWxsUHJvcGVydHlEZWNvcmF0b3JzUmVjdXJzaXZlKFxuICAgIG1vZGVsLFxuICAgIHVuZGVmaW5lZCxcbiAgICBEQktleXMuUkVGTEVDVCArIERCS2V5cy5JRFxuICApO1xuICBjb25zdCBpZERlY29yYXRvcnMgPSBPYmplY3QuZW50cmllcyhkZWNvcmF0b3JzIGFzIG9iamVjdCkucmVkdWNlKFxuICAgIChhY2N1bTogeyBbaW5kZXhlcjogc3RyaW5nXTogYW55W10gfSwgW3Byb3AsIGRlY3NdKSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJlZCA9IChkZWNzIGFzIHsga2V5OiBzdHJpbmcgfVtdKS5maWx0ZXIoXG4gICAgICAgIChkKSA9PiBkLmtleSAhPT0gTW9kZWxLZXlzLlRZUEVcbiAgICAgICk7XG4gICAgICBpZiAoZmlsdGVyZWQgJiYgZmlsdGVyZWQubGVuZ3RoKSB7XG4gICAgICAgIGFjY3VtW3Byb3BdID0gYWNjdW1bcHJvcF0gfHwgW107XG4gICAgICAgIGFjY3VtW3Byb3BdLnB1c2goLi4uZmlsdGVyZWQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjY3VtO1xuICAgIH0sXG4gICAge31cbiAgKTtcblxuICBpZiAoIWlkRGVjb3JhdG9ycyB8fCAhT2JqZWN0LmtleXMoaWREZWNvcmF0b3JzKS5sZW5ndGgpXG4gICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJDb3VsZCBub3QgZmluZCBJRCBkZWNvcmF0ZWQgUHJvcGVydHlcIik7XG4gIGlmIChPYmplY3Qua2V5cyhpZERlY29yYXRvcnMpLmxlbmd0aCA+IDEpXG4gICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3Ioc2YoT2JqZWN0LmtleXMoaWREZWNvcmF0b3JzKS5qb2luKFwiLCBcIikpKTtcbiAgY29uc3QgaWRQcm9wID0gT2JqZWN0LmtleXMoaWREZWNvcmF0b3JzKVswXTtcbiAgaWYgKCFpZFByb3ApIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiQ291bGQgbm90IGZpbmQgSUQgZGVjb3JhdGVkIFByb3BlcnR5XCIpO1xuICByZXR1cm4ge1xuICAgIGlkOiBpZFByb3AgYXMga2V5b2YgTSxcbiAgICBwcm9wczogaWREZWNvcmF0b3JzW2lkUHJvcF1bMF0ucHJvcHMsXG4gIH07XG59XG5cbi8qKlxuICogQHN1bW1hcnkgUmV0dXJucyB0aGUgcHJpbWFyeSBrZXkgdmFsdWUgZm9yIGEge0BsaW5rIE1vZGVsfVxuICogQGRlc2NyaXB0aW9uIHNlYXJjaGVzIGluIGFsbCB0aGUgcHJvcGVydGllcyBpbiB0aGUgb2JqZWN0IGZvciBhbiB7QGxpbmsgcGt9IGRlY29yYXRlZCBwcm9wZXJ0eVxuICpcbiAqIEBwYXJhbSB7TW9kZWx9IG1vZGVsXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXR1cm5FbXB0eV1cbiAqIEByZXR1cm4ge3N0cmluZyB8IG51bWJlciB8IGJpZ2ludH0gcHJpbWFyeSBrZXlcbiAqXG4gKiBAdGhyb3dzIHtJbnRlcm5hbEVycm9yfSBpZiBubyBwcm9wZXJ0eSBvciBtb3JlIHRoYW4gb25lIHByb3BlcnRpZXMgYXJlIHtAbGluayBwa30gZGVjb3JhdGVkXG4gKiBAdGhyb3dzIHtOb3RGb3VuZEVycm9yfSByZXR1cm5FbXB0eSBpcyBmYWxzZSBhbmQgbm8gdmFsdWUgaXMgc2V0IG9uIHRoZSB7QGxpbmsgcGt9IGRlY29yYXRlZCBwcm9wZXJ0eVxuICpcbiAqIEBmdW5jdGlvbiBmaW5kTW9kZWxJRFxuICpcbiAqIEBjYXRlZ29yeSBtYW5hZ2Vyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZE1vZGVsSWQ8TSBleHRlbmRzIE1vZGVsPihcbiAgbW9kZWw6IE0sXG4gIHJldHVybkVtcHR5ID0gZmFsc2Vcbik6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCB7XG4gIGNvbnN0IGlkUHJvcCA9IGZpbmRQcmltYXJ5S2V5KG1vZGVsKS5pZDtcbiAgY29uc3QgbW9kZWxJZCA9IG1vZGVsW2lkUHJvcF07XG4gIGlmICh0eXBlb2YgbW9kZWxJZCA9PT0gXCJ1bmRlZmluZWRcIiAmJiAhcmV0dXJuRW1wdHkpXG4gICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICBgTm8gdmFsdWUgZm9yIHRoZSBJZCBpcyBkZWZpbmVkIHVuZGVyIHRoZSBwcm9wZXJ0eSAke2lkUHJvcCBhcyBzdHJpbmd9YFxuICAgICk7XG4gIHJldHVybiBtb2RlbElkIGFzIHN0cmluZyB8IG51bWJlciB8IGJpZ2ludDtcbn1cbiJdfQ==
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaWRlbnRpdHkvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF5QkEsd0NBOEJDO0FBdUJELGtDQVdDO0FBekZELHdEQUE0QztBQUM1QyxxREFBd0U7QUFDeEUseUVBQXNFO0FBQ3RFLHVEQUFxRDtBQUVyRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILFNBQWdCLGNBQWMsQ0FBa0IsS0FBUTtJQUN0RCxNQUFNLFVBQVUsR0FBRyxJQUFBLHlDQUFpQyxFQUNsRCxLQUFLLEVBQ0wsU0FBUyxFQUNULGtCQUFNLENBQUMsT0FBTyxHQUFHLGtCQUFNLENBQUMsRUFBRSxDQUMzQixDQUFDO0lBQ0YsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFvQixDQUFDLENBQUMsTUFBTSxDQUM5RCxDQUFDLEtBQW1DLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtRQUNwRCxNQUFNLFFBQVEsR0FBSSxJQUEwQixDQUFDLE1BQU0sQ0FDakQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssZ0NBQVMsQ0FBQyxJQUFJLENBQ2hDLENBQUM7UUFDRixJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsRUFDRCxFQUFFLENBQ0gsQ0FBQztJQUVGLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU07UUFDcEQsTUFBTSxJQUFJLHNCQUFhLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUNsRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDdEMsTUFBTSxJQUFJLHNCQUFhLENBQUMsSUFBQSx5QkFBRSxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLElBQUksQ0FBQyxNQUFNO1FBQUUsTUFBTSxJQUFJLHNCQUFhLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUM3RSxPQUFPO1FBQ0wsRUFBRSxFQUFFLE1BQWlCO1FBQ3JCLEtBQUssRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztLQUNyQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILFNBQWdCLFdBQVcsQ0FDekIsS0FBUSxFQUNSLFdBQVcsR0FBRyxLQUFLO0lBRW5CLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLElBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxJQUFJLENBQUMsV0FBVztRQUNoRCxNQUFNLElBQUksc0JBQWEsQ0FDckIscURBQXFELE1BQWdCLEVBQUUsQ0FDeEUsQ0FBQztJQUNKLE9BQU8sT0FBbUMsQ0FBQztBQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREJLZXlzIH0gZnJvbSBcIi4uL21vZGVsL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgZ2V0QWxsUHJvcGVydHlEZWNvcmF0b3JzUmVjdXJzaXZlIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvdXRpbHNcIjtcbmltcG9ydCB7IE1vZGVsLCBNb2RlbEtleXMsIHNmIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L2Vycm9yc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBGaW5kcyB0aGUgcHJpbWFyeSBrZXkgYXR0cmlidXRlIGZvciBhIG1vZGVsXG4gKiBAc3VtbWFyeSBTZWFyY2hlcyBpbiBhbGwgdGhlIHByb3BlcnRpZXMgaW4gdGhlIG9iamVjdCBmb3IgYW4ge0BsaW5rIGlkfSBkZWNvcmF0ZWQgcHJvcGVydHkgYW5kIHJldHVybnMgdGhlIHByb3BlcnR5IGtleSBhbmQgbWV0YWRhdGFcbiAqIEBwYXJhbSB7TW9kZWx9IG1vZGVsIC0gVGhlIG1vZGVsIG9iamVjdCB0byBzZWFyY2ggZm9yIHByaW1hcnkga2V5XG4gKiBAcmV0dXJuIHtPYmplY3R9IEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBpZCBwcm9wZXJ0eSBuYW1lIGFuZCBpdHMgbWV0YWRhdGFcbiAqIEBmdW5jdGlvbiBmaW5kUHJpbWFyeUtleVxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDYWxsZXJcbiAqICAgcGFydGljaXBhbnQgZmluZFByaW1hcnlLZXlcbiAqICAgcGFydGljaXBhbnQgZ2V0QWxsUHJvcGVydHlEZWNvcmF0b3JzUmVjdXJzaXZlXG4gKlxuICogICBDYWxsZXItPj5maW5kUHJpbWFyeUtleTogbW9kZWxcbiAqICAgZmluZFByaW1hcnlLZXktPj5nZXRBbGxQcm9wZXJ0eURlY29yYXRvcnNSZWN1cnNpdmU6IGdldCBkZWNvcmF0b3JzXG4gKiAgIGdldEFsbFByb3BlcnR5RGVjb3JhdG9yc1JlY3Vyc2l2ZS0tPj5maW5kUHJpbWFyeUtleTogZGVjb3JhdG9yc1xuICogICBmaW5kUHJpbWFyeUtleS0+PmZpbmRQcmltYXJ5S2V5OiBmaWx0ZXIgSUQgZGVjb3JhdG9yc1xuICogICBmaW5kUHJpbWFyeUtleS0+PmZpbmRQcmltYXJ5S2V5OiB2YWxpZGF0ZSBzaW5nbGUgSUQgcHJvcGVydHlcbiAqICAgZmluZFByaW1hcnlLZXktLT4+Q2FsbGVyOiB7aWQsIHByb3BzfVxuICogQG1lbWJlck9mIG1vZHVsZTpkYi1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUHJpbWFyeUtleTxNIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBNKSB7XG4gIGNvbnN0IGRlY29yYXRvcnMgPSBnZXRBbGxQcm9wZXJ0eURlY29yYXRvcnNSZWN1cnNpdmUoXG4gICAgbW9kZWwsXG4gICAgdW5kZWZpbmVkLFxuICAgIERCS2V5cy5SRUZMRUNUICsgREJLZXlzLklEXG4gICk7XG4gIGNvbnN0IGlkRGVjb3JhdG9ycyA9IE9iamVjdC5lbnRyaWVzKGRlY29yYXRvcnMgYXMgb2JqZWN0KS5yZWR1Y2UoXG4gICAgKGFjY3VtOiB7IFtpbmRleGVyOiBzdHJpbmddOiBhbnlbXSB9LCBbcHJvcCwgZGVjc10pID0+IHtcbiAgICAgIGNvbnN0IGZpbHRlcmVkID0gKGRlY3MgYXMgeyBrZXk6IHN0cmluZyB9W10pLmZpbHRlcihcbiAgICAgICAgKGQpID0+IGQua2V5ICE9PSBNb2RlbEtleXMuVFlQRVxuICAgICAgKTtcbiAgICAgIGlmIChmaWx0ZXJlZCAmJiBmaWx0ZXJlZC5sZW5ndGgpIHtcbiAgICAgICAgYWNjdW1bcHJvcF0gPSBhY2N1bVtwcm9wXSB8fCBbXTtcbiAgICAgICAgYWNjdW1bcHJvcF0ucHVzaCguLi5maWx0ZXJlZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjdW07XG4gICAgfSxcbiAgICB7fVxuICApO1xuXG4gIGlmICghaWREZWNvcmF0b3JzIHx8ICFPYmplY3Qua2V5cyhpZERlY29yYXRvcnMpLmxlbmd0aClcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIkNvdWxkIG5vdCBmaW5kIElEIGRlY29yYXRlZCBQcm9wZXJ0eVwiKTtcbiAgaWYgKE9iamVjdC5rZXlzKGlkRGVjb3JhdG9ycykubGVuZ3RoID4gMSlcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihzZihPYmplY3Qua2V5cyhpZERlY29yYXRvcnMpLmpvaW4oXCIsIFwiKSkpO1xuICBjb25zdCBpZFByb3AgPSBPYmplY3Qua2V5cyhpZERlY29yYXRvcnMpWzBdO1xuICBpZiAoIWlkUHJvcCkgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJDb3VsZCBub3QgZmluZCBJRCBkZWNvcmF0ZWQgUHJvcGVydHlcIik7XG4gIHJldHVybiB7XG4gICAgaWQ6IGlkUHJvcCBhcyBrZXlvZiBNLFxuICAgIHByb3BzOiBpZERlY29yYXRvcnNbaWRQcm9wXVswXS5wcm9wcyxcbiAgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIHRoZSBwcmltYXJ5IGtleSB2YWx1ZSBmcm9tIGEgbW9kZWxcbiAqIEBzdW1tYXJ5IFNlYXJjaGVzIGZvciB0aGUgSUQtZGVjb3JhdGVkIHByb3BlcnR5IGluIHRoZSBtb2RlbCBhbmQgcmV0dXJucyBpdHMgdmFsdWVcbiAqIEBwYXJhbSB7TW9kZWx9IG1vZGVsIC0gVGhlIG1vZGVsIG9iamVjdCB0byBleHRyYWN0IHRoZSBJRCBmcm9tXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXR1cm5FbXB0eT1mYWxzZV0gLSBXaGV0aGVyIHRvIHJldHVybiB1bmRlZmluZWQgaWYgbm8gSUQgdmFsdWUgaXMgZm91bmRcbiAqIEByZXR1cm4ge3N0cmluZyB8IG51bWJlciB8IGJpZ2ludH0gVGhlIHByaW1hcnkga2V5IHZhbHVlXG4gKiBAZnVuY3Rpb24gZmluZE1vZGVsSWRcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ2FsbGVyXG4gKiAgIHBhcnRpY2lwYW50IGZpbmRNb2RlbElkXG4gKiAgIHBhcnRpY2lwYW50IGZpbmRQcmltYXJ5S2V5XG4gKlxuICogICBDYWxsZXItPj5maW5kTW9kZWxJZDogbW9kZWwsIHJldHVybkVtcHR5XG4gKiAgIGZpbmRNb2RlbElkLT4+ZmluZFByaW1hcnlLZXk6IG1vZGVsXG4gKiAgIGZpbmRQcmltYXJ5S2V5LS0+PmZpbmRNb2RlbElkOiB7aWQsIHByb3BzfVxuICogICBmaW5kTW9kZWxJZC0+PmZpbmRNb2RlbElkOiBleHRyYWN0IG1vZGVsW2lkXVxuICogICBmaW5kTW9kZWxJZC0+PmZpbmRNb2RlbElkOiB2YWxpZGF0ZSBJRCBleGlzdHMgaWYgcmVxdWlyZWRcbiAqICAgZmluZE1vZGVsSWQtLT4+Q2FsbGVyOiBJRCB2YWx1ZVxuICogQG1lbWJlck9mIG1vZHVsZTpkYi1kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTW9kZWxJZDxNIGV4dGVuZHMgTW9kZWw+KFxuICBtb2RlbDogTSxcbiAgcmV0dXJuRW1wdHkgPSBmYWxzZVxuKTogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50IHtcbiAgY29uc3QgaWRQcm9wID0gZmluZFByaW1hcnlLZXkobW9kZWwpLmlkO1xuICBjb25zdCBtb2RlbElkID0gbW9kZWxbaWRQcm9wXTtcbiAgaWYgKHR5cGVvZiBtb2RlbElkID09PSBcInVuZGVmaW5lZFwiICYmICFyZXR1cm5FbXB0eSlcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgIGBObyB2YWx1ZSBmb3IgdGhlIElkIGlzIGRlZmluZWQgdW5kZXIgdGhlIHByb3BlcnR5ICR7aWRQcm9wIGFzIHN0cmluZ31gXG4gICAgKTtcbiAgcmV0dXJuIG1vZGVsSWQgYXMgc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50O1xufVxuIl19
@@ -1,34 +1,47 @@
1
1
  import { Model } from "@decaf-ts/decorator-validation";
2
2
  /**
3
- * @summary Returns the primary key attribute for a {@link Model}
4
- * @description searches in all the properties in the object for an {@link id} decorated property
5
- *
6
- * @param {Model} model
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
- * @category managers
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
- * @summary Returns the primary key value for a {@link Model}
21
- * @description searches in all the properties in the object for an {@link pk} decorated property
22
- *
23
- * @param {Model} model
24
- * @param {boolean} [returnEmpty]
25
- * @return {string | number | bigint} primary key
26
- *
27
- * @throws {InternalError} if no property or more than one properties are {@link pk} decorated
28
- * @throws {NotFoundError} returnEmpty is false and no value is set on the {@link pk} decorated property
29
- *
30
- * @function findModelID
31
- *
32
- * @category managers
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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7Ozs7Ozs7Ozs7Ozs7O0FBRUg7OztHQUdHO0FBRUg7OztHQUdHO0FBRUg7OztHQUdHO0FBRUg7OztHQUdHO0FBRUg7OztHQUdHO0FBRUg7OztHQUdHO0FBQ0gsdURBQTJCO0FBQzNCLHlEQUE2QjtBQUM3QixvREFBd0I7QUFDeEIseURBQTZCO0FBQzdCLHlEQUE2QjtBQUM3Qix5REFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgZGItZGVjb3JhdG9yc1xuICovXG5cbi8qKlxuICogQG5hbWVzcGFjZSBNb2RlbFxuICogQG1lbWJlck9mIG1vZHVsZTpkYi1kZWNvcmF0b3JzXG4gKi9cblxuLyoqXG4gKiBAbmFtZXNwYWNlIE9wZXJhdGlvbnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGItZGVjb3JhdG9yc1xuICovXG5cbi8qKlxuICogQG5hbWVzcGFjZSBSZXBvc2l0b3J5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRiLWRlY29yYXRvcnNcbiAqL1xuXG4vKipcbiAqIEBuYW1lc3BhY2UgVmFsaWRhdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpkYi1kZWNvcmF0b3JzXG4gKi9cblxuLyoqXG4gKiBAbmFtZXNwYWNlIFZhbGlkYXRvcnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGItZGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKi9cblxuLyoqXG4gKiBAbmFtZXNwYWNlIFV0aWxzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRiLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0ICogZnJvbSBcIi4vaWRlbnRpdHlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ludGVyZmFjZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21vZGVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9vcGVyYXRpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZXBvc2l0b3J5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi92YWxpZGF0aW9uXCI7XG4iXX0=
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnVsa0NydWRPcGVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmZhY2VzL0J1bGtDcnVkT3BlcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENydWRPcGVyYXRvciB9IGZyb20gXCIuL0NydWRPcGVyYXRvclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1bGtDcnVkT3BlcmF0b3I8TT4gZXh0ZW5kcyBDcnVkT3BlcmF0b3I8TT4ge1xuICBjcmVhdGVBbGwobW9kZWxzOiBNW10sIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxNW10+O1xuICByZWFkQWxsKGtleXM6IHN0cmluZ1tdIHwgbnVtYmVyW10sIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxNW10+O1xuICB1cGRhdGVBbGwobW9kZWxzOiBNW10sIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxNW10+O1xuICBkZWxldGVBbGwoa2V5czogc3RyaW5nW10gfCBudW1iZXJbXSwgLi4uYXJnczogYW55W10pOiBQcm9taXNlPE1bXT47XG59XG4iXX0=
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dHVhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmZhY2VzL0NvbnRleHR1YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wZXJhdGlvbktleXMgfSBmcm9tIFwiLi4vb3BlcmF0aW9uc1wiO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCIuLi9yZXBvc2l0b3J5XCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5RmxhZ3MgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHR1YWw8XG4gIEYgZXh0ZW5kcyBSZXBvc2l0b3J5RmxhZ3MgPSBSZXBvc2l0b3J5RmxhZ3MsXG4gIEMgZXh0ZW5kcyBDb250ZXh0PEY+ID0gQ29udGV4dDxGPixcbj4ge1xuICBjb250ZXh0KFxuICAgIG9wZXJhdGlvbjpcbiAgICAgIHwgT3BlcmF0aW9uS2V5cy5DUkVBVEVcbiAgICAgIHwgT3BlcmF0aW9uS2V5cy5SRUFEXG4gICAgICB8IE9wZXJhdGlvbktleXMuVVBEQVRFXG4gICAgICB8IE9wZXJhdGlvbktleXMuREVMRVRFLFxuICAgIG92ZXJyaWRlczogUGFydGlhbDxGPixcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPEM+O1xufVxuIl19
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
+ * @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
+ */
4
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
+ */
5
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J1ZE9wZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludGVyZmFjZXMvQ3J1ZE9wZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzdW1tYXJ5IENydWQgQVBJXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyBhIENSVUQgQVBJXG4gKlxuICogQGludGVyZmFjZSBDcnVkT3BlcmF0b3JcbiAqXG4gKiBAY2F0ZWdvcnkgTWFuYWdlcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcnVkT3BlcmF0b3I8TT4ge1xuICAvKipcbiAgICogQHN1bW1hcnkgQ3JlYXRlIGEgbmV3IG1vZGVsXG4gICAqIEBwYXJhbSB7VH0gbW9kZWxcbiAgICogQHBhcmFtIHthbnlbXX0gW2FyZ3NdXG4gICAqXG4gICAqIEBtZXRob2RcbiAgICovXG4gIGNyZWF0ZShtb2RlbDogTSwgLi4uYXJnczogYW55W10pOiBQcm9taXNlPE0+O1xuICAvKipcbiAgICogQHN1bW1hcnkgUmVhZCBhIG1vZGVsXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAgICogQHBhcmFtIHthbnlbXX0gW2FyZ3NdXG4gICAqXG4gICAqIEBtZXRob2RcbiAgICovXG4gIHJlYWQoa2V5OiBzdHJpbmcgfCBudW1iZXIsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxNPjtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IHVwZGF0ZSBhIG1vZGVsXG4gICAqIEBwYXJhbSB7VH0gbW9kZWxcbiAgICogQHBhcmFtIHthbnlbXX0gW2FyZ3NdXG4gICAqXG4gICAqIEBtZXRob2RcbiAgICovXG4gIHVwZGF0ZShtb2RlbDogTSwgLi4uYXJnczogYW55W10pOiBQcm9taXNlPE0+O1xuICAvKipcbiAgICogQHN1bW1hcnkgZGVsZXRlIGEgbW9kZWxcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICAgKiBAcGFyYW0ge2FueVtdfSBbYXJnc11cbiAgICpcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgZGVsZXRlKGtleTogc3RyaW5nIHwgbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8TT47XG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J1ZE9wZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludGVyZmFjZXMvQ3J1ZE9wZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiBCYXNpYyBDUlVEIG9wZXJhdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBFeHBvc2VzIGEgc3RhbmRhcmQgQ3JlYXRlLCBSZWFkLCBVcGRhdGUsIERlbGV0ZSBBUEkgZm9yIGRhdGFiYXNlIG9wZXJhdGlvbnNcbiAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGVcbiAqIEBpbnRlcmZhY2UgQ3J1ZE9wZXJhdG9yXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRiLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcnVkT3BlcmF0b3I8TT4ge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBuZXcgbW9kZWwgaW5zdGFuY2UgaW4gdGhlIGRhdGFiYXNlXG4gICAqIEBzdW1tYXJ5IENyZWF0ZSBhIG5ldyBtb2RlbFxuICAgKiBAdGVtcGxhdGUgTSAtIFRoZSBtb2RlbCB0eXBlXG4gICAqIEBwYXJhbSB7TX0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2UgdG8gY3JlYXRlXG4gICAqIEBwYXJhbSB7Li4uYW55W119IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPE0+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgY3JlYXRlZCBtb2RlbCBpbnN0YW5jZVxuICAgKi9cbiAgY3JlYXRlKG1vZGVsOiBNLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8TT47XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIGEgbW9kZWwgaW5zdGFuY2UgZnJvbSB0aGUgZGF0YWJhc2UgYnkgaXRzIGtleVxuICAgKiBAc3VtbWFyeSBSZWFkIGEgbW9kZWxcbiAgICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZVxuICAgKiBAcGFyYW0geyhzdHJpbmd8bnVtYmVyKX0ga2V5IC0gVGhlIHByaW1hcnkga2V5IG9mIHRoZSBtb2RlbCB0byByZXRyaWV2ZVxuICAgKiBAcGFyYW0gey4uLmFueVtdfSBhcmdzIC0gQWRkaXRpb25hbCBhcmd1bWVudHNcbiAgICogQHJldHVybiB7UHJvbWlzZTxNPn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIHJldHJpZXZlZCBtb2RlbCBpbnN0YW5jZVxuICAgKi9cbiAgcmVhZChrZXk6IHN0cmluZyB8IG51bWJlciwgLi4uYXJnczogYW55W10pOiBQcm9taXNlPE0+O1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZXMgYSBtb2RlbCBpbnN0YW5jZSBpbiB0aGUgZGF0YWJhc2VcbiAgICogQHN1bW1hcnkgVXBkYXRlIGEgbW9kZWxcbiAgICogQHRlbXBsYXRlIE0gLSBUaGUgbW9kZWwgdHlwZVxuICAgKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIHRvIHVwZGF0ZVxuICAgKiBAcGFyYW0gey4uLmFueVtdfSBhcmdzIC0gQWRkaXRpb25hbCBhcmd1bWVudHNcbiAgICogQHJldHVybiB7UHJvbWlzZTxNPn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIHVwZGF0ZWQgbW9kZWwgaW5zdGFuY2VcbiAgICovXG4gIHVwZGF0ZShtb2RlbDogTSwgLi4uYXJnczogYW55W10pOiBQcm9taXNlPE0+O1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZXMgYSBtb2RlbCBpbnN0YW5jZSBmcm9tIHRoZSBkYXRhYmFzZSBieSBpdHMga2V5XG4gICAqIEBzdW1tYXJ5IERlbGV0ZSBhIG1vZGVsXG4gICAqIEB0ZW1wbGF0ZSBNIC0gVGhlIG1vZGVsIHR5cGVcbiAgICogQHBhcmFtIHsoc3RyaW5nfG51bWJlcil9IGtleSAtIFRoZSBwcmltYXJ5IGtleSBvZiB0aGUgbW9kZWwgdG8gZGVsZXRlXG4gICAqIEBwYXJhbSB7Li4uYW55W119IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPE0+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgZGVsZXRlZCBtb2RlbCBpbnN0YW5jZVxuICAgKi9cbiAgZGVsZXRlKGtleTogc3RyaW5nIHwgbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8TT47XG59XG4iXX0=
@@ -1,42 +1,45 @@
1
1
  /**
2
- * @summary Crud API
3
- * @description Exposes a CRUD API
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
- * @param {T} model
13
- * @param {any[]} [args]
14
- *
15
- * @method
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
- * @param {string} key
21
- * @param {any[]} [args]
22
- *
23
- * @method
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
- * @summary update a model
28
- * @param {T} model
29
- * @param {any[]} [args]
30
- *
31
- * @method
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
- * @summary delete a model
36
- * @param {string} key
37
- * @param {any[]} [args]
38
- *
39
- * @method
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVJlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9JUmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWwsIE1vZGVsQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBCdWxrQ3J1ZE9wZXJhdG9yIH0gZnJvbSBcIi4vQnVsa0NydWRPcGVyYXRvclwiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeUZsYWdzIH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvdHlwZXNcIjtcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeVwiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IEludGVyZmFjZSBob2xkaW5nIGJhc2ljIENSVUQgQVBJc1xuICogQHR5cGVkZWYgVCBleHRlbmRzIHtAbGluayBNb2RlbH1cbiAqIEBpbnRlcmZhY2UgSVJlcG9zaXRvcnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUmVwb3NpdG9yeTxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBGIGV4dGVuZHMgUmVwb3NpdG9yeUZsYWdzID0gUmVwb3NpdG9yeUZsYWdzLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIEMgZXh0ZW5kcyBDb250ZXh0PEY+ID0gQ29udGV4dDxGPixcbj4gZXh0ZW5kcyBCdWxrQ3J1ZE9wZXJhdG9yPE0+IHtcbiAgcmVhZG9ubHkgY2xhc3M6IE1vZGVsQ29uc3RydWN0b3I8TT47XG4gIHJlYWRvbmx5IHBrOiBrZXlvZiBNO1xufVxuIl19
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
- * @summary Interface holding basic CRUD APIs
7
- * @typedef T extends {@link Model}
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
  }