@decaf-ts/core 0.7.2 → 0.7.4

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 (246) hide show
  1. package/README.md +6 -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 +5 -11
  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/{ram/model/RamSequenceModel.d.ts → model/SequenceModel.d.ts} +3 -3
  25. package/lib/esm/{ram/model/RamSequenceModel.js → model/SequenceModel.js} +12 -11
  26. package/lib/esm/model/SequenceModel.js.map +1 -0
  27. package/lib/esm/model/construction.d.ts +9 -8
  28. package/lib/esm/model/construction.js +2 -2
  29. package/lib/esm/model/construction.js.map +1 -1
  30. package/lib/esm/model/decorators.d.ts +5 -4
  31. package/lib/esm/model/decorators.js +3 -3
  32. package/lib/esm/model/decorators.js.map +1 -1
  33. package/lib/esm/model/index.d.ts +1 -0
  34. package/lib/esm/model/index.js +1 -0
  35. package/lib/esm/model/index.js.map +1 -1
  36. package/lib/esm/overrides/Metadata.d.ts +1 -8
  37. package/lib/esm/overrides/Model.d.ts +75 -0
  38. package/lib/esm/overrides/Model.js +2 -0
  39. package/lib/esm/overrides/Model.js.map +1 -0
  40. package/lib/esm/overrides/index.d.ts +2 -0
  41. package/lib/esm/overrides/index.js +2 -0
  42. package/lib/esm/overrides/index.js.map +1 -1
  43. package/lib/esm/overrides/injectables.d.ts +10 -0
  44. package/lib/esm/overrides/injectables.js +2 -0
  45. package/lib/esm/overrides/injectables.js.map +1 -0
  46. package/lib/esm/overrides/overrides.js +45 -3
  47. package/lib/esm/overrides/overrides.js.map +1 -1
  48. package/lib/esm/persistence/Adapter.d.ts +55 -53
  49. package/lib/esm/persistence/Adapter.js +85 -61
  50. package/lib/esm/persistence/Adapter.js.map +1 -1
  51. package/lib/esm/persistence/Dispatch.d.ts +7 -6
  52. package/lib/esm/persistence/Dispatch.js +25 -18
  53. package/lib/esm/persistence/Dispatch.js.map +1 -1
  54. package/lib/esm/persistence/ObserverHandler.d.ts +7 -6
  55. package/lib/esm/persistence/ObserverHandler.js +5 -4
  56. package/lib/esm/persistence/ObserverHandler.js.map +1 -1
  57. package/lib/esm/persistence/Sequence.d.ts +34 -25
  58. package/lib/esm/persistence/Sequence.js +136 -15
  59. package/lib/esm/persistence/Sequence.js.map +1 -1
  60. package/lib/esm/persistence/constants.d.ts +1 -0
  61. package/lib/esm/persistence/constants.js +1 -0
  62. package/lib/esm/persistence/constants.js.map +1 -1
  63. package/lib/esm/persistence/generators.d.ts +14 -0
  64. package/lib/esm/persistence/generators.js +31 -0
  65. package/lib/esm/persistence/generators.js.map +1 -0
  66. package/lib/esm/persistence/index.d.ts +1 -0
  67. package/lib/esm/persistence/index.js +1 -0
  68. package/lib/esm/persistence/index.js.map +1 -1
  69. package/lib/esm/persistence/migrations.d.ts +8 -8
  70. package/lib/esm/persistence/migrations.js +8 -9
  71. package/lib/esm/persistence/migrations.js.map +1 -1
  72. package/lib/esm/persistence/types.d.ts +38 -20
  73. package/lib/esm/query/Paginator.d.ts +6 -5
  74. package/lib/esm/query/Paginator.js +4 -4
  75. package/lib/esm/query/Paginator.js.map +1 -1
  76. package/lib/esm/query/Statement.d.ts +9 -8
  77. package/lib/esm/query/Statement.js +23 -10
  78. package/lib/esm/query/Statement.js.map +1 -1
  79. package/lib/esm/ram/RamAdapter.d.ts +22 -31
  80. package/lib/esm/ram/RamAdapter.js +36 -34
  81. package/lib/esm/ram/RamAdapter.js.map +1 -1
  82. package/lib/esm/ram/RamPaginator.d.ts +2 -1
  83. package/lib/esm/ram/RamPaginator.js +5 -3
  84. package/lib/esm/ram/RamPaginator.js.map +1 -1
  85. package/lib/esm/ram/RamStatement.d.ts +7 -7
  86. package/lib/esm/ram/RamStatement.js.map +1 -1
  87. package/lib/esm/ram/handlers.d.ts +3 -4
  88. package/lib/esm/ram/handlers.js.map +1 -1
  89. package/lib/esm/ram/index.d.ts +0 -3
  90. package/lib/esm/ram/index.js +0 -3
  91. package/lib/esm/ram/index.js.map +1 -1
  92. package/lib/esm/ram/types.d.ts +4 -12
  93. package/lib/esm/repository/Repository.d.ts +31 -95
  94. package/lib/esm/repository/Repository.js +107 -203
  95. package/lib/esm/repository/Repository.js.map +1 -1
  96. package/lib/esm/repository/decorators.js +4 -3
  97. package/lib/esm/repository/decorators.js.map +1 -1
  98. package/lib/esm/repository/utils.d.ts +1 -1
  99. package/lib/esm/repository/utils.js +2 -3
  100. package/lib/esm/repository/utils.js.map +1 -1
  101. package/lib/esm/utils/ContextualLoggedClass.d.ts +16 -0
  102. package/lib/esm/utils/ContextualLoggedClass.js +29 -0
  103. package/lib/esm/utils/ContextualLoggedClass.js.map +1 -0
  104. package/lib/esm/utils/Services.d.ts +50 -0
  105. package/lib/esm/utils/Services.js +154 -0
  106. package/lib/esm/utils/Services.js.map +1 -0
  107. package/lib/esm/utils/decorators.d.ts +1 -9
  108. package/lib/esm/utils/decorators.js +26 -15
  109. package/lib/esm/utils/decorators.js.map +1 -1
  110. package/lib/esm/utils/index.d.ts +2 -1
  111. package/lib/esm/utils/index.js +2 -1
  112. package/lib/esm/utils/index.js.map +1 -1
  113. package/lib/identity/decorators.cjs +5 -11
  114. package/lib/identity/decorators.d.ts +3 -4
  115. package/lib/identity/decorators.js.map +1 -1
  116. package/lib/identity/index.cjs +0 -1
  117. package/lib/identity/index.d.ts +0 -1
  118. package/lib/identity/index.js.map +1 -1
  119. package/lib/index.cjs +1 -1
  120. package/lib/index.d.ts +1 -1
  121. package/lib/interfaces/ContextuallyLogged.cjs +3 -0
  122. package/lib/interfaces/ContextuallyLogged.d.ts +8 -0
  123. package/lib/interfaces/ContextuallyLogged.js.map +1 -0
  124. package/lib/interfaces/ErrorParser.d.ts +2 -2
  125. package/lib/interfaces/Executor.d.ts +1 -1
  126. package/lib/interfaces/Observable.d.ts +8 -8
  127. package/lib/interfaces/Observer.d.ts +2 -2
  128. package/lib/interfaces/RawExecutor.d.ts +1 -1
  129. package/lib/model/BaseModel.cjs +2 -2
  130. package/lib/model/BaseModel.d.ts +2 -2
  131. package/lib/{ram/model/RamSequenceModel.cjs → model/SequenceModel.cjs} +14 -13
  132. package/lib/{ram/model/RamSequenceModel.d.ts → model/SequenceModel.d.ts} +3 -3
  133. package/lib/model/SequenceModel.js.map +1 -0
  134. package/lib/model/construction.cjs +2 -2
  135. package/lib/model/construction.d.ts +9 -8
  136. package/lib/model/construction.js.map +1 -1
  137. package/lib/model/decorators.cjs +3 -3
  138. package/lib/model/decorators.d.ts +5 -4
  139. package/lib/model/decorators.js.map +1 -1
  140. package/lib/model/index.cjs +1 -0
  141. package/lib/model/index.d.ts +1 -0
  142. package/lib/model/index.js.map +1 -1
  143. package/lib/overrides/Metadata.d.ts +1 -8
  144. package/lib/overrides/Model.cjs +4 -0
  145. package/lib/overrides/Model.d.ts +75 -0
  146. package/lib/overrides/Model.js.map +1 -0
  147. package/lib/overrides/index.cjs +2 -0
  148. package/lib/overrides/index.d.ts +2 -0
  149. package/lib/overrides/index.js.map +1 -1
  150. package/lib/overrides/injectables.cjs +4 -0
  151. package/lib/overrides/injectables.d.ts +10 -0
  152. package/lib/overrides/injectables.js.map +1 -0
  153. package/lib/overrides/overrides.cjs +43 -1
  154. package/lib/overrides/overrides.js.map +1 -1
  155. package/lib/persistence/Adapter.cjs +90 -66
  156. package/lib/persistence/Adapter.d.ts +55 -53
  157. package/lib/persistence/Adapter.js.map +1 -1
  158. package/lib/persistence/Dispatch.cjs +25 -18
  159. package/lib/persistence/Dispatch.d.ts +7 -6
  160. package/lib/persistence/Dispatch.js.map +1 -1
  161. package/lib/persistence/ObserverHandler.cjs +5 -4
  162. package/lib/persistence/ObserverHandler.d.ts +7 -6
  163. package/lib/persistence/ObserverHandler.js.map +1 -1
  164. package/lib/persistence/Sequence.cjs +136 -15
  165. package/lib/persistence/Sequence.d.ts +34 -25
  166. package/lib/persistence/Sequence.js.map +1 -1
  167. package/lib/persistence/constants.cjs +1 -0
  168. package/lib/persistence/constants.d.ts +1 -0
  169. package/lib/persistence/constants.js.map +1 -1
  170. package/lib/persistence/generators.cjs +36 -0
  171. package/lib/persistence/generators.d.ts +14 -0
  172. package/lib/persistence/generators.js.map +1 -0
  173. package/lib/persistence/index.cjs +1 -0
  174. package/lib/persistence/index.d.ts +1 -0
  175. package/lib/persistence/index.js.map +1 -1
  176. package/lib/persistence/migrations.cjs +7 -8
  177. package/lib/persistence/migrations.d.ts +8 -8
  178. package/lib/persistence/migrations.js.map +1 -1
  179. package/lib/persistence/types.d.ts +38 -20
  180. package/lib/query/Paginator.cjs +4 -4
  181. package/lib/query/Paginator.d.ts +6 -5
  182. package/lib/query/Paginator.js.map +1 -1
  183. package/lib/query/Statement.cjs +34 -21
  184. package/lib/query/Statement.d.ts +9 -8
  185. package/lib/query/Statement.js.map +1 -1
  186. package/lib/ram/RamAdapter.cjs +35 -33
  187. package/lib/ram/RamAdapter.d.ts +22 -31
  188. package/lib/ram/RamAdapter.js.map +1 -1
  189. package/lib/ram/RamPaginator.cjs +5 -3
  190. package/lib/ram/RamPaginator.d.ts +2 -1
  191. package/lib/ram/RamPaginator.js.map +1 -1
  192. package/lib/ram/RamStatement.d.ts +7 -7
  193. package/lib/ram/RamStatement.js.map +1 -1
  194. package/lib/ram/handlers.d.ts +3 -4
  195. package/lib/ram/handlers.js.map +1 -1
  196. package/lib/ram/index.cjs +0 -3
  197. package/lib/ram/index.d.ts +0 -3
  198. package/lib/ram/index.js.map +1 -1
  199. package/lib/ram/types.d.ts +4 -12
  200. package/lib/repository/Repository.cjs +108 -204
  201. package/lib/repository/Repository.d.ts +31 -95
  202. package/lib/repository/Repository.js.map +1 -1
  203. package/lib/repository/decorators.cjs +2 -1
  204. package/lib/repository/decorators.js.map +1 -1
  205. package/lib/repository/utils.cjs +2 -3
  206. package/lib/repository/utils.d.ts +1 -1
  207. package/lib/repository/utils.js.map +1 -1
  208. package/lib/utils/ContextualLoggedClass.cjs +33 -0
  209. package/lib/utils/ContextualLoggedClass.d.ts +16 -0
  210. package/lib/utils/ContextualLoggedClass.js.map +1 -0
  211. package/lib/utils/Services.cjs +159 -0
  212. package/lib/utils/Services.d.ts +50 -0
  213. package/lib/utils/Services.js.map +1 -0
  214. package/lib/utils/decorators.cjs +27 -16
  215. package/lib/utils/decorators.d.ts +1 -9
  216. package/lib/utils/decorators.js.map +1 -1
  217. package/lib/utils/index.cjs +2 -1
  218. package/lib/utils/index.d.ts +2 -1
  219. package/lib/utils/index.js.map +1 -1
  220. package/package.json +1 -1
  221. package/lib/esm/identity/utils.d.ts +0 -24
  222. package/lib/esm/identity/utils.js +0 -44
  223. package/lib/esm/identity/utils.js.map +0 -1
  224. package/lib/esm/ram/RamContext.d.ts +0 -28
  225. package/lib/esm/ram/RamContext.js +0 -30
  226. package/lib/esm/ram/RamContext.js.map +0 -1
  227. package/lib/esm/ram/RamSequence.d.ts +0 -75
  228. package/lib/esm/ram/RamSequence.js +0 -145
  229. package/lib/esm/ram/RamSequence.js.map +0 -1
  230. package/lib/esm/ram/model/RamSequenceModel.js.map +0 -1
  231. package/lib/esm/ram/model/index.d.ts +0 -1
  232. package/lib/esm/ram/model/index.js +0 -2
  233. package/lib/esm/ram/model/index.js.map +0 -1
  234. package/lib/identity/utils.cjs +0 -49
  235. package/lib/identity/utils.d.ts +0 -24
  236. package/lib/identity/utils.js.map +0 -1
  237. package/lib/ram/RamContext.cjs +0 -34
  238. package/lib/ram/RamContext.d.ts +0 -28
  239. package/lib/ram/RamContext.js.map +0 -1
  240. package/lib/ram/RamSequence.cjs +0 -149
  241. package/lib/ram/RamSequence.d.ts +0 -75
  242. package/lib/ram/RamSequence.js.map +0 -1
  243. package/lib/ram/model/RamSequenceModel.js.map +0 -1
  244. package/lib/ram/model/index.cjs +0 -18
  245. package/lib/ram/model/index.d.ts +0 -1
  246. package/lib/ram/model/index.js.map +0 -1
@@ -7,16 +7,14 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
- import { Context, DefaultSeparator, enforceDBDecorators, InternalError, ValidationError, OperationKeys, Repository as Rep, wrapMethodWithContext, DBKeys, } from "@decaf-ts/db-decorators";
10
+ import { Context, DefaultSeparator, enforceDBDecorators, InternalError, ValidationError, OperationKeys, Repository as Rep, wrapMethodWithContext, reduceErrorsToPrint, } from "@decaf-ts/db-decorators";
11
11
  import { Adapter } from "./../persistence/Adapter.js";
12
12
  import { Model } from "@decaf-ts/decorator-validation";
13
13
  import { PersistenceKeys } from "./../persistence/constants.js";
14
14
  import { OrderDirection } from "./constants.js";
15
- import { Sequence } from "./../persistence/Sequence.js";
16
15
  import { Condition } from "./../query/Condition.js";
17
- import { getColumnName, getTableName } from "./../identity/utils.js";
18
16
  import { ObserverHandler } from "./../persistence/ObserverHandler.js";
19
- import { final } from "./../utils/index.js";
17
+ import { final } from "@decaf-ts/logging";
20
18
  import { DecorationKeys, DefaultFlavour, Metadata, uses, } from "@decaf-ts/decoration";
21
19
  /**
22
20
  * @description Core repository implementation for database operations on models on a table by table way.
@@ -102,13 +100,14 @@ export class Repository extends Rep {
102
100
  */
103
101
  get tableName() {
104
102
  if (!this._tableName)
105
- this._tableName = Repository.table(this.class);
103
+ this._tableName = Model.tableName(this.class);
106
104
  return this._tableName;
107
105
  }
108
106
  /**
109
107
  * @description Primary key properties for this repository's model.
110
108
  * @summary Gets the sequence options containing primary key information.
111
109
  * @return {SequenceOptions} The primary key properties.
110
+ * @deprecated for Model.sequenceFor(class)
112
111
  */
113
112
  get pkProps() {
114
113
  return super.pkProps;
@@ -122,17 +121,6 @@ export class Repository extends Rep {
122
121
  if (clazz) {
123
122
  Repository.register(clazz, this, this.adapter.alias);
124
123
  if (adapter) {
125
- // const flavour = Metadata.flavourOf(clazz);
126
- // if (
127
- // flavour &&
128
- // flavour !== DefaultFlavour &&
129
- // flavour !== adapter.flavour
130
- // ) {
131
- // this.log.warn(
132
- // `Incompatible flavours detected between adapter (${adapter.flavour}) and model (${flavour})`
133
- // );
134
- // // throw new InternalError("Incompatible flavours");
135
- // }
136
124
  const flavour = Metadata.get(clazz, DecorationKeys.FLAVOUR);
137
125
  if (flavour === DefaultFlavour) {
138
126
  uses(adapter.flavour)(clazz);
@@ -144,6 +132,9 @@ export class Repository extends Rep {
144
132
  wrapMethodWithContext(this, this[name + "Prefix"], m, this[name + "Suffix"]);
145
133
  });
146
134
  }
135
+ logCtx(args, method) {
136
+ return Adapter.logCtx(args, method);
137
+ }
147
138
  /**
148
139
  * @description Creates a proxy with overridden repository flags.
149
140
  * @summary Returns a proxy of this repository with the specified flags overridden.
@@ -151,9 +142,6 @@ export class Repository extends Rep {
151
142
  * @return {Repository} A proxy of this repository with overridden flags.
152
143
  */
153
144
  override(flags) {
154
- this.log
155
- .for(this.override)
156
- .debug(`Overriding repository flags with ${JSON.stringify(flags)}`);
157
145
  return new Proxy(this, {
158
146
  get: (target, p, receiver) => {
159
147
  const result = Reflect.get(target, p, receiver);
@@ -205,11 +193,16 @@ export class Repository extends Rep {
205
193
  */
206
194
  async createPrefix(model, ...args) {
207
195
  const contextArgs = await Context.args(OperationKeys.CREATE, this.class, args, this.adapter, this._overrides || {});
196
+ const shouldRunHandlers = contextArgs.context.get("ignoreHandlers") !== false;
197
+ const shouldValidate = !contextArgs.context.get("ignoreValidation");
208
198
  model = new this.class(model);
209
- await enforceDBDecorators(this, contextArgs.context, model, OperationKeys.CREATE, OperationKeys.ON);
210
- const errors = await Promise.resolve(model.hasErrors(...(contextArgs.context.get("ignoredValidationProperties") || [])));
211
- if (errors)
212
- throw new ValidationError(errors.toString());
199
+ if (shouldRunHandlers)
200
+ await enforceDBDecorators(this, contextArgs.context, model, OperationKeys.CREATE, OperationKeys.ON);
201
+ if (shouldValidate) {
202
+ const errors = await Promise.resolve(model.hasErrors(...(contextArgs.context.get("ignoredValidationProperties") || [])));
203
+ if (errors)
204
+ throw new ValidationError(errors.toString());
205
+ }
213
206
  return [model, ...contextArgs.args];
214
207
  }
215
208
  /**
@@ -220,13 +213,12 @@ export class Repository extends Rep {
220
213
  * @return {Promise<M>} The created model with updated properties.
221
214
  */
222
215
  async create(model, ...args) {
216
+ const { ctx, log, ctxArgs } = this.logCtx(args, this.create);
217
+ log.debug(`Creating new ${this.class.name} in table ${Model.tableName(this.class)}`);
223
218
  // eslint-disable-next-line prefer-const
224
- let { record, id, transient } = this.adapter.prepare(model, this.pk);
225
- record = await this.adapter.create(this.tableName, id, record, ...args);
226
- let c = undefined;
227
- if (args.length)
228
- c = args[args.length - 1];
229
- return this.adapter.revert(record, this.class, this.pk, id, c && c.get("rebuildWithTransient") ? transient : undefined);
219
+ let { record, id, transient } = this.adapter.prepare(model, ctx);
220
+ record = await this.adapter.create(this.class, id, record, ...ctxArgs);
221
+ return this.adapter.revert(record, this.class, id, transient, ctx);
230
222
  }
231
223
  /**
232
224
  * @description Post-creation hook.
@@ -248,11 +240,13 @@ export class Repository extends Rep {
248
240
  async createAll(models, ...args) {
249
241
  if (!models.length)
250
242
  return models;
251
- const prepared = models.map((m) => this.adapter.prepare(m, this.pk));
243
+ const { ctx, log, ctxArgs } = this.logCtx(args, this.createAll);
244
+ log.debug(`Creating ${models.length} new ${this.class.name} in table ${Model.tableName(this.class)}`);
245
+ const prepared = models.map((m) => this.adapter.prepare(m, ctx));
252
246
  const ids = prepared.map((p) => p.id);
253
247
  let records = prepared.map((p) => p.record);
254
- records = await this.adapter.createAll(this.tableName, ids, records, ...args);
255
- return records.map((r, i) => this.adapter.revert(r, this.class, this.pk, ids[i]));
248
+ records = await this.adapter.createAll(this.class, ids, records, ...ctxArgs);
249
+ return records.map((r, i) => this.adapter.revert(r, this.class, ids[i], ctx.get("rebuildWithTransient") ? prepared[i].transient : undefined, ctx));
256
250
  }
257
251
  /**
258
252
  * @description Prepares multiple models for creation.
@@ -264,14 +258,16 @@ export class Repository extends Rep {
264
258
  */
265
259
  async createAllPrefix(models, ...args) {
266
260
  const contextArgs = await Context.args(OperationKeys.CREATE, this.class, args, this.adapter, this._overrides || {});
261
+ const shouldRunHandlers = contextArgs.context.get("ignoreHandlers") !== false;
262
+ const shouldValidate = !contextArgs.context.get("ignoreValidation");
267
263
  if (!models.length)
268
264
  return [models, ...contextArgs.args];
269
- const opts = Repository.getSequenceOptions(models[0]);
265
+ const opts = Model.sequenceFor(models[0]);
270
266
  let ids = [];
271
267
  if (opts.type) {
272
268
  if (!opts.name)
273
- opts.name = Sequence.pk(models[0]);
274
- ids = await (await this.adapter.Sequence(opts)).range(models.length);
269
+ opts.name = Model.sequenceName(models[0], "pk");
270
+ ids = await (await this.adapter.Sequence(opts)).range(models.length, ...contextArgs.args);
275
271
  }
276
272
  else {
277
273
  ids = models.map((m, i) => {
@@ -289,21 +285,17 @@ export class Repository extends Rep {
289
285
  ? ids[i]
290
286
  : `${m[this.pk]}`.toString());
291
287
  }
292
- await enforceDBDecorators(this, contextArgs.context, m, OperationKeys.CREATE, OperationKeys.ON);
288
+ if (shouldRunHandlers)
289
+ await enforceDBDecorators(this, contextArgs.context, m, OperationKeys.CREATE, OperationKeys.ON);
293
290
  return m;
294
291
  }));
295
- const ignoredProps = contextArgs.context.get("ignoredValidationProperties") || [];
296
- const errors = await Promise.all(models.map((m) => Promise.resolve(m.hasErrors(...ignoredProps))));
297
- const errorMessages = errors.reduce((accum, e, i) => {
298
- if (e)
299
- accum =
300
- typeof accum === "string"
301
- ? accum + `\n - ${i}: ${e.toString()}`
302
- : ` - ${i}: ${e.toString()}`;
303
- return accum;
304
- }, undefined);
305
- if (errorMessages)
306
- throw new ValidationError(errorMessages);
292
+ if (shouldValidate) {
293
+ const ignoredProps = contextArgs.context.get("ignoredValidationProperties") || [];
294
+ const errors = await Promise.all(models.map((m) => Promise.resolve(m.hasErrors(...ignoredProps))));
295
+ const errorMessages = reduceErrorsToPrint(errors);
296
+ if (errorMessages)
297
+ throw new ValidationError(errorMessages);
298
+ }
307
299
  return [models, ...contextArgs.args];
308
300
  }
309
301
  /**
@@ -323,13 +315,15 @@ export class Repository extends Rep {
323
315
  /**
324
316
  * @description Reads a model from the database by ID.
325
317
  * @summary Retrieves a model instance from the database using its primary key.
326
- * @param {string|number|bigint} id - The primary key of the model to read.
318
+ * @param {PrimaryKeyType} id - The primary key of the model to read.
327
319
  * @param {...any[]} args - Additional arguments.
328
320
  * @return {Promise<M>} The retrieved model instance.
329
321
  */
330
322
  async read(id, ...args) {
331
- const m = await this.adapter.read(this.tableName, id, ...args);
332
- return this.adapter.revert(m, this.class, this.pk, id);
323
+ const { ctx, log, ctxArgs } = this.logCtx(args, this.read);
324
+ log.debug(`reading ${this.class.name} from table ${Model.tableName(this.class)} with pk ${this.pk}`);
325
+ const m = await this.adapter.read(this.class, id, ...ctxArgs);
326
+ return this.adapter.revert(m, this.class, id, undefined, ctx);
333
327
  }
334
328
  /**
335
329
  * @description Prepares for reading multiple models by IDs.
@@ -355,8 +349,10 @@ export class Repository extends Rep {
355
349
  * @return {Promise<M[]>} The retrieved model instances.
356
350
  */
357
351
  async readAll(keys, ...args) {
358
- const records = await this.adapter.readAll(this.tableName, keys, ...args);
359
- return records.map((r, i) => this.adapter.revert(r, this.class, this.pk, keys[i]));
352
+ const { ctx, log, ctxArgs } = this.logCtx(args, this.readAll);
353
+ log.debug(`reading ${keys.length} ${this.class.name} in table ${Model.tableName(this.class)}`);
354
+ const records = await this.adapter.readAll(this.class, keys, ...ctxArgs);
355
+ return records.map((r, i) => this.adapter.revert(r, this.class, keys[i], undefined, ctx));
360
356
  }
361
357
  /**
362
358
  * @description Updates a model in the database.
@@ -366,10 +362,12 @@ export class Repository extends Rep {
366
362
  * @return {Promise<M>} The updated model with refreshed properties.
367
363
  */
368
364
  async update(model, ...args) {
365
+ const { ctxArgs, log, ctx } = this.logCtx(args, this.update);
369
366
  // eslint-disable-next-line prefer-const
370
- let { record, id, transient } = this.adapter.prepare(model, this.pk);
371
- record = await this.adapter.update(this.tableName, id, record, ...args);
372
- return this.adapter.revert(record, this.class, this.pk, id, transient);
367
+ let { record, id, transient } = this.adapter.prepare(model, ctx);
368
+ log.debug(`updating ${this.class.name} in table ${Model.tableName(this.class)} with id ${id}`);
369
+ record = await this.adapter.update(this.class, id, record, ...ctxArgs);
370
+ return this.adapter.revert(record, this.class, id, transient, ctx);
373
371
  }
374
372
  /**
375
373
  * @description Prepares a model for update.
@@ -382,18 +380,19 @@ export class Repository extends Rep {
382
380
  */
383
381
  async updatePrefix(model, ...args) {
384
382
  const contextArgs = await Context.args(OperationKeys.UPDATE, this.class, args, this.adapter, this._overrides || {});
383
+ const shouldRunHandlers = contextArgs.context.get("ignoreHandlers") !== false;
384
+ const shouldValidate = !contextArgs.context.get("ignoreValidation");
385
385
  const pk = model[this.pk];
386
386
  if (!pk)
387
387
  throw new InternalError(`No value for the Id is defined under the property ${this.pk}`);
388
388
  const oldModel = await this.read(pk, ...contextArgs.args);
389
- model = this.merge(oldModel, model);
390
- await enforceDBDecorators(this, contextArgs.context, model, OperationKeys.UPDATE, OperationKeys.ON, oldModel);
391
- const errors = await Promise.resolve(model.hasErrors(oldModel, ...Repository.relations(this.class), ...(contextArgs.context.get("ignoredValidationProperties") || [])));
392
- if (errors)
393
- throw new ValidationError(errors.toString());
394
- if (Repository.getMetadata(oldModel)) {
395
- if (!Repository.getMetadata(model))
396
- Repository.setMetadata(model, Repository.getMetadata(oldModel));
389
+ model = Model.merge(oldModel, model, this.class);
390
+ if (shouldRunHandlers)
391
+ await enforceDBDecorators(this, contextArgs.context, model, OperationKeys.UPDATE, OperationKeys.ON, oldModel);
392
+ if (shouldValidate) {
393
+ const errors = await Promise.resolve(model.hasErrors(oldModel, ...Model.relations(this.class), ...(contextArgs.context.get("ignoredValidationProperties") || [])));
394
+ if (errors)
395
+ throw new ValidationError(errors.toString());
397
396
  }
398
397
  return [model, ...contextArgs.args];
399
398
  }
@@ -405,9 +404,11 @@ export class Repository extends Rep {
405
404
  * @return {Promise<M[]>} The updated models with refreshed properties.
406
405
  */
407
406
  async updateAll(models, ...args) {
408
- const records = models.map((m) => this.adapter.prepare(m, this.pk));
409
- const updated = await this.adapter.updateAll(this.tableName, records.map((r) => r.id), records.map((r) => r.record), ...args);
410
- return updated.map((u, i) => this.adapter.revert(u, this.class, this.pk, records[i].id));
407
+ const { ctx, log, ctxArgs } = this.logCtx(args, this.updateAll);
408
+ log.debug(`Updating ${models.length} new ${this.class.name} in table ${Model.tableName(this.class)}`);
409
+ const records = models.map((m) => this.adapter.prepare(m, ctx));
410
+ const updated = await this.adapter.updateAll(this.class, records.map((r) => r.id), records.map((r) => r.record), ...ctxArgs);
411
+ return updated.map((u, i) => this.adapter.revert(u, this.class, records[i].id, ctx.get("rebuildWithTransient") ? records[i].transient : undefined, ctx));
411
412
  }
412
413
  /**
413
414
  * @description Prepares multiple models for update.
@@ -420,6 +421,8 @@ export class Repository extends Rep {
420
421
  */
421
422
  async updateAllPrefix(models, ...args) {
422
423
  const contextArgs = await Context.args(OperationKeys.UPDATE, this.class, args, this.adapter, this._overrides || {});
424
+ const shouldRunHandlers = contextArgs.context.get("ignoreHandlers") !== false;
425
+ const shouldValidate = !contextArgs.context.get("ignoreValidation");
423
426
  const ids = models.map((m) => {
424
427
  const id = m[this.pk];
425
428
  if (!id)
@@ -428,32 +431,18 @@ export class Repository extends Rep {
428
431
  });
429
432
  const oldModels = await this.readAll(ids, ...contextArgs.args);
430
433
  models = models.map((m, i) => {
431
- m = this.merge(oldModels[i], m);
432
- if (Repository.getMetadata(oldModels[i])) {
433
- if (!Repository.getMetadata(m))
434
- Repository.setMetadata(m, Repository.getMetadata(oldModels[i]));
435
- }
434
+ m = Model.merge(oldModels[i], m, this.class);
436
435
  return m;
437
436
  });
438
- await Promise.all(models.map((m, i) => enforceDBDecorators(this, contextArgs.context, m, OperationKeys.UPDATE, OperationKeys.ON, oldModels[i])));
439
- const ignoredProps = contextArgs.context.get("ignoredValidationProperties") || [];
440
- const errors = await Promise.all(models.map((m, i) => Promise.resolve(m.hasErrors(oldModels[i], m, ...ignoredProps))));
441
- const errorMessages = errors.reduce((accum, e, i) => {
442
- if (e)
443
- accum =
444
- typeof accum === "string"
445
- ? accum + `\n - ${i}: ${e.toString()}`
446
- : ` - ${i}: ${e.toString()}`;
447
- return accum;
448
- }, undefined);
449
- if (errorMessages)
450
- throw new ValidationError(errorMessages);
451
- models.forEach((m, i) => {
452
- if (Repository.getMetadata(oldModels[i])) {
453
- if (!Repository.getMetadata(m))
454
- Repository.setMetadata(m, Repository.getMetadata(oldModels[i]));
455
- }
456
- });
437
+ if (shouldRunHandlers)
438
+ await Promise.all(models.map((m, i) => enforceDBDecorators(this, contextArgs.context, m, OperationKeys.UPDATE, OperationKeys.ON, oldModels[i])));
439
+ if (shouldValidate) {
440
+ const ignoredProps = contextArgs.context.get("ignoredValidationProperties") || [];
441
+ const errors = await Promise.all(models.map((m, i) => Promise.resolve(m.hasErrors(oldModels[i], m, ...ignoredProps))));
442
+ const errorMessages = reduceErrorsToPrint(errors);
443
+ if (errorMessages)
444
+ throw new ValidationError(errorMessages);
445
+ }
457
446
  return [models, ...contextArgs.args];
458
447
  }
459
448
  /**
@@ -477,8 +466,10 @@ export class Repository extends Rep {
477
466
  * @return {Promise<M>} The deleted model instance.
478
467
  */
479
468
  async delete(id, ...args) {
480
- const m = await this.adapter.delete(this.tableName, id, ...args);
481
- return this.adapter.revert(m, this.class, this.pk, id);
469
+ const { ctx, log, ctxArgs } = this.logCtx(args, this.delete);
470
+ log.debug(`deleting new ${this.class.name} in table ${Model.tableName(this.class)} with pk ${id}`);
471
+ const m = await this.adapter.delete(this.class, id, ...ctxArgs);
472
+ return this.adapter.revert(m, this.class, id, undefined, ctx);
482
473
  }
483
474
  /**
484
475
  * @description Prepares for deleting multiple models by IDs.
@@ -503,8 +494,10 @@ export class Repository extends Rep {
503
494
  * @return {Promise<M[]>} The deleted model instances.
504
495
  */
505
496
  async deleteAll(keys, ...args) {
506
- const results = await this.adapter.deleteAll(this.tableName, keys, ...args);
507
- return results.map((r, i) => this.adapter.revert(r, this.class, this.pk, keys[i]));
497
+ const { ctx, log, ctxArgs } = this.logCtx(args, this.create);
498
+ log.debug(`deleting ${keys.length} ${this.class.name} in table ${Model.tableName(this.class)}`);
499
+ const results = await this.adapter.deleteAll(this.class, keys, ...ctxArgs);
500
+ return results.map((r, i) => this.adapter.revert(r, this.class, keys[i], undefined, ctx));
508
501
  }
509
502
  /**
510
503
  * @description Implementation of the select method.
@@ -556,8 +549,18 @@ export class Repository extends Rep {
556
549
  writable: false,
557
550
  });
558
551
  const log = this.log.for(this.observe);
559
- const tableName = Repository.table(this.class);
560
- this.adapter.observe(this, (table) => tableName === table);
552
+ const tableName = Model.tableName(this.class);
553
+ this.adapter.observe(this, (table,
554
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
555
+ event,
556
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
557
+ id,
558
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
559
+ ...args) => {
560
+ if (typeof table === "string")
561
+ return table === tableName;
562
+ return Metadata.constr(table) === Metadata.constr(this.class);
563
+ });
561
564
  log.verbose(`now observing ${this.adapter} filtering on table === ${tableName}`);
562
565
  this.observerHandler.observe(observer, filter);
563
566
  log.verbose(`Registered new observer ${observer.toString()}`);
@@ -596,12 +599,11 @@ export class Repository extends Rep {
596
599
  async updateObservers(table, event, id, ...args) {
597
600
  if (!this.observerHandler)
598
601
  throw new InternalError("ObserverHandler not initialized. Did you register any observables?");
599
- this.log
600
- .for(this.updateObservers)
601
- .verbose(`Updating ${this.observerHandler.count()} observers for ${this}`);
602
- await this.observerHandler.updateObservers(this.log, table, event, Array.isArray(id)
603
- ? id.map((i) => Sequence.parseValue(this.pkProps?.type, i))
604
- : Sequence.parseValue(this.pkProps?.type, id), ...args);
602
+ const { log, ctxArgs } = this.logCtx(args, this.updateObservers);
603
+ log.verbose(`Updating ${this.observerHandler.count()} observers for ${this}`);
604
+ await this.observerHandler.updateObservers(table, event, Array.isArray(id)
605
+ ? id.map((i) => Adapter["_baseSequence"].parseValue(Model.sequenceFor(this.class).type, i))
606
+ : Adapter["_baseSequence"].parseValue(Model.sequenceFor(this.class).type, id), ...ctxArgs);
605
607
  }
606
608
  /**
607
609
  * @description Alias for updateObservers.
@@ -660,7 +662,7 @@ export class Repository extends Rep {
660
662
  * @throws {InternalError} If no repository is registered for the model.
661
663
  */
662
664
  static get(model, alias) {
663
- const name = Repository.table(model);
665
+ const name = Model.tableName(model);
664
666
  let registryName = name;
665
667
  if (alias) {
666
668
  registryName = [name, alias].join(DefaultSeparator);
@@ -681,7 +683,7 @@ export class Repository extends Rep {
681
683
  * @throws {InternalError} If a repository is already registered for the model.
682
684
  */
683
685
  static register(model, repo, alias) {
684
- let name = Repository.table(model);
686
+ let name = Model.tableName(model);
685
687
  if (alias) {
686
688
  name = [name, alias].join(DefaultSeparator);
687
689
  }
@@ -691,104 +693,6 @@ export class Repository extends Rep {
691
693
  }
692
694
  this._cache[name] = repo;
693
695
  }
694
- /**
695
- * @description Sets metadata on a model instance.
696
- * @summary Attaches metadata to a model instance using a non-enumerable property.
697
- * @template M - The model type that extends Model.
698
- * @param {M} model - The model instance.
699
- * @param {any} metadata - The metadata to attach to the model.
700
- */
701
- static setMetadata(model, metadata) {
702
- Object.defineProperty(model, PersistenceKeys.METADATA, {
703
- enumerable: false,
704
- configurable: true,
705
- writable: false,
706
- value: metadata,
707
- });
708
- }
709
- /**
710
- * @description Gets metadata from a model instance.
711
- * @summary Retrieves previously attached metadata from a model instance.
712
- * @template M - The model type that extends Model.
713
- * @param {M} model - The model instance.
714
- * @return {any} The metadata or undefined if not found.
715
- */
716
- static getMetadata(model) {
717
- const descriptor = Object.getOwnPropertyDescriptor(model, PersistenceKeys.METADATA);
718
- return descriptor ? descriptor.value : undefined;
719
- }
720
- /**
721
- * @description Removes metadata from a model instance.
722
- * @summary Deletes the metadata property from a model instance.
723
- * @template M - The model type that extends Model.
724
- * @param {M} model - The model instance.
725
- */
726
- static removeMetadata(model) {
727
- const descriptor = Object.getOwnPropertyDescriptor(model, PersistenceKeys.METADATA);
728
- if (descriptor)
729
- delete model[PersistenceKeys.METADATA];
730
- }
731
- /**
732
- * @description Gets sequence options for a model's primary key.
733
- * @summary Retrieves the sequence configuration for a model's primary key from metadata.
734
- * @template M - The model type that extends Model.
735
- * @param {M} model - The model instance.
736
- * @return {SequenceOptions} The sequence options for the model's primary key.
737
- * @throws {InternalError} If no sequence options are defined for the model.
738
- */
739
- static getSequenceOptions(model) {
740
- const pkName = Model.pk(model.constructor);
741
- const key = Metadata.key(DBKeys.ID, pkName);
742
- const metadata = Metadata.get(model.constructor, key);
743
- if (!metadata)
744
- throw new InternalError("No sequence options defined for model. did you use the @pk decorator?");
745
- return metadata;
746
- }
747
- /**
748
- * @description Gets all indexes defined on a model.
749
- * @summary Retrieves all index metadata from a model's property decorators.
750
- * @template M - The model type that extends Model.
751
- * @param {M | Constructor<M>} model - The model instance or constructor.
752
- * @return {Record<string, Record<string, IndexMetadata>>} A nested record of property names to index metadata.
753
- */
754
- static indexes(model) {
755
- const indexDecorators = Metadata.get(model instanceof Model ? model.constructor : model, PersistenceKeys.INDEX);
756
- return Object.keys(indexDecorators || {}).reduce((acum, t) => {
757
- acum[t] = { [PersistenceKeys.INDEX]: indexDecorators[t] };
758
- return acum;
759
- }, {});
760
- }
761
- /**
762
- * @description Gets all relation properties defined on a model.
763
- * @summary Retrieves the names of all properties marked as relations in the model hierarchy.
764
- * @template M - The model type that extends Model.
765
- * @param {M | Constructor<M>} model - The model instance or constructor.
766
- * @return {string[]} An array of property names that are relations.
767
- */
768
- static relations(model) {
769
- return (Metadata.relations(model instanceof Model ? model.constructor : model) || []);
770
- }
771
- /**
772
- * @description Gets the table name for a model.
773
- * @summary Retrieves the database table name associated with a model.
774
- * @template M - The model type that extends Model.
775
- * @param {M | Constructor<M>} model - The model instance or constructor.
776
- * @return {string} The table name for the model.
777
- */
778
- static table(model) {
779
- return getTableName(model);
780
- }
781
- /**
782
- * @description Gets the column name for a model attribute.
783
- * @summary Retrieves the database column name for a model property.
784
- * @template M - The model type that extends Model.
785
- * @param {M} model - The model instance.
786
- * @param {string} attribute - The attribute/property name.
787
- * @return {string} The column name for the attribute.
788
- */
789
- static column(model, attribute) {
790
- return getColumnName(model, attribute);
791
- }
792
696
  }
793
697
  __decorate([
794
698
  final(),
@@ -1 +1 @@
1
- {"version":3,"file":"Repository.js","sourceRoot":"","sources":["../../../src/repository/Repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Repository.js","sourceRoot":"","sources":["../../../src/repository/Repository.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { inject, injectable, } from "@decaf-ts/injectable-decorators";
2
2
  import { DBKeys } from "@decaf-ts/db-decorators";
3
- import { ModelKeys } from "@decaf-ts/decorator-validation";
3
+ import { Model } from "@decaf-ts/decorator-validation";
4
4
  import { Repository } from "./Repository.js";
5
- import { PersistenceKeys } from "./../persistence/index.js";
5
+ import { Adapter, PersistenceKeys } from "./../persistence/index.js";
6
6
  import { Metadata, metadata } from "@decaf-ts/decoration";
7
7
  /**
8
8
  * @description Repository decorator for model classes.
@@ -34,8 +34,9 @@ import { Metadata, metadata } from "@decaf-ts/decoration";
34
34
  export function repository(model, flavour) {
35
35
  return ((original, propertyKey) => {
36
36
  if (propertyKey) {
37
- return inject(model[ModelKeys.ANCHOR] || model)(original, propertyKey);
37
+ return inject(Metadata.constr(model))(original, propertyKey);
38
38
  }
39
+ Metadata.set(DBKeys.REPOSITORY, Metadata.key(flavour || Adapter.currentFlavour, Model.tableName(model)), original);
39
40
  metadata(DBKeys.REPOSITORY, original.name)(model);
40
41
  flavour =
41
42
  flavour || Metadata.get(original.constructor, PersistenceKeys.ADAPTER);