@spinajs/orm 2.0.481 → 2.0.482

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 (228) hide show
  1. package/README.md +72 -3
  2. package/lib/cjs/bootstrap.js +10 -0
  3. package/lib/cjs/bootstrap.js.map +1 -1
  4. package/lib/cjs/builders.d.ts +115 -11
  5. package/lib/cjs/builders.d.ts.map +1 -1
  6. package/lib/cjs/builders.js +342 -283
  7. package/lib/cjs/builders.js.map +1 -1
  8. package/lib/cjs/converters.d.ts +9 -2
  9. package/lib/cjs/converters.d.ts.map +1 -1
  10. package/lib/cjs/converters.js +48 -8
  11. package/lib/cjs/converters.js.map +1 -1
  12. package/lib/cjs/decorators.d.ts +26 -3
  13. package/lib/cjs/decorators.d.ts.map +1 -1
  14. package/lib/cjs/decorators.js +95 -42
  15. package/lib/cjs/decorators.js.map +1 -1
  16. package/lib/cjs/dehydrators.js +1 -1
  17. package/lib/cjs/dehydrators.js.map +1 -1
  18. package/lib/cjs/descriptor.d.ts +1 -0
  19. package/lib/cjs/descriptor.d.ts.map +1 -1
  20. package/lib/cjs/descriptor.js +16 -40
  21. package/lib/cjs/descriptor.js.map +1 -1
  22. package/lib/cjs/driver.d.ts +136 -7
  23. package/lib/cjs/driver.d.ts.map +1 -1
  24. package/lib/cjs/driver.js +279 -0
  25. package/lib/cjs/driver.js.map +1 -1
  26. package/lib/cjs/existsRelationHandlers.d.ts +29 -0
  27. package/lib/cjs/existsRelationHandlers.d.ts.map +1 -0
  28. package/lib/cjs/existsRelationHandlers.js +104 -0
  29. package/lib/cjs/existsRelationHandlers.js.map +1 -0
  30. package/lib/cjs/fp.d.ts.map +1 -1
  31. package/lib/cjs/fp.js +10 -15
  32. package/lib/cjs/fp.js.map +1 -1
  33. package/lib/cjs/hydrators.d.ts.map +1 -1
  34. package/lib/cjs/hydrators.js +29 -2
  35. package/lib/cjs/hydrators.js.map +1 -1
  36. package/lib/cjs/identity-map.d.ts +60 -0
  37. package/lib/cjs/identity-map.d.ts.map +1 -0
  38. package/lib/cjs/identity-map.js +135 -0
  39. package/lib/cjs/identity-map.js.map +1 -0
  40. package/lib/cjs/index.d.ts +12 -0
  41. package/lib/cjs/index.d.ts.map +1 -1
  42. package/lib/cjs/index.js +12 -0
  43. package/lib/cjs/index.js.map +1 -1
  44. package/lib/cjs/interfaces.d.ts +295 -9
  45. package/lib/cjs/interfaces.d.ts.map +1 -1
  46. package/lib/cjs/interfaces.js +54 -1
  47. package/lib/cjs/interfaces.js.map +1 -1
  48. package/lib/cjs/metadata.d.ts.map +1 -1
  49. package/lib/cjs/metadata.js +4 -1
  50. package/lib/cjs/metadata.js.map +1 -1
  51. package/lib/cjs/metrics.d.ts +53 -0
  52. package/lib/cjs/metrics.d.ts.map +1 -0
  53. package/lib/cjs/metrics.js +82 -0
  54. package/lib/cjs/metrics.js.map +1 -0
  55. package/lib/cjs/middlewares.d.ts +13 -1
  56. package/lib/cjs/middlewares.d.ts.map +1 -1
  57. package/lib/cjs/middlewares.js +55 -15
  58. package/lib/cjs/middlewares.js.map +1 -1
  59. package/lib/cjs/model.d.ts +129 -13
  60. package/lib/cjs/model.d.ts.map +1 -1
  61. package/lib/cjs/model.js +449 -93
  62. package/lib/cjs/model.js.map +1 -1
  63. package/lib/cjs/orm.d.ts.map +1 -1
  64. package/lib/cjs/orm.js +12 -3
  65. package/lib/cjs/orm.js.map +1 -1
  66. package/lib/cjs/orphan.d.ts +27 -0
  67. package/lib/cjs/orphan.d.ts.map +1 -0
  68. package/lib/cjs/orphan.js +55 -0
  69. package/lib/cjs/orphan.js.map +1 -0
  70. package/lib/cjs/primary-keys.d.ts +60 -0
  71. package/lib/cjs/primary-keys.d.ts.map +1 -0
  72. package/lib/cjs/primary-keys.js +243 -0
  73. package/lib/cjs/primary-keys.js.map +1 -0
  74. package/lib/cjs/relation-objects.d.ts +101 -9
  75. package/lib/cjs/relation-objects.d.ts.map +1 -1
  76. package/lib/cjs/relation-objects.js +194 -43
  77. package/lib/cjs/relation-objects.js.map +1 -1
  78. package/lib/cjs/relations.d.ts +7 -1
  79. package/lib/cjs/relations.d.ts.map +1 -1
  80. package/lib/cjs/relations.js +16 -1
  81. package/lib/cjs/relations.js.map +1 -1
  82. package/lib/cjs/resilience.d.ts +50 -0
  83. package/lib/cjs/resilience.d.ts.map +1 -0
  84. package/lib/cjs/resilience.js +70 -0
  85. package/lib/cjs/resilience.js.map +1 -0
  86. package/lib/cjs/snapshot.d.ts +58 -0
  87. package/lib/cjs/snapshot.d.ts.map +1 -0
  88. package/lib/cjs/snapshot.js +125 -0
  89. package/lib/cjs/snapshot.js.map +1 -0
  90. package/lib/cjs/statements.d.ts +11 -1
  91. package/lib/cjs/statements.d.ts.map +1 -1
  92. package/lib/cjs/statements.js +13 -2
  93. package/lib/cjs/statements.js.map +1 -1
  94. package/lib/cjs/subject-builder.d.ts +79 -0
  95. package/lib/cjs/subject-builder.d.ts.map +1 -0
  96. package/lib/cjs/subject-builder.js +296 -0
  97. package/lib/cjs/subject-builder.js.map +1 -0
  98. package/lib/cjs/subject-executor.d.ts +122 -0
  99. package/lib/cjs/subject-executor.d.ts.map +1 -0
  100. package/lib/cjs/subject-executor.js +319 -0
  101. package/lib/cjs/subject-executor.js.map +1 -0
  102. package/lib/cjs/subject-sorter.d.ts +70 -0
  103. package/lib/cjs/subject-sorter.d.ts.map +1 -0
  104. package/lib/cjs/subject-sorter.js +173 -0
  105. package/lib/cjs/subject-sorter.js.map +1 -0
  106. package/lib/cjs/subject.d.ts +100 -0
  107. package/lib/cjs/subject.d.ts.map +1 -0
  108. package/lib/cjs/subject.js +89 -0
  109. package/lib/cjs/subject.js.map +1 -0
  110. package/lib/cjs/unit-of-work.d.ts +52 -0
  111. package/lib/cjs/unit-of-work.d.ts.map +1 -0
  112. package/lib/cjs/unit-of-work.js +170 -0
  113. package/lib/cjs/unit-of-work.js.map +1 -0
  114. package/lib/mjs/bootstrap.js +10 -0
  115. package/lib/mjs/bootstrap.js.map +1 -1
  116. package/lib/mjs/builders.d.ts +115 -11
  117. package/lib/mjs/builders.d.ts.map +1 -1
  118. package/lib/mjs/builders.js +344 -285
  119. package/lib/mjs/builders.js.map +1 -1
  120. package/lib/mjs/converters.d.ts +9 -2
  121. package/lib/mjs/converters.d.ts.map +1 -1
  122. package/lib/mjs/converters.js +48 -8
  123. package/lib/mjs/converters.js.map +1 -1
  124. package/lib/mjs/decorators.d.ts +26 -3
  125. package/lib/mjs/decorators.d.ts.map +1 -1
  126. package/lib/mjs/decorators.js +96 -44
  127. package/lib/mjs/decorators.js.map +1 -1
  128. package/lib/mjs/dehydrators.js +1 -1
  129. package/lib/mjs/dehydrators.js.map +1 -1
  130. package/lib/mjs/descriptor.d.ts +1 -0
  131. package/lib/mjs/descriptor.d.ts.map +1 -1
  132. package/lib/mjs/descriptor.js +17 -39
  133. package/lib/mjs/descriptor.js.map +1 -1
  134. package/lib/mjs/driver.d.ts +136 -7
  135. package/lib/mjs/driver.d.ts.map +1 -1
  136. package/lib/mjs/driver.js +279 -0
  137. package/lib/mjs/driver.js.map +1 -1
  138. package/lib/mjs/existsRelationHandlers.d.ts +29 -0
  139. package/lib/mjs/existsRelationHandlers.d.ts.map +1 -0
  140. package/lib/mjs/existsRelationHandlers.js +100 -0
  141. package/lib/mjs/existsRelationHandlers.js.map +1 -0
  142. package/lib/mjs/fp.d.ts.map +1 -1
  143. package/lib/mjs/fp.js +10 -15
  144. package/lib/mjs/fp.js.map +1 -1
  145. package/lib/mjs/hydrators.d.ts.map +1 -1
  146. package/lib/mjs/hydrators.js +29 -2
  147. package/lib/mjs/hydrators.js.map +1 -1
  148. package/lib/mjs/identity-map.d.ts +60 -0
  149. package/lib/mjs/identity-map.d.ts.map +1 -0
  150. package/lib/mjs/identity-map.js +130 -0
  151. package/lib/mjs/identity-map.js.map +1 -0
  152. package/lib/mjs/index.d.ts +12 -0
  153. package/lib/mjs/index.d.ts.map +1 -1
  154. package/lib/mjs/index.js +12 -0
  155. package/lib/mjs/index.js.map +1 -1
  156. package/lib/mjs/interfaces.d.ts +295 -9
  157. package/lib/mjs/interfaces.d.ts.map +1 -1
  158. package/lib/mjs/interfaces.js +53 -0
  159. package/lib/mjs/interfaces.js.map +1 -1
  160. package/lib/mjs/metadata.d.ts.map +1 -1
  161. package/lib/mjs/metadata.js +4 -1
  162. package/lib/mjs/metadata.js.map +1 -1
  163. package/lib/mjs/metrics.d.ts +53 -0
  164. package/lib/mjs/metrics.d.ts.map +1 -0
  165. package/lib/mjs/metrics.js +76 -0
  166. package/lib/mjs/metrics.js.map +1 -0
  167. package/lib/mjs/middlewares.d.ts +13 -1
  168. package/lib/mjs/middlewares.d.ts.map +1 -1
  169. package/lib/mjs/middlewares.js +55 -15
  170. package/lib/mjs/middlewares.js.map +1 -1
  171. package/lib/mjs/model.d.ts +129 -13
  172. package/lib/mjs/model.d.ts.map +1 -1
  173. package/lib/mjs/model.js +451 -95
  174. package/lib/mjs/model.js.map +1 -1
  175. package/lib/mjs/orm.d.ts.map +1 -1
  176. package/lib/mjs/orm.js +12 -3
  177. package/lib/mjs/orm.js.map +1 -1
  178. package/lib/mjs/orphan.d.ts +27 -0
  179. package/lib/mjs/orphan.d.ts.map +1 -0
  180. package/lib/mjs/orphan.js +52 -0
  181. package/lib/mjs/orphan.js.map +1 -0
  182. package/lib/mjs/primary-keys.d.ts +60 -0
  183. package/lib/mjs/primary-keys.d.ts.map +1 -0
  184. package/lib/mjs/primary-keys.js +223 -0
  185. package/lib/mjs/primary-keys.js.map +1 -0
  186. package/lib/mjs/relation-objects.d.ts +101 -9
  187. package/lib/mjs/relation-objects.d.ts.map +1 -1
  188. package/lib/mjs/relation-objects.js +194 -43
  189. package/lib/mjs/relation-objects.js.map +1 -1
  190. package/lib/mjs/relations.d.ts +7 -1
  191. package/lib/mjs/relations.d.ts.map +1 -1
  192. package/lib/mjs/relations.js +16 -1
  193. package/lib/mjs/relations.js.map +1 -1
  194. package/lib/mjs/resilience.d.ts +50 -0
  195. package/lib/mjs/resilience.d.ts.map +1 -0
  196. package/lib/mjs/resilience.js +64 -0
  197. package/lib/mjs/resilience.js.map +1 -0
  198. package/lib/mjs/snapshot.d.ts +58 -0
  199. package/lib/mjs/snapshot.d.ts.map +1 -0
  200. package/lib/mjs/snapshot.js +115 -0
  201. package/lib/mjs/snapshot.js.map +1 -0
  202. package/lib/mjs/statements.d.ts +11 -1
  203. package/lib/mjs/statements.d.ts.map +1 -1
  204. package/lib/mjs/statements.js +14 -3
  205. package/lib/mjs/statements.js.map +1 -1
  206. package/lib/mjs/subject-builder.d.ts +79 -0
  207. package/lib/mjs/subject-builder.d.ts.map +1 -0
  208. package/lib/mjs/subject-builder.js +292 -0
  209. package/lib/mjs/subject-builder.js.map +1 -0
  210. package/lib/mjs/subject-executor.d.ts +122 -0
  211. package/lib/mjs/subject-executor.d.ts.map +1 -0
  212. package/lib/mjs/subject-executor.js +312 -0
  213. package/lib/mjs/subject-executor.js.map +1 -0
  214. package/lib/mjs/subject-sorter.d.ts +70 -0
  215. package/lib/mjs/subject-sorter.d.ts.map +1 -0
  216. package/lib/mjs/subject-sorter.js +168 -0
  217. package/lib/mjs/subject-sorter.js.map +1 -0
  218. package/lib/mjs/subject.d.ts +100 -0
  219. package/lib/mjs/subject.d.ts.map +1 -0
  220. package/lib/mjs/subject.js +84 -0
  221. package/lib/mjs/subject.js.map +1 -0
  222. package/lib/mjs/unit-of-work.d.ts +52 -0
  223. package/lib/mjs/unit-of-work.d.ts.map +1 -0
  224. package/lib/mjs/unit-of-work.js +166 -0
  225. package/lib/mjs/unit-of-work.js.map +1 -0
  226. package/lib/tsconfig.cjs.tsbuildinfo +1 -1
  227. package/lib/tsconfig.mjs.tsbuildinfo +1 -1
  228. package/package.json +9 -7
@@ -16,6 +16,8 @@ export var QueryContext;
16
16
  QueryContext[QueryContext["Transaction"] = 5] = "Transaction";
17
17
  // Insert or UPDATE
18
18
  QueryContext[QueryContext["Upsert"] = 6] = "Upsert";
19
+ /** INSERT that carries a RETURNING clause and therefore resolves with rows, not a status packet. */
20
+ QueryContext[QueryContext["InsertReturning"] = 7] = "InsertReturning";
19
21
  })(QueryContext || (QueryContext = {}));
20
22
  export var ColumnAlterationType;
21
23
  (function (ColumnAlterationType) {
@@ -23,7 +25,25 @@ export var ColumnAlterationType;
23
25
  ColumnAlterationType[ColumnAlterationType["Modify"] = 1] = "Modify";
24
26
  ColumnAlterationType[ColumnAlterationType["Rename"] = 2] = "Rename";
25
27
  })(ColumnAlterationType || (ColumnAlterationType = {}));
28
+ /**
29
+ * Normalizes a driver's raw insert response into {@link DbServerResponse}.
30
+ *
31
+ * Every driver MUST register an implementation against this token in its container — the
32
+ * shape of an insert response is dialect-specific and there is no meaningful default.
33
+ * Declared as a concrete class that throws rather than as an abstract method, so a container
34
+ * missing the registration reports which contract was not implemented instead of dying with
35
+ * `read is not a function` several frames deep inside a result middleware.
36
+ */
26
37
  export class ServerResponseMapper {
38
+ /**
39
+ * Normalizes a driver's raw insert response.
40
+ *
41
+ * @param response - whatever the driver's executeOnDb resolved with
42
+ * @param pkNames - primary key column names, used to read a key out of RETURNING rows
43
+ */
44
+ read(_response, _pkNames) {
45
+ throw new MethodNotImplemented(`no ServerResponseMapper is registered for this connection. Every driver must register one: container.register(MyMapper).as(ServerResponseMapper)`);
46
+ }
27
47
  }
28
48
  export class DefaultValueBuilder {
29
49
  }
@@ -76,6 +96,21 @@ export var RelationType;
76
96
  RelationType[RelationType["Query"] = 3] = "Query";
77
97
  RelationType[RelationType["Virtual"] = 4] = "Virtual";
78
98
  })(RelationType || (RelationType = {}));
99
+ /**
100
+ * What `save()` does with a row that was removed from a relation.
101
+ *
102
+ * - `nullify` — clear the child's foreign key, leaving the row. The default.
103
+ * - `delete` — delete the child row.
104
+ * - `soft-delete` — stamp the child's `@SoftDelete` column. Requires the target to carry one.
105
+ * - `disable` — do nothing; the caller manages orphans by hand.
106
+ */
107
+ export var OrphanPolicy;
108
+ (function (OrphanPolicy) {
109
+ OrphanPolicy["Nullify"] = "nullify";
110
+ OrphanPolicy["Delete"] = "delete";
111
+ OrphanPolicy["SoftDelete"] = "soft-delete";
112
+ OrphanPolicy["Disable"] = "disable";
113
+ })(OrphanPolicy || (OrphanPolicy = {}));
79
114
  let OrmMigration = class OrmMigration {
80
115
  /**
81
116
  * Migrate data - execute AFTER orm module has been initialized
@@ -242,6 +277,24 @@ RawSchemaQueryCompiler = __decorate([
242
277
  NewInstance()
243
278
  ], RawSchemaQueryCompiler);
244
279
  export { RawSchemaQueryCompiler };
280
+ /**
281
+ * Hooks into the lifetime of every query builder. Both hooks run for EVERY builder type —
282
+ * select, insert, update and delete.
283
+ *
284
+ * The two differ in what the query is guaranteed to contain, and that difference is
285
+ * load-bearing rather than stylistic:
286
+ *
287
+ * - `afterQueryCreation` runs from the builder's CONSTRUCTOR. The model and the query context
288
+ * are set; nothing the caller does afterwards has happened yet — no `where()`, no
289
+ * `update()`, no `values()`. It is the place to ADD a constraint (rbac appends its owner
290
+ * `WHERE` here) and the wrong place to read or amend the payload, which does not exist yet.
291
+ * - `beforeQueryExecution` runs once per builder, immediately before the driver is called, so
292
+ * the query is complete. It is the place to inspect or rewrite what is about to be written
293
+ * (rbac stamps the owner column of an INSERT here, because a value written at construction
294
+ * would be overwritten by the caller's own `values()` call).
295
+ *
296
+ * A middleware that throws from either hook aborts the query.
297
+ */
245
298
  export class QueryMiddleware {
246
299
  }
247
300
  export class ModelMiddleware {
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":";;;;;;AAQA,OAAO,EAAE,WAAW,EAAe,SAAS,EAAc,MAAM,aAAa,CAAC;AAE9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAW3D,MAAM,CAAN,IAAY,YAaX;AAbD,WAAY,YAAY;IACtB,mDAAM,CAAA;IACN,mDAAM,CAAA;IACN,mDAAM,CAAA;IACN,mDAAM,CAAA;IACN,mDAAM,CAAA;IACN,6DAAW,CAAA;IAEX,mBAAmB;IACnB,mDAAM,CAAA;IAEN,oGAAoG;IACpG,qEAAe,CAAA;AACjB,CAAC,EAbW,YAAY,KAAZ,YAAY,QAavB;AAED,MAAM,CAAN,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC9B,6DAAG,CAAA;IACH,mEAAM,CAAA;IACN,mEAAM,CAAA;AACR,CAAC,EAJW,oBAAoB,KAApB,oBAAoB,QAI/B;AAgID;;;;;;;;GAQG;AACH,MAAM,OAAO,oBAAoB;IAC/B;;;;;OAKG;IACI,IAAI,CAAC,SAAc,EAAE,QAAmB;QAC7C,MAAM,IAAI,oBAAoB,CAAC,kJAAkJ,CAAC,CAAC;IACrL,CAAC;CACF;AAED,MAAM,OAAgB,mBAAmB;CA2BxC;AAED,MAAM,CAAN,IAAY,eAiBX;AAjBD,WAAY,eAAe;IACzB;;OAEG;IACH,yEAAc,CAAA;IAEd;;OAEG;IACH,yEAAc,CAAA;IAEd;;OAEG;IACH,2EAAe,CAAA;IAEf,qDAAI,CAAA;AACN,CAAC,EAjBW,eAAe,KAAf,eAAe,QAiB1B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,iBAMX;AAND,WAAY,iBAAiB;IAC3B,wCAAmB,CAAA;IACnB,yCAAoB,CAAA;IACpB,0CAAqB,CAAA;IACrB,2CAAsB,CAAA;IACtB,+CAA0B,CAAA;AAC5B,CAAC,EANW,iBAAiB,KAAjB,iBAAiB,QAM5B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,wBAUX;AAVD,WAAY,wBAAwB;IAClC;;OAEG;IACH,uEAAI,CAAA;IAEJ;;OAEG;IACH,uFAAY,CAAA;AACd,CAAC,EAVW,wBAAwB,KAAxB,wBAAwB,QAUnC;AA0RD,MAAM,CAAN,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,6CAAG,CAAA;IACH,+CAAI,CAAA;IACJ,2DAAU,CAAA;IACV,iDAAK,CAAA;IACL,qDAAO,CAAA;AACT,CAAC,EANW,YAAY,KAAZ,YAAY,QAMvB;AAED;;;;;;;GAOG;AACH,MAAM,CAAN,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,mCAAmB,CAAA;IACnB,iCAAiB,CAAA;IACjB,0CAA0B,CAAA;IAC1B,mCAAmB,CAAA;AACrB,CAAC,EALW,YAAY,KAAZ,YAAY,QAKvB;AAudM,IAAe,YAAY,GAA3B,MAAe,YAAY;IAchC;;;;OAIG;IACI,KAAK,CAAC,IAAI,KAAoB,CAAC;CACvC,CAAA;AApBqB,YAAY;IADjC,WAAW,EAAE;GACQ,YAAY,CAoBjC;;AA4TD;;;GAGG;AAEI,IAAe,sBAAsB,GAArC,MAAe,sBAAsB;CAE3C,CAAA;AAFqB,sBAAsB;IAD3C,WAAW,EAAE;GACQ,sBAAsB,CAE3C;;AAEM,IAAe,mBAAmB,GAAlC,MAAe,mBAAmB;CAExC,CAAA;AAFqB,mBAAmB;IADxC,WAAW,EAAE;GACQ,mBAAmB,CAExC;;AAGM,IAAe,iBAAiB,GAAhC,MAAe,iBAAiB;CAEtC,CAAA;AAFqB,iBAAiB;IADtC,WAAW,EAAE;GACQ,iBAAiB,CAEtC;;AAGM,IAAe,kBAAkB,GAAjC,MAAe,kBAAkB;CAEvC,CAAA;AAFqB,kBAAkB;IADvC,WAAW,EAAE;GACQ,kBAAkB,CAEvC;;AAGM,IAAe,kBAAkB,GAAjC,MAAe,kBAAkB;CAEvC,CAAA;AAFqB,kBAAkB;IADvC,WAAW,EAAE;GACQ,kBAAkB,CAEvC;;AAGM,IAAe,uBAAuB,GAAtC,MAAe,uBAAuB;CAE5C,CAAA;AAFqB,uBAAuB;IAD5C,WAAW,EAAE;GACQ,uBAAuB,CAE5C;;AAGM,IAAe,mBAAmB,GAAlC,MAAe,mBAAmB;CAExC,CAAA;AAFqB,mBAAmB;IADxC,WAAW,EAAE;GACQ,mBAAmB,CAExC;;AAGM,IAAe,mBAAmB,GAAlC,MAAe,mBAAmB;CAExC,CAAA;AAFqB,mBAAmB;IADxC,WAAW,EAAE;GACQ,mBAAmB,CAExC;;AAGM,IAAe,mBAAmB,GAAlC,MAAe,mBAAmB;CAExC,CAAA;AAFqB,mBAAmB;IADxC,WAAW,EAAE;GACQ,mBAAmB,CAExC;;AAGM,IAAe,wBAAwB,GAAvC,MAAe,wBAAwB;CAE7C,CAAA;AAFqB,wBAAwB;IAD7C,WAAW,EAAE;GACQ,wBAAwB,CAE7C;;AAGM,IAAe,kBAAkB,GAAjC,MAAe,kBAAkB;CAEvC,CAAA;AAFqB,kBAAkB;IADvC,WAAW,EAAE;GACQ,kBAAkB,CAEvC;;AAGM,IAAe,yBAAyB,GAAxC,MAAe,yBAAyB;CAE9C,CAAA;AAFqB,yBAAyB;IAD9C,WAAW,EAAE;GACQ,yBAAyB,CAE9C;;AAGM,IAAe,0BAA0B,GAAzC,MAAe,0BAA0B;CAE/C,CAAA;AAFqB,0BAA0B;IAD/C,WAAW,EAAE;GACQ,0BAA0B,CAE/C;;AAGM,IAAe,uBAAuB,GAAtC,MAAe,uBAAuB;CAE5C,CAAA;AAFqB,uBAAuB;IAD5C,WAAW,EAAE;GACQ,uBAAuB,CAE5C;;AAGM,IAAe,kBAAkB,GAAjC,MAAe,kBAAkB;CAEvC,CAAA;AAFqB,kBAAkB;IADvC,WAAW,EAAE;GACQ,kBAAkB,CAEvC;;AAGM,IAAe,sBAAsB,GAArC,MAAe,sBAAsB;CAE3C,CAAA;AAFqB,sBAAsB;IAD3C,WAAW,EAAE;GACQ,sBAAsB,CAE3C;;AAGM,IAAe,uBAAuB,GAAtC,MAAe,uBAAuB;CAE5C,CAAA;AAFqB,uBAAuB;IAD5C,WAAW,EAAE;GACQ,uBAAuB,CAE5C;;AAGM,IAAe,mBAAmB,GAAlC,MAAe,mBAAmB;CAExC,CAAA;AAFqB,mBAAmB;IADxC,WAAW,EAAE;GACQ,mBAAmB,CAExC;;AAGM,IAAe,iBAAiB,GAAhC,MAAe,iBAAiB;CAEtC,CAAA;AAFqB,iBAAiB;IADtC,WAAW,EAAE;GACQ,iBAAiB,CAEtC;;AAGM,IAAe,gBAAgB,GAA/B,MAAe,gBAAgB;CAErC,CAAA;AAFqB,gBAAgB;IADrC,WAAW,EAAE;GACQ,gBAAgB,CAErC;;AAIM,IAAe,mBAAmB,GAAlC,MAAe,mBAAmB;CAExC,CAAA;AAFqB,mBAAmB;IADxC,WAAW,EAAE;GACQ,mBAAmB,CAExC;;AAGM,IAAe,wBAAwB,GAAvC,MAAe,wBAAwB;CAE7C,CAAA;AAFqB,wBAAwB;IAD7C,WAAW,EAAE;GACQ,wBAAwB,CAE7C;;AAGM,IAAe,oBAAoB,GAAnC,MAAe,oBAAoB;CAEzC,CAAA;AAFqB,oBAAoB;IADzC,WAAW,EAAE;GACQ,oBAAoB,CAEzC;;AAGM,IAAe,oBAAoB,GAAnC,MAAe,oBAAoB;CAEzC,CAAA;AAFqB,oBAAoB;IADzC,WAAW,EAAE;GACQ,oBAAoB,CAEzC;;AAGM,IAAe,sBAAsB,GAArC,MAAe,sBAAsB;CAE3C,CAAA;AAFqB,sBAAsB;IAD3C,WAAW,EAAE;GACQ,sBAAsB,CAE3C;;AAoCD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAgB,eAAe;CAcpC;AAED,MAAM,OAAgB,eAAe;CAKpC;AAED,MAAM,OAAO,cAAc;IACzB;;;;OAIG;IACI,IAAI,CAAC,MAAW,EAAE,MAAsB,EAAE,OAA0B,EAAE,QAAc,EAAE,iBAAqC;QAChI,MAAM,IAAI,oBAAoB,EAAE,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,MAAW,EAAE,QAAc,EAAE,QAAc;QACvD,MAAM,IAAI,oBAAoB,EAAE,CAAC;IACnC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,cAAc;CAAI;AAE9D;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,cAAc;CAAI;AAE1D;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,cAAc;CAAI;AAE7D;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,cAAc;CAAI;AAGlD,IAAe,kBAAkB,GAAjC,MAAe,kBAAkB;CAEvC,CAAA;AAFqB,kBAAkB;IADvC,SAAS,EAAE;GACU,kBAAkB,CAEvC;;AAMD;;GAEG;AACH,MAAM,OAAgB,UAAU;CAAI;AASpC,MAAM,OAAgB,mBAAmB;CAExC;AAED,MAAM,OAAgB,oBAAoB;CAEzC"}
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/metadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAK9D;;;;;GAKG;AACH,8BAAsB,aAAa,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACxE,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;IACtB,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;IAGhB,EAAE,EAAE,MAAM,CAAC;IAIX,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IAE7E,IACW,KAAK,IAIQ,GAAG,CAF1B;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,GAAG,EAG1B;IAED,IAAW,GAAG,IAIQ,MAAM,CAF3B;IAED,IAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAE3B;IAED,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU;CAW7F;AAED;;;;;;;;;;GAUG;AACH,qBAAa,gBAAgB,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,CAAE,SAAQ,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC;IACnH,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IAEnB;;;;;;OAMG;IACU,MAAM,CAAC,GAAG,EAAE,MAAM;gBAiBnB,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE;CAuDnE"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/metadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAK9D;;;;;GAKG;AACH,8BAAsB,aAAa,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACxE,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;IACtB,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;IAGhB,EAAE,EAAE,MAAM,CAAC;IAIX,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IAE7E,IACW,KAAK,IAIQ,GAAG,CAF1B;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,GAAG,EAG1B;IAED,IAAW,GAAG,IAIQ,MAAM,CAF3B;IAED,IAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAE3B;IAED,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU;CAe7F;AAED;;;;;;;;;;GAUG;AACH,qBAAa,gBAAgB,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,CAAE,SAAQ,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC;IACnH,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IAEnB;;;;;;OAMG;IACU,MAAM,CAAC,GAAG,EAAE,MAAM;gBAiBnB,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE;CAuDnE"}
@@ -38,6 +38,9 @@ export class MetadataModel extends ModelBase {
38
38
  if (val instanceof DateTime) {
39
39
  return 'datetime';
40
40
  }
41
+ if (val === null || val === undefined) {
42
+ return 'string';
43
+ }
41
44
  if (typeof val === 'object') {
42
45
  return 'json';
43
46
  }
@@ -76,7 +79,7 @@ export class MetadataRelation extends OneToManyRelationList {
76
79
  const k = _check_arg(_non_empty())(key, 'key');
77
80
  const model = await this.Relation.TargetModel.where({
78
81
  Key: k,
79
- user_id: this.Owner.PrimaryKeyValue,
82
+ [this.Relation.ForeignKey]: this.Owner.PrimaryKeyValue,
80
83
  }).first();
81
84
  if (_.isNil(model)) {
82
85
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/metadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/metadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { MetricMap, Gauge, Histogram } from '@spinajs/telemetry-common';
2
+ /**
3
+ * Point-in-time view of a driver's connection pool.
4
+ */
5
+ export interface IPoolMetrics {
6
+ /** Connections currently open ( idle + in use ). */
7
+ Size: number;
8
+ /** Connections currently checked out by a query. */
9
+ InUse: number;
10
+ /** Callers waiting for a free connection. */
11
+ Waiting: number;
12
+ }
13
+ /**
14
+ * Prefix `Metrics.defineMetrics` puts in front of every name below.
15
+ */
16
+ export declare const ORM_METRIC_PREFIX = "orm";
17
+ /** Key of a metric inside the {@link MetricMap} — the name WITHOUT the `orm_` prefix. */
18
+ export declare const ORM_METRIC_KEY_POOL_SIZE = "pool_size";
19
+ export declare const ORM_METRIC_KEY_POOL_IN_USE = "pool_in_use";
20
+ export declare const ORM_METRIC_KEY_POOL_WAITING = "pool_waiting";
21
+ export declare const ORM_METRIC_KEY_ACQUIRE_SECONDS = "pool_acquire_seconds";
22
+ export declare const ORM_METRIC_KEY_CONNECTION_STATE = "connection_state";
23
+ /** Fully qualified metric names, as they appear in the Prometheus exposition text. */
24
+ export declare const ORM_METRIC_POOL_SIZE = "orm_pool_size";
25
+ export declare const ORM_METRIC_POOL_IN_USE = "orm_pool_in_use";
26
+ export declare const ORM_METRIC_POOL_WAITING = "orm_pool_waiting";
27
+ export declare const ORM_METRIC_ACQUIRE_SECONDS = "orm_pool_acquire_seconds";
28
+ export declare const ORM_METRIC_CONNECTION_STATE = "orm_connection_state";
29
+ /**
30
+ * Acquiring a pooled connection is normally sub-millisecond and only becomes interesting once the
31
+ * pool saturates, so the buckets are dense at the bottom and reach far enough to show a caller
32
+ * that queued for seconds. prom-client's linear default ( 1..10 SECONDS ) would put every healthy
33
+ * acquire in the first bucket and tell us nothing.
34
+ */
35
+ export declare const ORM_ACQUIRE_BUCKETS_SECONDS: number[];
36
+ /**
37
+ * The ORM's metric set, built against the shared `Metrics` service from
38
+ * `@spinajs/telemetry-common`.
39
+ *
40
+ * The ORM deliberately depends on `-common` and NOT on `@spinajs/telemetry`: that package pulls in
41
+ * `@spinajs/http`, `@spinajs/log`, `@spinajs/validation` and `@spinajs/configuration`, and putting
42
+ * the HTTP stack underneath every database connection inverts the dependency graph. `-common`
43
+ * needs nothing but `@spinajs/di` and prom-client. `@spinajs/telemetry` re-exports it, so the
44
+ * `/metrics` endpoint renders the very registry these metrics land in — no wiring needed.
45
+ *
46
+ * Returns null rather than throwing when the service cannot be resolved: publishing a metric must
47
+ * never be able to fail a query or a health probe.
48
+ */
49
+ export declare function ormMetrics(): MetricMap | null;
50
+ /** Narrowing helpers: `defineMetrics` is typed by its declarations, not by the values it returns. */
51
+ export declare function ormGauge(map: MetricMap, key: string): Gauge<string>;
52
+ export declare function ormHistogram(map: MetricMap, key: string): Histogram<string>;
53
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE5F;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IAEb,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IAEd,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AAEvC,yFAAyF;AACzF,eAAO,MAAM,wBAAwB,cAAc,CAAC;AACpD,eAAO,MAAM,0BAA0B,gBAAgB,CAAC;AACxD,eAAO,MAAM,2BAA2B,iBAAiB,CAAC;AAC1D,eAAO,MAAM,8BAA8B,yBAAyB,CAAC;AACrE,eAAO,MAAM,+BAA+B,qBAAqB,CAAC;AAElE,sFAAsF;AACtF,eAAO,MAAM,oBAAoB,kBAAqD,CAAC;AACvF,eAAO,MAAM,sBAAsB,oBAAuD,CAAC;AAC3F,eAAO,MAAM,uBAAuB,qBAAwD,CAAC;AAC7F,eAAO,MAAM,0BAA0B,6BAA2D,CAAC;AACnG,eAAO,MAAM,2BAA2B,yBAA4D,CAAC;AAErG;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,UAAoE,CAAC;AAkB7G;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,IAAI,SAAS,GAAG,IAAI,CAc7C;AAED,qGAAqG;AACrG,wBAAgB,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAGnE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAG3E"}
@@ -0,0 +1,76 @@
1
+ import { DI } from '@spinajs/di';
2
+ import { Metrics } from '@spinajs/telemetry-common';
3
+ /**
4
+ * Prefix `Metrics.defineMetrics` puts in front of every name below.
5
+ */
6
+ export const ORM_METRIC_PREFIX = 'orm';
7
+ /** Key of a metric inside the {@link MetricMap} — the name WITHOUT the `orm_` prefix. */
8
+ export const ORM_METRIC_KEY_POOL_SIZE = 'pool_size';
9
+ export const ORM_METRIC_KEY_POOL_IN_USE = 'pool_in_use';
10
+ export const ORM_METRIC_KEY_POOL_WAITING = 'pool_waiting';
11
+ export const ORM_METRIC_KEY_ACQUIRE_SECONDS = 'pool_acquire_seconds';
12
+ export const ORM_METRIC_KEY_CONNECTION_STATE = 'connection_state';
13
+ /** Fully qualified metric names, as they appear in the Prometheus exposition text. */
14
+ export const ORM_METRIC_POOL_SIZE = `${ORM_METRIC_PREFIX}_${ORM_METRIC_KEY_POOL_SIZE}`;
15
+ export const ORM_METRIC_POOL_IN_USE = `${ORM_METRIC_PREFIX}_${ORM_METRIC_KEY_POOL_IN_USE}`;
16
+ export const ORM_METRIC_POOL_WAITING = `${ORM_METRIC_PREFIX}_${ORM_METRIC_KEY_POOL_WAITING}`;
17
+ export const ORM_METRIC_ACQUIRE_SECONDS = `${ORM_METRIC_PREFIX}_${ORM_METRIC_KEY_ACQUIRE_SECONDS}`;
18
+ export const ORM_METRIC_CONNECTION_STATE = `${ORM_METRIC_PREFIX}_${ORM_METRIC_KEY_CONNECTION_STATE}`;
19
+ /**
20
+ * Acquiring a pooled connection is normally sub-millisecond and only becomes interesting once the
21
+ * pool saturates, so the buckets are dense at the bottom and reach far enough to show a caller
22
+ * that queued for seconds. prom-client's linear default ( 1..10 SECONDS ) would put every healthy
23
+ * acquire in the first bucket and tell us nothing.
24
+ */
25
+ export const ORM_ACQUIRE_BUCKETS_SECONDS = [0.0005, 0.001, 0.005, 0.01, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10];
26
+ const ORM_METRIC_DEFS = [
27
+ { name: ORM_METRIC_KEY_POOL_SIZE, help: 'Open ORM pool connections', type: 'gauge', labelNames: ['connection'] },
28
+ { name: ORM_METRIC_KEY_POOL_IN_USE, help: 'ORM pool connections checked out by a query', type: 'gauge', labelNames: ['connection'] },
29
+ { name: ORM_METRIC_KEY_POOL_WAITING, help: 'Callers waiting for a free ORM pool connection', type: 'gauge', labelNames: ['connection'] },
30
+ { name: ORM_METRIC_KEY_CONNECTION_STATE, help: 'ORM connection state: 1 connected, 0 otherwise', type: 'gauge', labelNames: ['connection'] },
31
+ { name: ORM_METRIC_KEY_ACQUIRE_SECONDS, help: 'Seconds spent acquiring an ORM pool connection', type: 'histogram', labelNames: ['connection'], buckets: ORM_ACQUIRE_BUCKETS_SECONDS },
32
+ ];
33
+ /**
34
+ * `defineMetrics` REBUILDS the metric objects on every call — a second call would silently reset
35
+ * every value — so each `Metrics` service gets its metric set built exactly once. Keyed by the
36
+ * service instance rather than a module-level flag so that `DI.clearCache()` ( tests, or a second
37
+ * SpinaJS app in one process ) starts from a fresh registry without leaking metrics across it.
38
+ */
39
+ const DEFINED = new WeakMap();
40
+ /**
41
+ * The ORM's metric set, built against the shared `Metrics` service from
42
+ * `@spinajs/telemetry-common`.
43
+ *
44
+ * The ORM deliberately depends on `-common` and NOT on `@spinajs/telemetry`: that package pulls in
45
+ * `@spinajs/http`, `@spinajs/log`, `@spinajs/validation` and `@spinajs/configuration`, and putting
46
+ * the HTTP stack underneath every database connection inverts the dependency graph. `-common`
47
+ * needs nothing but `@spinajs/di` and prom-client. `@spinajs/telemetry` re-exports it, so the
48
+ * `/metrics` endpoint renders the very registry these metrics land in — no wiring needed.
49
+ *
50
+ * Returns null rather than throwing when the service cannot be resolved: publishing a metric must
51
+ * never be able to fail a query or a health probe.
52
+ */
53
+ export function ormMetrics() {
54
+ try {
55
+ const service = DI.get(Metrics) ?? DI.resolve(Metrics);
56
+ let map = DEFINED.get(service);
57
+ if (!map) {
58
+ map = service.defineMetrics(ORM_METRIC_PREFIX, ORM_METRIC_DEFS);
59
+ DEFINED.set(service, map);
60
+ }
61
+ return map;
62
+ }
63
+ catch {
64
+ return null;
65
+ }
66
+ }
67
+ /** Narrowing helpers: `defineMetrics` is typed by its declarations, not by the values it returns. */
68
+ export function ormGauge(map, key) {
69
+ // eslint-disable-next-line security/detect-object-injection
70
+ return map[key];
71
+ }
72
+ export function ormHistogram(map, key) {
73
+ // eslint-disable-next-line security/detect-object-injection
74
+ return map[key];
75
+ }
76
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"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"}
@@ -43,7 +43,19 @@ export declare class HasManyToManyRelationMiddleware implements IBuilderMiddlewa
43
43
  protected _relationQuery: ISelectQueryBuilder;
44
44
  protected _description: IRelationDescriptor;
45
45
  protected _targetModelDescriptor: IModelDescriptor;
46
- constructor(_relationQuery: ISelectQueryBuilder, _description: IRelationDescriptor, _targetModelDescriptor: IModelDescriptor);
46
+ protected _relationDescriptor?: IRelationDescriptor | undefined;
47
+ /**
48
+ * @param _relationQuery - the join query through the junction table
49
+ * @param _description - the *synthetic* owner -> junction descriptor built by
50
+ * `ManyToManyRelation.compile()`. It says `Type: Many` and its `ForeignKey` is the
51
+ * junction's source column, which is what the row-matching below needs.
52
+ * @param _targetModelDescriptor - descriptor of the model on the far side of the junction
53
+ * @param _relationDescriptor - the model's own `@HasManyToMany` descriptor. Optional so no
54
+ * existing caller breaks, but without it the `ManyToManyRelationList` handed to the
55
+ * user carries the synthetic descriptor instead — no `JunctionModel`, no junction
56
+ * key names — and `sync()` / `update()` / the set operations all fail on it.
57
+ */
58
+ constructor(_relationQuery: ISelectQueryBuilder, _description: IRelationDescriptor, _targetModelDescriptor: IModelDescriptor, _relationDescriptor?: IRelationDescriptor | undefined);
47
59
  afterQuery(data: any[]): any[];
48
60
  modelCreation(_: any): ModelBase | null;
49
61
  afterHydration(data: ModelBase[]): Promise<any[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"middlewares.d.ts","sourceRoot":"","sources":["../../src/middlewares.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"middlewares.d.ts","sourceRoot":"","sources":["../../src/middlewares.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,12 @@ export class HasManyRelationMiddleware {
50
50
  d[self._description.Name] = DI.resolve(self._description.RelationClass, [d, self._description, relData]);
51
51
  }
52
52
  }
53
+ // The contents came from the database, so this relation is populated — even when
54
+ // the batched query returned no rows for this particular owner. `Populated` is what
55
+ // tells "loaded and empty" from "never loaded", and unit-of-work `save()` skips the
56
+ // latter entirely ( the empty-array anti-footgun ).
57
+ d[self._description.Name].Populated = true;
58
+ d.snapshotRelation(self._description.Name);
53
59
  });
54
60
  },
55
61
  };
@@ -173,10 +179,22 @@ export class VirtualRelationMiddleware {
173
179
  }
174
180
  }
175
181
  export class HasManyToManyRelationMiddleware {
176
- constructor(_relationQuery, _description, _targetModelDescriptor) {
182
+ /**
183
+ * @param _relationQuery - the join query through the junction table
184
+ * @param _description - the *synthetic* owner -> junction descriptor built by
185
+ * `ManyToManyRelation.compile()`. It says `Type: Many` and its `ForeignKey` is the
186
+ * junction's source column, which is what the row-matching below needs.
187
+ * @param _targetModelDescriptor - descriptor of the model on the far side of the junction
188
+ * @param _relationDescriptor - the model's own `@HasManyToMany` descriptor. Optional so no
189
+ * existing caller breaks, but without it the `ManyToManyRelationList` handed to the
190
+ * user carries the synthetic descriptor instead — no `JunctionModel`, no junction
191
+ * key names — and `sync()` / `update()` / the set operations all fail on it.
192
+ */
193
+ constructor(_relationQuery, _description, _targetModelDescriptor, _relationDescriptor) {
177
194
  this._relationQuery = _relationQuery;
178
195
  this._description = _description;
179
196
  this._targetModelDescriptor = _targetModelDescriptor;
197
+ this._relationDescriptor = _relationDescriptor;
180
198
  }
181
199
  afterQuery(data) {
182
200
  return data;
@@ -198,7 +216,15 @@ export class HasManyToManyRelationMiddleware {
198
216
  relationData.forEach((d) => (d.__relationKey__ = self._description.Name));
199
217
  data.forEach((d) => {
200
218
  const relData = relationData.filter((rd) => rd.JunctionModel[self._description.ForeignKey] === d[self._description.PrimaryKey]);
201
- d[self._description.Name] = new ManyToManyRelationList(d, self._description, relData);
219
+ // The real @HasManyToMany descriptor, not the synthetic join one — see the
220
+ // constructor doc. Falls back to the synthetic descriptor so a caller that does
221
+ // not supply it keeps the previous ( broken but unchanged ) behaviour.
222
+ const list = new ManyToManyRelationList(d, self._relationDescriptor ?? self._description, relData);
223
+ // See the note in HasManyRelationMiddleware: loaded-and-empty must be
224
+ // distinguishable from never-loaded.
225
+ list.Populated = true;
226
+ d[self._description.Name] = list;
227
+ d.snapshotRelation(self._description.Name);
202
228
  });
203
229
  relationData.forEach((d) => delete d.JunctionModel);
204
230
  },
@@ -235,19 +261,28 @@ export class BelongsToPopulateDataMiddleware {
235
261
  }
236
262
  afterHydration(data) {
237
263
  const relData = data.map((d) => d[this._description.Name].Value).filter((x) => x !== null && x !== undefined);
238
- const middlewares = this.relation._relationQuery.Relations
239
- .map((x) => {
240
- return x._query._middlewares;
241
- })
242
- .reduce((prev, current) => {
243
- return prev.concat(current);
244
- }, []);
245
- // HACK
246
- // TODO: this is only temporary solution to execute only unique middlewares.
247
- // Somewhere else in code is bug that causes multiple same middlewares to be added to the query
264
+ // Every relation created on a builder stores that builder as `_query`
265
+ // ( SelectQueryBuilder._getRelationInstance passes `this` ), so N nested relations under
266
+ // one belongsTo all point at the *same* `_middlewares` array. Concatenating per relation
267
+ // therefore repeated the whole array N times — the duplication a `_.uniqBy` on relation
268
+ // name used to paper over, too coarsely ( it collapsed two genuinely distinct middlewares
269
+ // that happened to share a relation name ) and unsafely
270
+ // ( BelongsToRelationResultTransformMiddleware has no `_description` at all, and
271
+ // DiscriminationMapMiddleware's is an IModelDescriptor, so the key compared a *model*
272
+ // name against a *relation* name ).
248
273
  //
249
- // Check hasmanytomany relation with multiple nested belongs to relation to see the bug
250
- return Promise.all(_.uniqBy(middlewares, (x) => x._description.Name).map((x) => {
274
+ // Collect each distinct middleware object once, in first-seen order.
275
+ const seen = new Set();
276
+ const middlewares = [];
277
+ for (const relation of this.relation._relationQuery.Relations) {
278
+ for (const middleware of (relation._query?._middlewares ?? [])) {
279
+ if (!seen.has(middleware)) {
280
+ seen.add(middleware);
281
+ middlewares.push(middleware);
282
+ }
283
+ }
284
+ }
285
+ return Promise.all(middlewares.map((x) => {
251
286
  return x.afterHydration(relData);
252
287
  }));
253
288
  }
@@ -255,7 +290,12 @@ export class BelongsToPopulateDataMiddleware {
255
290
  export class BelongsToRelationResultTransformMiddleware {
256
291
  afterQuery(data) {
257
292
  return data.map((d) => {
258
- const transformedData = Object.assign(d);
293
+ // A real copy. `Object.assign(d)` with one argument returns `d` itself, so this used
294
+ // to nest keys into and delete keys from the caller's own row object. The pipeline
295
+ // writes whatever this returns back into the result array
296
+ // ( builders.ts, `Object.assign(transformedResult, m.afterQuery(...))` ), so returning
297
+ // fresh objects is transparent to everything downstream.
298
+ const transformedData = { ...d };
259
299
  for (const key in transformedData) {
260
300
  if (key.startsWith('$')) {
261
301
  this.setDeep(transformedData, this.keyTransform(key), d[key]);
@@ -1 +1 @@
1
- {"version":3,"file":"middlewares.js","sourceRoot":"","sources":["../../src/middlewares.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"middlewares.js","sourceRoot":"","sources":["../../src/middlewares.ts"],"names":[],"mappings":"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"}