@decaf-ts/core 0.7.1 → 0.7.3

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 (214) hide show
  1. package/README.md +1 -1
  2. package/dist/core.cjs +1 -1
  3. package/dist/core.cjs.map +1 -1
  4. package/dist/core.js +1 -1
  5. package/dist/core.js.map +1 -1
  6. package/lib/esm/identity/decorators.d.ts +3 -4
  7. package/lib/esm/identity/decorators.js +4 -10
  8. package/lib/esm/identity/decorators.js.map +1 -1
  9. package/lib/esm/identity/index.d.ts +0 -1
  10. package/lib/esm/identity/index.js +0 -1
  11. package/lib/esm/identity/index.js.map +1 -1
  12. package/lib/esm/index.d.ts +1 -1
  13. package/lib/esm/index.js +1 -1
  14. package/lib/esm/interfaces/ContextuallyLogged.d.ts +8 -0
  15. package/lib/esm/interfaces/ContextuallyLogged.js +2 -0
  16. package/lib/esm/interfaces/ContextuallyLogged.js.map +1 -0
  17. package/lib/esm/interfaces/ErrorParser.d.ts +2 -2
  18. package/lib/esm/interfaces/Executor.d.ts +1 -1
  19. package/lib/esm/interfaces/Observable.d.ts +8 -8
  20. package/lib/esm/interfaces/Observer.d.ts +2 -2
  21. package/lib/esm/interfaces/RawExecutor.d.ts +1 -1
  22. package/lib/esm/model/BaseModel.d.ts +2 -2
  23. package/lib/esm/model/BaseModel.js +2 -2
  24. package/lib/esm/model/construction.d.ts +9 -8
  25. package/lib/esm/model/construction.js +2 -2
  26. package/lib/esm/model/construction.js.map +1 -1
  27. package/lib/esm/model/decorators.d.ts +4 -3
  28. package/lib/esm/model/decorators.js +2 -2
  29. package/lib/esm/model/decorators.js.map +1 -1
  30. package/lib/esm/overrides/Metadata.d.ts +1 -8
  31. package/lib/esm/overrides/Model.d.ts +75 -0
  32. package/lib/esm/overrides/Model.js +2 -0
  33. package/lib/esm/overrides/Model.js.map +1 -0
  34. package/lib/esm/overrides/index.d.ts +2 -0
  35. package/lib/esm/overrides/index.js +2 -0
  36. package/lib/esm/overrides/index.js.map +1 -1
  37. package/lib/esm/overrides/injectables.d.ts +10 -0
  38. package/lib/esm/overrides/injectables.js +2 -0
  39. package/lib/esm/overrides/injectables.js.map +1 -0
  40. package/lib/esm/overrides/overrides.js +45 -3
  41. package/lib/esm/overrides/overrides.js.map +1 -1
  42. package/lib/esm/persistence/Adapter.d.ts +54 -51
  43. package/lib/esm/persistence/Adapter.js +78 -57
  44. package/lib/esm/persistence/Adapter.js.map +1 -1
  45. package/lib/esm/persistence/Dispatch.d.ts +7 -6
  46. package/lib/esm/persistence/Dispatch.js +25 -18
  47. package/lib/esm/persistence/Dispatch.js.map +1 -1
  48. package/lib/esm/persistence/ObserverHandler.d.ts +7 -6
  49. package/lib/esm/persistence/ObserverHandler.js +5 -4
  50. package/lib/esm/persistence/ObserverHandler.js.map +1 -1
  51. package/lib/esm/persistence/Sequence.d.ts +10 -17
  52. package/lib/esm/persistence/Sequence.js +10 -15
  53. package/lib/esm/persistence/Sequence.js.map +1 -1
  54. package/lib/esm/persistence/constants.d.ts +1 -0
  55. package/lib/esm/persistence/constants.js +1 -0
  56. package/lib/esm/persistence/constants.js.map +1 -1
  57. package/lib/esm/persistence/migrations.d.ts +8 -8
  58. package/lib/esm/persistence/migrations.js +8 -9
  59. package/lib/esm/persistence/migrations.js.map +1 -1
  60. package/lib/esm/persistence/types.d.ts +38 -20
  61. package/lib/esm/query/Paginator.d.ts +6 -5
  62. package/lib/esm/query/Paginator.js +4 -4
  63. package/lib/esm/query/Paginator.js.map +1 -1
  64. package/lib/esm/query/Statement.d.ts +9 -8
  65. package/lib/esm/query/Statement.js +23 -10
  66. package/lib/esm/query/Statement.js.map +1 -1
  67. package/lib/esm/ram/RamAdapter.d.ts +21 -21
  68. package/lib/esm/ram/RamAdapter.js +36 -23
  69. package/lib/esm/ram/RamAdapter.js.map +1 -1
  70. package/lib/esm/ram/RamPaginator.d.ts +2 -1
  71. package/lib/esm/ram/RamPaginator.js +5 -3
  72. package/lib/esm/ram/RamPaginator.js.map +1 -1
  73. package/lib/esm/ram/RamSequence.d.ts +4 -11
  74. package/lib/esm/ram/RamSequence.js +20 -24
  75. package/lib/esm/ram/RamSequence.js.map +1 -1
  76. package/lib/esm/ram/RamStatement.d.ts +7 -7
  77. package/lib/esm/ram/RamStatement.js.map +1 -1
  78. package/lib/esm/ram/handlers.d.ts +3 -4
  79. package/lib/esm/ram/handlers.js.map +1 -1
  80. package/lib/esm/ram/index.d.ts +0 -1
  81. package/lib/esm/ram/index.js +0 -1
  82. package/lib/esm/ram/index.js.map +1 -1
  83. package/lib/esm/ram/types.d.ts +4 -12
  84. package/lib/esm/repository/Repository.d.ts +31 -95
  85. package/lib/esm/repository/Repository.js +106 -201
  86. package/lib/esm/repository/Repository.js.map +1 -1
  87. package/lib/esm/repository/decorators.js +3 -2
  88. package/lib/esm/repository/decorators.js.map +1 -1
  89. package/lib/esm/repository/utils.d.ts +1 -1
  90. package/lib/esm/repository/utils.js +2 -3
  91. package/lib/esm/repository/utils.js.map +1 -1
  92. package/lib/esm/utils/ContextualLoggedClass.d.ts +16 -0
  93. package/lib/esm/utils/ContextualLoggedClass.js +29 -0
  94. package/lib/esm/utils/ContextualLoggedClass.js.map +1 -0
  95. package/lib/esm/utils/Services.d.ts +28 -0
  96. package/lib/esm/utils/Services.js +88 -0
  97. package/lib/esm/utils/Services.js.map +1 -0
  98. package/lib/esm/utils/decorators.d.ts +1 -9
  99. package/lib/esm/utils/decorators.js +26 -15
  100. package/lib/esm/utils/decorators.js.map +1 -1
  101. package/lib/esm/utils/index.d.ts +2 -1
  102. package/lib/esm/utils/index.js +2 -1
  103. package/lib/esm/utils/index.js.map +1 -1
  104. package/lib/identity/decorators.cjs +3 -9
  105. package/lib/identity/decorators.d.ts +3 -4
  106. package/lib/identity/decorators.js.map +1 -1
  107. package/lib/identity/index.cjs +0 -1
  108. package/lib/identity/index.d.ts +0 -1
  109. package/lib/identity/index.js.map +1 -1
  110. package/lib/index.cjs +1 -1
  111. package/lib/index.d.ts +1 -1
  112. package/lib/interfaces/ContextuallyLogged.cjs +3 -0
  113. package/lib/interfaces/ContextuallyLogged.d.ts +8 -0
  114. package/lib/interfaces/ContextuallyLogged.js.map +1 -0
  115. package/lib/interfaces/ErrorParser.d.ts +2 -2
  116. package/lib/interfaces/Executor.d.ts +1 -1
  117. package/lib/interfaces/Observable.d.ts +8 -8
  118. package/lib/interfaces/Observer.d.ts +2 -2
  119. package/lib/interfaces/RawExecutor.d.ts +1 -1
  120. package/lib/model/BaseModel.cjs +2 -2
  121. package/lib/model/BaseModel.d.ts +2 -2
  122. package/lib/model/construction.cjs +2 -2
  123. package/lib/model/construction.d.ts +9 -8
  124. package/lib/model/construction.js.map +1 -1
  125. package/lib/model/decorators.cjs +1 -1
  126. package/lib/model/decorators.d.ts +4 -3
  127. package/lib/model/decorators.js.map +1 -1
  128. package/lib/overrides/Metadata.d.ts +1 -8
  129. package/lib/overrides/Model.cjs +4 -0
  130. package/lib/overrides/Model.d.ts +75 -0
  131. package/lib/overrides/Model.js.map +1 -0
  132. package/lib/overrides/index.cjs +2 -0
  133. package/lib/overrides/index.d.ts +2 -0
  134. package/lib/overrides/index.js.map +1 -1
  135. package/lib/overrides/injectables.cjs +4 -0
  136. package/lib/overrides/injectables.d.ts +10 -0
  137. package/lib/overrides/injectables.js.map +1 -0
  138. package/lib/overrides/overrides.cjs +43 -1
  139. package/lib/overrides/overrides.js.map +1 -1
  140. package/lib/persistence/Adapter.cjs +83 -62
  141. package/lib/persistence/Adapter.d.ts +54 -51
  142. package/lib/persistence/Adapter.js.map +1 -1
  143. package/lib/persistence/Dispatch.cjs +25 -18
  144. package/lib/persistence/Dispatch.d.ts +7 -6
  145. package/lib/persistence/Dispatch.js.map +1 -1
  146. package/lib/persistence/ObserverHandler.cjs +5 -4
  147. package/lib/persistence/ObserverHandler.d.ts +7 -6
  148. package/lib/persistence/ObserverHandler.js.map +1 -1
  149. package/lib/persistence/Sequence.cjs +10 -15
  150. package/lib/persistence/Sequence.d.ts +10 -17
  151. package/lib/persistence/Sequence.js.map +1 -1
  152. package/lib/persistence/constants.cjs +1 -0
  153. package/lib/persistence/constants.d.ts +1 -0
  154. package/lib/persistence/constants.js.map +1 -1
  155. package/lib/persistence/migrations.cjs +7 -8
  156. package/lib/persistence/migrations.d.ts +8 -8
  157. package/lib/persistence/migrations.js.map +1 -1
  158. package/lib/persistence/types.d.ts +38 -20
  159. package/lib/query/Paginator.cjs +4 -4
  160. package/lib/query/Paginator.d.ts +6 -5
  161. package/lib/query/Paginator.js.map +1 -1
  162. package/lib/query/Statement.cjs +34 -21
  163. package/lib/query/Statement.d.ts +9 -8
  164. package/lib/query/Statement.js.map +1 -1
  165. package/lib/ram/RamAdapter.cjs +35 -22
  166. package/lib/ram/RamAdapter.d.ts +21 -21
  167. package/lib/ram/RamAdapter.js.map +1 -1
  168. package/lib/ram/RamPaginator.cjs +5 -3
  169. package/lib/ram/RamPaginator.d.ts +2 -1
  170. package/lib/ram/RamPaginator.js.map +1 -1
  171. package/lib/ram/RamSequence.cjs +19 -23
  172. package/lib/ram/RamSequence.d.ts +4 -11
  173. package/lib/ram/RamSequence.js.map +1 -1
  174. package/lib/ram/RamStatement.d.ts +7 -7
  175. package/lib/ram/RamStatement.js.map +1 -1
  176. package/lib/ram/handlers.d.ts +3 -4
  177. package/lib/ram/handlers.js.map +1 -1
  178. package/lib/ram/index.cjs +0 -1
  179. package/lib/ram/index.d.ts +0 -1
  180. package/lib/ram/index.js.map +1 -1
  181. package/lib/ram/types.d.ts +4 -12
  182. package/lib/repository/Repository.cjs +107 -202
  183. package/lib/repository/Repository.d.ts +31 -95
  184. package/lib/repository/Repository.js.map +1 -1
  185. package/lib/repository/decorators.cjs +1 -0
  186. package/lib/repository/decorators.js.map +1 -1
  187. package/lib/repository/utils.cjs +2 -3
  188. package/lib/repository/utils.d.ts +1 -1
  189. package/lib/repository/utils.js.map +1 -1
  190. package/lib/utils/ContextualLoggedClass.cjs +33 -0
  191. package/lib/utils/ContextualLoggedClass.d.ts +16 -0
  192. package/lib/utils/ContextualLoggedClass.js.map +1 -0
  193. package/lib/utils/Services.cjs +93 -0
  194. package/lib/utils/Services.d.ts +28 -0
  195. package/lib/utils/Services.js.map +1 -0
  196. package/lib/utils/decorators.cjs +27 -16
  197. package/lib/utils/decorators.d.ts +1 -9
  198. package/lib/utils/decorators.js.map +1 -1
  199. package/lib/utils/index.cjs +2 -1
  200. package/lib/utils/index.d.ts +2 -1
  201. package/lib/utils/index.js.map +1 -1
  202. package/package.json +1 -1
  203. package/lib/esm/identity/utils.d.ts +0 -24
  204. package/lib/esm/identity/utils.js +0 -44
  205. package/lib/esm/identity/utils.js.map +0 -1
  206. package/lib/esm/ram/RamContext.d.ts +0 -28
  207. package/lib/esm/ram/RamContext.js +0 -30
  208. package/lib/esm/ram/RamContext.js.map +0 -1
  209. package/lib/identity/utils.cjs +0 -49
  210. package/lib/identity/utils.d.ts +0 -24
  211. package/lib/identity/utils.js.map +0 -1
  212. package/lib/ram/RamContext.cjs +0 -34
  213. package/lib/ram/RamContext.d.ts +0 -28
  214. package/lib/ram/RamContext.js.map +0 -1
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Sequence = void 0;
4
- const utils_1 = require("./../identity/utils.cjs");
5
- const logging_1 = require("@decaf-ts/logging");
4
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
6
5
  const errors_1 = require("./errors.cjs");
6
+ const ContextualLoggedClass_1 = require("./../utils/ContextualLoggedClass.cjs");
7
7
  /**
8
8
  * @description Abstract base class for sequence generation
9
9
  * @summary Provides a framework for generating sequential values (like primary keys) in the persistence layer.
@@ -50,23 +50,18 @@ const errors_1 = require("./errors.cjs");
50
50
  * const nextId = await sequence.next();
51
51
  * ```
52
52
  */
53
- class Sequence {
54
- /**
55
- * @description Accessor for the logger instance
56
- * @summary Gets or initializes the logger for this sequence
57
- * @return {Logger} The logger instance
58
- */
59
- get log() {
60
- if (!this.logger)
61
- this.logger = logging_1.Logging.for(this);
62
- return this.logger;
63
- }
53
+ class Sequence extends ContextualLoggedClass_1.ContextualLoggedClass {
64
54
  /**
65
55
  * @description Creates a new sequence instance
66
56
  * @summary Protected constructor that initializes the sequence with the provided options
67
57
  */
68
- constructor(options) {
58
+ constructor(options, adapter) {
59
+ super();
69
60
  this.options = options;
61
+ this.adapter = adapter;
62
+ }
63
+ parse(value) {
64
+ return Sequence.parseValue(this.options.type, value);
70
65
  }
71
66
  /**
72
67
  * @description Gets the primary key sequence name for a model
@@ -76,7 +71,7 @@ class Sequence {
76
71
  * @return {string} The sequence name for the model's primary key
77
72
  */
78
73
  static pk(model) {
79
- return (0, utils_1.sequenceNameForModel)(model, "pk");
74
+ return decorator_validation_1.Model.sequenceName(model, "pk");
80
75
  }
81
76
  /**
82
77
  * @description Parses a sequence value to the appropriate type
@@ -1,7 +1,9 @@
1
1
  import { Model } from "@decaf-ts/decorator-validation";
2
2
  import { SequenceOptions } from "../interfaces/SequenceOptions";
3
- import { Logger } from "@decaf-ts/logging";
4
3
  import { Constructor } from "@decaf-ts/decoration";
4
+ import { PrimaryKeyType } from "@decaf-ts/db-decorators";
5
+ import { ContextualLoggedClass, MaybeContextualArg } from "../utils/ContextualLoggedClass";
6
+ import { Adapter } from "./Adapter";
5
7
  /**
6
8
  * @description Abstract base class for sequence generation
7
9
  * @summary Provides a framework for generating sequential values (like primary keys) in the persistence layer.
@@ -48,43 +50,34 @@ import { Constructor } from "@decaf-ts/decoration";
48
50
  * const nextId = await sequence.next();
49
51
  * ```
50
52
  */
51
- export declare abstract class Sequence {
53
+ export declare abstract class Sequence extends ContextualLoggedClass<any> {
52
54
  protected readonly options: SequenceOptions;
53
- /**
54
- * @description Logger instance for this sequence
55
- * @summary Lazily initialized logger for the sequence instance
56
- */
57
- private logger;
58
- /**
59
- * @description Accessor for the logger instance
60
- * @summary Gets or initializes the logger for this sequence
61
- * @return {Logger} The logger instance
62
- */
63
- protected get log(): Logger;
55
+ protected readonly adapter: Adapter<any, any, any>;
64
56
  /**
65
57
  * @description Creates a new sequence instance
66
58
  * @summary Protected constructor that initializes the sequence with the provided options
67
59
  */
68
- protected constructor(options: SequenceOptions);
60
+ protected constructor(options: SequenceOptions, adapter: Adapter<any, any, any>);
69
61
  /**
70
62
  * @description Gets the next value in the sequence
71
63
  * @summary Retrieves the next value from the sequence, incrementing it in the process
72
64
  * @return A promise that resolves to the next value in the sequence
73
65
  */
74
- abstract next(): Promise<string | number | bigint>;
66
+ abstract next(...args: MaybeContextualArg<any>): Promise<PrimaryKeyType>;
75
67
  /**
76
68
  * @description Gets the current value of the sequence
77
69
  * @summary Retrieves the current value of the sequence without incrementing it
78
70
  * @return A promise that resolves to the current value in the sequence
79
71
  */
80
- abstract current(): Promise<string | number | bigint>;
72
+ abstract current(...args: MaybeContextualArg<any>): Promise<PrimaryKeyType>;
73
+ protected parse(value: string | number | bigint): string | number | bigint;
81
74
  /**
82
75
  * @description Gets a range of sequential values
83
76
  * @summary Retrieves multiple sequential values at once, which can be more efficient than calling next() multiple times
84
77
  * @param {number} count - The number of sequential values to retrieve
85
78
  * @return A promise that resolves to an array of sequential values
86
79
  */
87
- abstract range(count: number): Promise<(number | string | bigint)[]>;
80
+ abstract range(count: number, ...argz: MaybeContextualArg<any>): Promise<(number | string | bigint)[]>;
88
81
  /**
89
82
  * @description Gets the primary key sequence name for a model
90
83
  * @summary Utility method that returns the standardized sequence name for a model's primary key
@@ -1 +1 @@
1
- {"version":3,"file":"Sequence.js","sourceRoot":"","sources":["../../src/persistence/Sequence.ts"],"names":[],"mappings":";;;AACA,mDAAyD;AAEzD,+CAAoD;AACpD,yCAA4C;AAG5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,MAAsB,QAAQ;IAO5B;;;;OAIG;IACH,IAAc,GAAG;QACf,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,iBAAO,CAAC,GAAG,CAAC,IAAW,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,YAAyC,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAwBrE;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CAAkB,KAAyB;QAClD,OAAO,IAAA,4BAAoB,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CACf,IAA8C,EAC9C,KAA+B;QAE/B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,QAAQ;gBACX,OAAO,OAAO,KAAK,KAAK,QAAQ;oBAC9B,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;oBACjB,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ;wBACzB,CAAC,CAAC,KAAK;wBACP,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtB,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;YACvB,KAAK,SAAS,CAAC;YACf,KAAK,QAAQ;gBACX,OAAO,KAAK,CAAC;YACf;gBACE,MAAM,IAAI,yBAAgB,CACxB,8BAA8B,IAAI,gBAAgB,IAAI,EAAE,CACzD,CAAC;QACN,CAAC;IACH,CAAC;CACF;AArFD,4BAqFC"}
1
+ {"version":3,"file":"Sequence.js","sourceRoot":"","sources":["../../src/persistence/Sequence.ts"],"names":[],"mappings":";;;AAAA,yEAAuD;AAEvD,yCAA4C;AAG5C,gFAGwC;AAGxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,MAAsB,QAAS,SAAQ,6CAA0B;IAC/D;;;OAGG;IACH,YACqB,OAAwB,EACxB,OAA+B;QAElD,KAAK,EAAE,CAAC;QAHW,YAAO,GAAP,OAAO,CAAiB;QACxB,YAAO,GAAP,OAAO,CAAwB;IAGpD,CAAC;IAgBS,KAAK,CAAC,KAA+B;QAC7C,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAaD;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CAAkB,KAAyB;QAClD,OAAO,4BAAK,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CACf,IAA8C,EAC9C,KAA+B;QAE/B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,QAAQ;gBACX,OAAO,OAAO,KAAK,KAAK,QAAQ;oBAC9B,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;oBACjB,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ;wBACzB,CAAC,CAAC,KAAK;wBACP,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtB,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;YACvB,KAAK,SAAS,CAAC;YACf,KAAK,QAAQ;gBACX,OAAO,KAAK,CAAC;YACf;gBACE,MAAM,IAAI,yBAAgB,CACxB,8BAA8B,IAAI,gBAAgB,IAAI,EAAE,CACzD,CAAC;QACN,CAAC;IACH,CAAC;CACF;AAjFD,4BAiFC"}
@@ -18,6 +18,7 @@ var PersistenceKeys;
18
18
  PersistenceKeys["ADAPTER"] = "adapter";
19
19
  /** @description Template for injectable adapter names */
20
20
  PersistenceKeys["INJECTABLE"] = "decaf_{0}_adapter_for_{1}";
21
+ PersistenceKeys["SERVICE"] = "service";
21
22
  /** @description Key for table name metadata */
22
23
  PersistenceKeys["TABLE"] = "table";
23
24
  /** @description Key for column name metadata */
@@ -14,6 +14,7 @@ export declare enum PersistenceKeys {
14
14
  ADAPTER = "adapter",
15
15
  /** @description Template for injectable adapter names */
16
16
  INJECTABLE = "decaf_{0}_adapter_for_{1}",
17
+ SERVICE = "service",
17
18
  /** @description Key for table name metadata */
18
19
  TABLE = "table",
19
20
  /** @description Key for column name metadata */
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/persistence/constants.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,IAAY,eAyDX;AAzDD,WAAY,eAAe;IACzB,0CAA0C;IAC1C,kCAAe,CAAA;IAEf,sDAAsD;IACtD,oCAAiB,CAAA;IAEjB,4CAA4C;IAC5C,sCAAmB,CAAA;IAEnB,yDAAyD;IACzD,2DAAwC,CAAA;IAExC,+CAA+C;IAC/C,kCAAe,CAAA;IAEf,gDAAgD;IAChD,oCAAiB,CAAA;IAEjB,oDAAoD;IACpD,0CAAuB,CAAA;IAEvB,YAAY;IACZ,yDAAyD;IACzD,0CAAuB,CAAA;IAEvB,yDAAyD;IACzD,sDAAsC,CAAA;IAEtC,yDAAyD;IACzD,sDAAsC,CAAA;IAEtC,YAAY;IAEZ,sDAAsD;IACtD,4CAAyB,CAAA;IAEzB,sDAAsD;IACtD,wCAAqB,CAAA;IAErB,wDAAwD;IACxD,qDAAqC,CAAA;IAErC,yDAAyD;IACzD,uDAAuC,CAAA;IAEvC,yDAAyD;IACzD,uDAAuC,CAAA;IACvC,yDAAyD;IACzD,yDAAyC,CAAA;IAEzC,6CAA6C;IAC7C,wCAAqB,CAAA;IACrB,6CAA6C;IAC7C,8CAA2B,CAAA;IAC3B,6CAA6C;IAC7C,0CAAuB,CAAA;AACzB,CAAC,EAzDW,eAAe,+BAAf,eAAe,QAyD1B"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/persistence/constants.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,IAAY,eA0DX;AA1DD,WAAY,eAAe;IACzB,0CAA0C;IAC1C,kCAAe,CAAA;IAEf,sDAAsD;IACtD,oCAAiB,CAAA;IAEjB,4CAA4C;IAC5C,sCAAmB,CAAA;IAEnB,yDAAyD;IACzD,2DAAwC,CAAA;IAExC,sCAAmB,CAAA;IACnB,+CAA+C;IAC/C,kCAAe,CAAA;IAEf,gDAAgD;IAChD,oCAAiB,CAAA;IAEjB,oDAAoD;IACpD,0CAAuB,CAAA;IAEvB,YAAY;IACZ,yDAAyD;IACzD,0CAAuB,CAAA;IAEvB,yDAAyD;IACzD,sDAAsC,CAAA;IAEtC,yDAAyD;IACzD,sDAAsC,CAAA;IAEtC,YAAY;IAEZ,sDAAsD;IACtD,4CAAyB,CAAA;IAEzB,sDAAsD;IACtD,wCAAqB,CAAA;IAErB,wDAAwD;IACxD,qDAAqC,CAAA;IAErC,yDAAyD;IACzD,uDAAuC,CAAA;IAEvC,yDAAyD;IACzD,uDAAuC,CAAA;IACvC,yDAAyD;IACzD,yDAAyC,CAAA;IAEzC,6CAA6C;IAC7C,wCAAqB,CAAA;IACrB,6CAA6C;IAC7C,8CAA2B,CAAA;IAC3B,6CAA6C;IAC7C,0CAAuB,CAAA;AACzB,CAAC,EA1DW,eAAe,+BAAf,eAAe,QA0D1B"}
@@ -9,6 +9,7 @@ const logging_1 = require("@decaf-ts/logging");
9
9
  const constants_1 = require("./constants.cjs");
10
10
  const decoration_1 = require("@decaf-ts/decoration");
11
11
  const errors_1 = require("./errors.cjs");
12
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
12
13
  function prefixMethod(obj, after, prefix, afterName) {
13
14
  async function wrapper(...args) {
14
15
  let results;
@@ -48,14 +49,12 @@ class AbsMigration extends logging_1.LoggedClass {
48
49
  const flavour = meta.flavour;
49
50
  return Adapter_1.Adapter.get(flavour);
50
51
  }
51
- async enforceRules(qr, adapter, l) {
52
+ async enforceRules(qr, adapter, ctx) {
52
53
  const rules = decoration_1.Metadata.get(this.constructor, constants_1.PersistenceKeys.MIGRATION)?.rules;
53
54
  if (!rules || !rules.length)
54
55
  return true;
55
- let log;
56
56
  for (const rule of rules) {
57
- log = l.for(rule);
58
- const result = await rule(qr, adapter, log);
57
+ const result = await rule(qr, adapter, ctx);
59
58
  if (!result)
60
59
  return false;
61
60
  }
@@ -71,13 +70,13 @@ class AbsMigration extends logging_1.LoggedClass {
71
70
  qr = qrOrAdapter;
72
71
  qrOrAdapter = this.adapter;
73
72
  }
74
- const log = this.log.for(name);
75
- const allowed = await this.enforceRules(qr, qrOrAdapter, log);
73
+ const ctx = await db_decorators_1.Context.args("migration", decorator_validation_1.Model, [name], qrOrAdapter);
74
+ const allowed = await this.enforceRules(qr, qrOrAdapter, ctx.context);
76
75
  if (!allowed) {
77
- log.verbose(`Skipping migration ${this.constructor.name} due to rules`);
76
+ ctx.context.logger.verbose(`Skipping migration ${this.constructor.name} due to rules`);
78
77
  throw new errors_1.MigrationRuleError("Migration skipped for rule enforcement");
79
78
  }
80
- return [qr, qrOrAdapter, log];
79
+ return [qr, qrOrAdapter, ctx.context];
81
80
  }.bind(this);
82
81
  }
83
82
  }
@@ -1,19 +1,19 @@
1
- import { Migration } from "./types";
1
+ import { ContextOf, Migration } from "./types";
2
2
  import { Adapter } from "./Adapter";
3
- import { Context, RepositoryFlags } from "@decaf-ts/db-decorators";
4
- import { LoggedClass, Logger } from "@decaf-ts/logging";
3
+ import { LoggedClass } from "@decaf-ts/logging";
5
4
  export declare function prefixMethod(obj: any, after: (...args: any[]) => any, prefix: (...args: any[]) => any, afterName?: string): void;
6
- export declare abstract class AbsMigration<A extends Adapter<CONF, CONN, QUERY, FLAGS, CONTEXT>, CONF, CONN, QUERY, QUERYRUNNER = CONN, FLAGS extends RepositoryFlags = RepositoryFlags, CONTEXT extends Context<FLAGS> = Context<FLAGS>> extends LoggedClass implements Migration<QUERYRUNNER, A, CONF, CONN, QUERY, FLAGS, CONTEXT> {
5
+ export type ConnectionForAdapter<A extends Adapter<any, any, any, any>> = A extends Adapter<any, any, infer CONN, any> ? CONN : never;
6
+ export declare abstract class AbsMigration<A extends Adapter<any, any, any, any>, QUERYRUNNER = ConnectionForAdapter<A>> extends LoggedClass implements Migration<QUERYRUNNER, A> {
7
7
  transaction: boolean;
8
8
  protected constructor();
9
9
  protected get adapter(): A;
10
- protected abstract getQueryRunner(conn: CONN): QUERYRUNNER;
10
+ protected abstract getQueryRunner(conn: ConnectionForAdapter<A>): QUERYRUNNER;
11
11
  private enforceRules;
12
12
  private prefix;
13
- abstract down(qr: QUERYRUNNER, adapter: A, log: Logger): Promise<void>;
14
- abstract up(qr: QUERYRUNNER, adapter: A, log: Logger): Promise<void>;
13
+ abstract down(qr: QUERYRUNNER, adapter: A, ctx: ContextOf<A>): Promise<void>;
14
+ abstract up(qr: QUERYRUNNER, adapter: A, ctx: ContextOf<A>): Promise<void>;
15
15
  }
16
- export type MigrationRule<A extends Adapter<CONF, CONN, QUERY, FLAGS, CONTEXT> = any, CONF = any, CONN = any, QUERY = any, QUERYRUNNER = CONN, FLAGS extends RepositoryFlags = RepositoryFlags, CONTEXT extends Context<FLAGS> = Context<FLAGS>> = (qr: QUERYRUNNER, adapter: A, log: Logger) => Promise<boolean>;
16
+ export type MigrationRule<A extends Adapter<any, any, any, any> = any, QUERYRUNNER = ConnectionForAdapter<A>> = (qr: QUERYRUNNER, adapter: A, ctx: ContextOf<A>) => Promise<boolean>;
17
17
  export type MigrationMetadata = {
18
18
  flavour: string;
19
19
  rules?: MigrationRule[];
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/persistence/migrations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/persistence/migrations.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,30 @@
1
- import { BulkCrudOperationKeys, Context, OperationKeys, RepositoryFlags } from "@decaf-ts/db-decorators";
1
+ import { BulkCrudOperationKeys, Context, ContextOfRepository, FlagsOfContext, FlagsOfRepository, IRepository, LoggerOfContext, LoggerOfFlags, LoggerOfRepository, OperationKeys, RepositoryFlags } from "@decaf-ts/db-decorators";
2
2
  import { Adapter } from "./Adapter";
3
- import { Observable } from "../interfaces/index";
3
+ import { Observable, type Observer } from "../interfaces/index";
4
4
  import { Logger } from "@decaf-ts/logging";
5
+ import { Constructor } from "@decaf-ts/decoration";
6
+ import { Model } from "@decaf-ts/decorator-validation";
7
+ import { ContextualArgs } from "../utils/index";
8
+ export type ContextOf<OBJ extends IRepository<any, any> | Adapter<any, any, any, any>> = OBJ extends Adapter<any, any, any, infer C> ? C : OBJ extends IRepository<any, any> ? ContextOfRepository<OBJ> : never;
9
+ export type LoggerOfAdapter<A extends Adapter<any, any, any, any>> = A extends Adapter<any, any, any, infer C> ? LoggerOfContext<C> : never;
10
+ export type FlagsOfAdapter<A extends Adapter<any, any, any, any>> = A extends Adapter<any, any, any, infer C> ? FlagsOfContext<C> : never;
11
+ export type LoggerOf<OBJ extends RepositoryFlags<any> | Context<any> | Adapter<any, any, any> | IRepository<any, any>> = OBJ extends RepositoryFlags<any> ? LoggerOfFlags<OBJ> : OBJ extends Context<any> ? LoggerOfContext<OBJ> : OBJ extends IRepository<any, any> ? LoggerOfRepository<OBJ> : OBJ extends Adapter<any, any, any> ? LoggerOfAdapter<OBJ> : Logger;
12
+ export type FlagsOf<OBJ extends IRepository<any, any> | Adapter<any, any, any, any> | Context<any>> = OBJ extends Context<any> ? FlagsOfContext<OBJ> : OBJ extends IRepository<any, any> ? FlagsOfRepository<OBJ> : OBJ extends Adapter<any, any, any, any> ? FlagsOfAdapter<OBJ> : never;
13
+ export type PersistenceObservable<CONTEXT extends Context<any>> = Observable<[
14
+ Observer,
15
+ ObserverFilter?
16
+ ], [
17
+ Constructor | string,
18
+ OperationKeys | BulkCrudOperationKeys | string,
19
+ EventIds,
20
+ ...ContextualArgs<CONTEXT>
21
+ ]>;
22
+ export type PersistenceObserver<CONTEXT extends Context<any>> = Observer<[
23
+ Constructor | string,
24
+ OperationKeys | BulkCrudOperationKeys | string,
25
+ EventIds,
26
+ ...ContextualArgs<CONTEXT>
27
+ ]>;
5
28
  /**
6
29
  * @description Type representing possible ID formats for database events
7
30
  * @summary A union type that defines the possible formats for event identifiers in the persistence layer.
@@ -10,25 +33,20 @@ import { Logger } from "@decaf-ts/logging";
10
33
  * @memberOf module:core
11
34
  */
12
35
  export type EventIds = string | number | bigint | string[] | number[] | bigint[];
13
- /**
14
- * @description Function type for filtering observer notifications
15
- * @summary A function type that defines a predicate used to determine whether an observer should be notified
16
- * about a specific database event. The filter examines the table name, event type, and affected IDs.
17
- * @param {string} table - The name of the database table where the event occurred
18
- * @param {(OperationKeys|BulkCrudOperationKeys|string)} event - The type of operation that triggered the event
19
- * @param {EventIds} id - The identifier(s) of the affected record(s)
20
- * @return {boolean} True if the observer should be notified, false otherwise
21
- * @typedef {Function} ObserverFilter
22
- * @memberOf module:core
23
- */
24
- export type ObserverFilter = (table: string, event: OperationKeys | BulkCrudOperationKeys | string, id: EventIds) => boolean;
25
- export type InferredAdapterConfig<A> = A extends Adapter<infer CONF, any, any, any> ? CONF : never;
26
- export interface AdapterDispatch extends Observable {
36
+ export type ObserverFilter = (table: string | Constructor, event: OperationKeys | BulkCrudOperationKeys | string, id: EventIds, ...args: [...any[], Context<any>]) => boolean;
37
+ export type InferredAdapterConfig<A> = A extends Adapter<infer CONF, any, any> ? CONF : never;
38
+ export interface AdapterDispatch<A extends Adapter<any, any, any, any>> extends PersistenceObservable<ContextOf<A>> {
27
39
  close(): Promise<void>;
28
- updateObservers(table: string, event: OperationKeys | BulkCrudOperationKeys | string, id: EventIds): Promise<void>;
40
+ updateObservers<M extends Model>(table: Constructor<M> | string, event: OperationKeys | BulkCrudOperationKeys | string, id: EventIds, ...args: ContextualArgs<ContextOf<A>>): Promise<void>;
29
41
  }
30
- export interface Migration<QUERYRUNNER, A extends Adapter<CONF, CONN, QUERY, FLAGS, CONTEXT>, CONF, CONN, QUERY, FLAGS extends RepositoryFlags = RepositoryFlags, CONTEXT extends Context<FLAGS> = Context<FLAGS>> {
42
+ export interface Migration<QUERYRUNNER, A extends Adapter<any, any, any, any>> {
31
43
  transaction: boolean;
32
- up(qr: QUERYRUNNER, adapter?: A, log?: Logger): Promise<void>;
33
- down(qr: QUERYRUNNER, adapter?: A, log?: Logger): Promise<void>;
44
+ up(qr: QUERYRUNNER, adapter?: A, ctx?: ContextOf<A>): Promise<void>;
45
+ down(qr: QUERYRUNNER, adapter?: A, ctx?: ContextOf<A>): Promise<void>;
34
46
  }
47
+ export type RepositoryFor<A extends Adapter<any, any, any, any>> = A extends Adapter<any, any, any, any> ? ReturnType<A["repository"]> : never;
48
+ export type PreparedModel = {
49
+ record: Record<string, any>;
50
+ id: string;
51
+ transient?: Record<string, any>;
52
+ };
@@ -81,11 +81,11 @@ class Paginator extends logging_1.LoggedClass {
81
81
  this.size = size;
82
82
  this.clazz = clazz;
83
83
  }
84
- async next() {
85
- return this.page(this.current + 1);
84
+ async next(...args) {
85
+ return this.page(this.current + 1, ...args);
86
86
  }
87
- async previous() {
88
- return this.page(this.current - 1);
87
+ async previous(...args) {
88
+ return this.page(this.current - 1, ...args);
89
89
  }
90
90
  validatePage(page) {
91
91
  if (page < 1 || !Number.isInteger(page))
@@ -2,6 +2,7 @@ import { Adapter } from "../persistence";
2
2
  import { Model } from "@decaf-ts/decorator-validation";
3
3
  import { Constructor } from "@decaf-ts/decoration";
4
4
  import { LoggedClass } from "@decaf-ts/logging";
5
+ import { MaybeContextualArg } from "../utils/index";
5
6
  /**
6
7
  * @description Handles pagination for database queries
7
8
  * @summary Provides functionality for navigating through paginated query results
@@ -59,7 +60,7 @@ import { LoggedClass } from "@decaf-ts/logging";
59
60
  * Paginator-->>Client: return page results
60
61
  */
61
62
  export declare abstract class Paginator<M extends Model, R = M[], Q = any> extends LoggedClass {
62
- protected readonly adapter: Adapter<any, any, Q, any, any>;
63
+ protected readonly adapter: Adapter<any, any, Q, any>;
63
64
  protected readonly query: Q;
64
65
  readonly size: number;
65
66
  protected readonly clazz: Constructor<M>;
@@ -72,10 +73,10 @@ export declare abstract class Paginator<M extends Model, R = M[], Q = any> exten
72
73
  get total(): number;
73
74
  get count(): number;
74
75
  protected get statement(): Q;
75
- protected constructor(adapter: Adapter<any, any, Q, any, any>, query: Q, size: number, clazz: Constructor<M>);
76
+ protected constructor(adapter: Adapter<any, any, Q, any>, query: Q, size: number, clazz: Constructor<M>);
76
77
  protected abstract prepare(rawStatement: Q): Q;
77
- next(): Promise<R[]>;
78
- previous(): Promise<R[]>;
78
+ next(...args: MaybeContextualArg<any>): Promise<R[]>;
79
+ previous(...args: MaybeContextualArg<any>): Promise<R[]>;
79
80
  protected validatePage(page: number): number;
80
- abstract page(page?: number): Promise<R[]>;
81
+ abstract page(page?: number, ...args: MaybeContextualArg<any>): Promise<R[]>;
81
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Paginator.js","sourceRoot":"","sources":["../../src/query/Paginator.ts"],"names":[],"mappings":";;;AAAA,yCAAuC;AAIvC,+CAAgD;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,MAAsB,SAIpB,SAAQ,qBAAW;IAQnB,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAc,SAAS;QACrB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,YACqB,OAAuC,EACvC,KAAQ,EAClB,IAAY,EACF,KAAqB;QAExC,KAAK,EAAE,CAAC;QALW,YAAO,GAAP,OAAO,CAAgC;QACvC,UAAK,GAAL,KAAK,CAAG;QAClB,SAAI,GAAJ,IAAI,CAAQ;QACF,UAAK,GAAL,KAAK,CAAgB;IAG1C,CAAC;IAID,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IACrC,CAAC;IAES,YAAY,CAAC,IAAY;QACjC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;YACrC,MAAM,IAAI,oBAAW,CACnB,sDAAsD,CACvD,CAAC;QACJ,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW;YACpE,MAAM,IAAI,oBAAW,CACnB,QAAQ,IAAI,CAAC,WAAW,qCAAqC,IAAI,EAAE,CACpE,CAAC;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;CAGF;AA7DD,8BA6DC"}
1
+ {"version":3,"file":"Paginator.js","sourceRoot":"","sources":["../../src/query/Paginator.ts"],"names":[],"mappings":";;;AAAA,yCAAuC;AAIvC,+CAAgD;AAGhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,MAAsB,SAIpB,SAAQ,qBAAW;IAQnB,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAc,SAAS;QACrB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,YACqB,OAAkC,EAClC,KAAQ,EAClB,IAAY,EACF,KAAqB;QAExC,KAAK,EAAE,CAAC;QALW,YAAO,GAAP,OAAO,CAA2B;QAClC,UAAK,GAAL,KAAK,CAAG;QAClB,SAAI,GAAJ,IAAI,CAAQ;QACF,UAAK,GAAL,KAAK,CAAgB;IAG1C,CAAC;IAID,KAAK,CAAC,IAAI,CAAC,GAAG,IAA6B;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAG,IAA6B;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9C,CAAC;IAES,YAAY,CAAC,IAAY;QACjC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;YACrC,MAAM,IAAI,oBAAW,CACnB,sDAAsD,CACvD,CAAC;QACJ,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW;YACpE,MAAM,IAAI,oBAAW,CACnB,QAAQ,IAAI,CAAC,WAAW,qCAAqC,IAAI,EAAE,CACpE,CAAC;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;CAGF;AA7DD,8BA6DC"}
@@ -14,9 +14,10 @@ exports.Statement = void 0;
14
14
  const decorator_validation_1 = require("@decaf-ts/decorator-validation");
15
15
  const Condition_1 = require("./Condition.cjs");
16
16
  const db_decorators_1 = require("@decaf-ts/db-decorators");
17
- const decorators_1 = require("./../utils/decorators.cjs");
18
- const errors_1 = require("./errors.cjs");
19
17
  const logging_1 = require("@decaf-ts/logging");
18
+ const persistence_1 = require("./../persistence/index.cjs");
19
+ const errors_1 = require("./errors.cjs");
20
+ const index_1 = require("./../utils/index.cjs");
20
21
  /**
21
22
  * @description Base class for database query statements
22
23
  * @summary Provides a foundation for building and executing database queries
@@ -68,7 +69,7 @@ const logging_1 = require("@decaf-ts/logging");
68
69
  * Adapter-->>Statement: return processed results
69
70
  * Statement-->>Client: return final results
70
71
  */
71
- class Statement extends logging_1.LoggedClass {
72
+ class Statement extends index_1.ContextualLoggedClass {
72
73
  constructor(adapter) {
73
74
  super();
74
75
  this.adapter = adapter;
@@ -125,100 +126,112 @@ class Statement extends logging_1.LoggedClass {
125
126
  this.offsetSelector = value;
126
127
  return this;
127
128
  }
128
- async execute() {
129
+ async execute(...args) {
130
+ let execArgs = args;
131
+ if ((!execArgs.length ||
132
+ !(execArgs[execArgs.length - 1] instanceof db_decorators_1.Context)) &&
133
+ this.fromSelector) {
134
+ const ctx = await this.adapter.context(db_decorators_1.OperationKeys.READ, {}, this.fromSelector);
135
+ execArgs = [...execArgs, ctx];
136
+ }
137
+ const { ctx } = persistence_1.Adapter.logCtx(execArgs, this.toString());
129
138
  try {
130
139
  const query = this.build();
131
- return (await this.raw(query));
140
+ return (await this.raw(query, ctx));
132
141
  }
133
142
  catch (e) {
134
143
  throw new db_decorators_1.InternalError(e);
135
144
  }
136
145
  }
137
- async raw(rawInput) {
138
- const results = await this.adapter.raw(rawInput);
146
+ async raw(rawInput, ...args) {
147
+ const { ctx, ctxArgs } = this.logCtx(args, this.raw);
148
+ const results = await this.adapter.raw(rawInput, ...ctxArgs);
139
149
  if (!this.selectSelector)
140
150
  return results;
141
151
  const pkAttr = decorator_validation_1.Model.pk(this.fromSelector);
142
152
  const processor = function recordProcessor(r) {
143
153
  const id = r[pkAttr];
144
- return this.adapter.revert(r, this.fromSelector, pkAttr, id);
154
+ return this.adapter.revert(r, this.fromSelector, id, undefined, ctx);
145
155
  }.bind(this);
146
156
  if (Array.isArray(results))
147
157
  return results.map(processor);
148
158
  return processor(results);
149
159
  }
160
+ toString() {
161
+ return `${this.adapter.flavour} statement`;
162
+ }
150
163
  }
151
164
  exports.Statement = Statement;
152
165
  __decorate([
153
- (0, decorators_1.final)(),
166
+ (0, logging_1.final)(),
154
167
  __metadata("design:type", Function),
155
168
  __metadata("design:paramtypes", [Array]),
156
169
  __metadata("design:returntype", Object)
157
170
  ], Statement.prototype, "select", null);
158
171
  __decorate([
159
- (0, decorators_1.final)(),
172
+ (0, logging_1.final)(),
160
173
  __metadata("design:type", Function),
161
174
  __metadata("design:paramtypes", [typeof (_a = typeof S !== "undefined" && S) === "function" ? _a : Object]),
162
175
  __metadata("design:returntype", Object)
163
176
  ], Statement.prototype, "distinct", null);
164
177
  __decorate([
165
- (0, decorators_1.final)(),
178
+ (0, logging_1.final)(),
166
179
  __metadata("design:type", Function),
167
180
  __metadata("design:paramtypes", [typeof (_b = typeof S !== "undefined" && S) === "function" ? _b : Object]),
168
181
  __metadata("design:returntype", Object)
169
182
  ], Statement.prototype, "max", null);
170
183
  __decorate([
171
- (0, decorators_1.final)(),
184
+ (0, logging_1.final)(),
172
185
  __metadata("design:type", Function),
173
186
  __metadata("design:paramtypes", [typeof (_c = typeof S !== "undefined" && S) === "function" ? _c : Object]),
174
187
  __metadata("design:returntype", Object)
175
188
  ], Statement.prototype, "min", null);
176
189
  __decorate([
177
- (0, decorators_1.final)(),
190
+ (0, logging_1.final)(),
178
191
  __metadata("design:type", Function),
179
192
  __metadata("design:paramtypes", [typeof (_d = typeof S !== "undefined" && S) === "function" ? _d : Object]),
180
193
  __metadata("design:returntype", Object)
181
194
  ], Statement.prototype, "count", null);
182
195
  __decorate([
183
- (0, decorators_1.final)(),
196
+ (0, logging_1.final)(),
184
197
  __metadata("design:type", Function),
185
198
  __metadata("design:paramtypes", [Object]),
186
199
  __metadata("design:returntype", Object)
187
200
  ], Statement.prototype, "from", null);
188
201
  __decorate([
189
- (0, decorators_1.final)(),
202
+ (0, logging_1.final)(),
190
203
  __metadata("design:type", Function),
191
204
  __metadata("design:paramtypes", [Condition_1.Condition]),
192
205
  __metadata("design:returntype", Object)
193
206
  ], Statement.prototype, "where", null);
194
207
  __decorate([
195
- (0, decorators_1.final)(),
208
+ (0, logging_1.final)(),
196
209
  __metadata("design:type", Function),
197
210
  __metadata("design:paramtypes", [Array]),
198
211
  __metadata("design:returntype", Object)
199
212
  ], Statement.prototype, "orderBy", null);
200
213
  __decorate([
201
- (0, decorators_1.final)(),
214
+ (0, logging_1.final)(),
202
215
  __metadata("design:type", Function),
203
216
  __metadata("design:paramtypes", [Object]),
204
217
  __metadata("design:returntype", Object)
205
218
  ], Statement.prototype, "groupBy", null);
206
219
  __decorate([
207
- (0, decorators_1.final)(),
220
+ (0, logging_1.final)(),
208
221
  __metadata("design:type", Function),
209
222
  __metadata("design:paramtypes", [Number]),
210
223
  __metadata("design:returntype", Object)
211
224
  ], Statement.prototype, "limit", null);
212
225
  __decorate([
213
- (0, decorators_1.final)(),
226
+ (0, logging_1.final)(),
214
227
  __metadata("design:type", Function),
215
228
  __metadata("design:paramtypes", [Number]),
216
229
  __metadata("design:returntype", Object)
217
230
  ], Statement.prototype, "offset", null);
218
231
  __decorate([
219
- (0, decorators_1.final)(),
232
+ (0, logging_1.final)(),
220
233
  __metadata("design:type", Function),
221
- __metadata("design:paramtypes", []),
234
+ __metadata("design:paramtypes", [void 0]),
222
235
  __metadata("design:returntype", Promise)
223
236
  ], Statement.prototype, "execute", null);
224
237
  //# sourceMappingURL=Statement.js.map
@@ -5,10 +5,10 @@ import { Condition } from "./Condition";
5
5
  import type { CountOption, DistinctOption, LimitOption, MaxOption, MinOption, OffsetOption, OrderAndGroupOption, SelectOption, WhereOption } from "./options";
6
6
  import { Paginatable } from "../interfaces/Paginatable";
7
7
  import { Paginator } from "./Paginator";
8
- import { Adapter } from "../persistence";
8
+ import { Adapter, type ContextOf } from "../persistence";
9
9
  import { Logger } from "@decaf-ts/logging";
10
- import { LoggedClass } from "@decaf-ts/logging";
11
10
  import { Constructor } from "@decaf-ts/decoration";
11
+ import { type ContextualArgs, ContextualLoggedClass, type MaybeContextualArg } from "../utils/index";
12
12
  /**
13
13
  * @description Base class for database query statements
14
14
  * @summary Provides a foundation for building and executing database queries
@@ -60,8 +60,8 @@ import { Constructor } from "@decaf-ts/decoration";
60
60
  * Adapter-->>Statement: return processed results
61
61
  * Statement-->>Client: return final results
62
62
  */
63
- export declare abstract class Statement<Q, M extends Model, R> extends LoggedClass implements Executor<R>, RawExecutor<Q>, Paginatable<M, R, Q> {
64
- protected adapter: Adapter<any, any, Q, any, any>;
63
+ export declare abstract class Statement<M extends Model, A extends Adapter<any, any, any, any>, R, Q = A extends Adapter<any, any, infer Q, any> ? Q : never> extends ContextualLoggedClass<ContextOf<A>> implements Executor<R>, RawExecutor<Q>, Paginatable<M, R, Q> {
64
+ protected adapter: Adapter<any, any, Q, any>;
65
65
  protected readonly selectSelector?: SelectSelector<M>[];
66
66
  protected distinctSelector?: SelectSelector<M>;
67
67
  protected maxSelector?: SelectSelector<M>;
@@ -73,7 +73,7 @@ export declare abstract class Statement<Q, M extends Model, R> extends LoggedCla
73
73
  protected groupBySelector?: GroupBySelector<M>;
74
74
  protected limitSelector?: number;
75
75
  protected offsetSelector?: number;
76
- protected constructor(adapter: Adapter<any, any, Q, any, any>);
76
+ protected constructor(adapter: Adapter<any, any, Q, any>);
77
77
  protected get log(): Logger;
78
78
  select<S extends readonly SelectSelector<M>[]>(): SelectOption<M, M[]>;
79
79
  select<S extends readonly SelectSelector<M>[]>(selector: readonly [...S]): SelectOption<M, Pick<M, S[number]>[]>;
@@ -87,9 +87,10 @@ export declare abstract class Statement<Q, M extends Model, R> extends LoggedCla
87
87
  groupBy(selector: GroupBySelector<M>): LimitOption<M, R>;
88
88
  limit(value: number): OffsetOption<R>;
89
89
  offset(value: number): Executor<R>;
90
- execute(): Promise<R>;
91
- raw<R>(rawInput: Q): Promise<R>;
90
+ execute(...args: MaybeContextualArg<ContextOf<A>>): Promise<R>;
91
+ raw<R>(rawInput: Q, ...args: ContextualArgs<ContextOf<A>>): Promise<R>;
92
92
  protected abstract build(): Q;
93
93
  protected abstract parseCondition(condition: Condition<M>, ...args: any[]): Q;
94
- abstract paginate(size: number): Promise<Paginator<M, R, Q>>;
94
+ abstract paginate(size: number, ...args: MaybeContextualArg<ContextOf<A>>): Promise<Paginator<M, R, Q>>;
95
+ toString(): string;
95
96
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Statement.js","sourceRoot":"","sources":["../../src/query/Statement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Statement.js","sourceRoot":"","sources":["../../src/query/Statement.ts"],"names":[],"mappings":"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"}