pure-orm 4.0.2 → 4.1.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 (209) hide show
  1. package/.benchmarks/bench-core-baseline.json +303 -0
  2. package/.eslintrc.json +20 -10
  3. package/README.md +0 -7
  4. package/coverage/clover.xml +1493 -1232
  5. package/coverage/coverage-final.json +103 -103
  6. package/coverage/lcov-report/dist/src/core.js.html +590 -383
  7. package/coverage/lcov-report/dist/src/driver-integrations/index.html +20 -20
  8. package/coverage/lcov-report/dist/src/driver-integrations/pgp.js.html +52 -52
  9. package/coverage/lcov-report/dist/src/index.html +28 -28
  10. package/coverage/lcov-report/dist/src/index.js.html +2 -2
  11. package/coverage/lcov-report/dist/src/orm.js.html +392 -209
  12. package/coverage/lcov-report/dist/test-utils/blog/entities.js.html +1 -1
  13. package/coverage/lcov-report/dist/test-utils/blog/index.html +1 -1
  14. package/coverage/lcov-report/dist/test-utils/blog/models/article.js.html +15 -15
  15. package/coverage/lcov-report/dist/test-utils/blog/models/article_tag.js.html +2 -2
  16. package/coverage/lcov-report/dist/test-utils/blog/models/index.html +1 -1
  17. package/coverage/lcov-report/dist/test-utils/blog/models/person.js.html +13 -13
  18. package/coverage/lcov-report/dist/test-utils/blog/models/tag.js.html +1 -1
  19. package/coverage/lcov-report/dist/test-utils/five/entities.js.html +1 -1
  20. package/coverage/lcov-report/dist/test-utils/five/index.html +1 -1
  21. package/coverage/lcov-report/dist/test-utils/five/models/index.html +1 -1
  22. package/coverage/lcov-report/dist/test-utils/five/models/line-item.js.html +4 -4
  23. package/coverage/lcov-report/dist/test-utils/five/models/order.js.html +3 -3
  24. package/coverage/lcov-report/dist/test-utils/five/models/parcel-event.js.html +6 -6
  25. package/coverage/lcov-report/dist/test-utils/five/models/parcel-line-item.js.html +7 -7
  26. package/coverage/lcov-report/dist/test-utils/five/models/parcel.js.html +2 -2
  27. package/coverage/lcov-report/dist/test-utils/fourteen/entities.js.html +1 -1
  28. package/coverage/lcov-report/dist/test-utils/fourteen/index.html +1 -1
  29. package/coverage/lcov-report/dist/test-utils/fourteen/models/customer.js.html +1 -1
  30. package/coverage/lcov-report/dist/test-utils/fourteen/models/index.html +1 -1
  31. package/coverage/lcov-report/dist/test-utils/fourteen/models/person.js.html +1 -1
  32. package/coverage/lcov-report/dist/test-utils/nine/entities.js.html +1 -1
  33. package/coverage/lcov-report/dist/test-utils/nine/index.html +1 -1
  34. package/coverage/lcov-report/dist/test-utils/nine/models/feature-switch.js.html +6 -6
  35. package/coverage/lcov-report/dist/test-utils/nine/models/index.html +1 -1
  36. package/coverage/lcov-report/dist/test-utils/order/entities.js.html +9 -9
  37. package/coverage/lcov-report/dist/test-utils/order/index.html +1 -1
  38. package/coverage/lcov-report/dist/test-utils/order/models/index.html +14 -14
  39. package/coverage/lcov-report/dist/test-utils/order/models/line-item.js.html +11 -11
  40. package/coverage/lcov-report/dist/test-utils/order/models/order.js.html +41 -41
  41. package/coverage/lcov-report/dist/test-utils/order/models/product-variant.js.html +18 -18
  42. package/coverage/lcov-report/dist/test-utils/order/models/product.js.html +17 -17
  43. package/coverage/lcov-report/dist/test-utils/order/models/utm-source.js.html +12 -12
  44. package/coverage/lcov-report/dist/test-utils/order-more/entities.js.html +1 -1
  45. package/coverage/lcov-report/dist/test-utils/order-more/index.html +1 -1
  46. package/coverage/lcov-report/dist/test-utils/order-more/models/actual-product-variant.js.html +3 -3
  47. package/coverage/lcov-report/dist/test-utils/order-more/models/color.js.html +6 -6
  48. package/coverage/lcov-report/dist/test-utils/order-more/models/customer.js.html +3 -3
  49. package/coverage/lcov-report/dist/test-utils/order-more/models/gender.js.html +4 -4
  50. package/coverage/lcov-report/dist/test-utils/order-more/models/index.html +23 -23
  51. package/coverage/lcov-report/dist/test-utils/order-more/models/inventory-level.js.html +11 -11
  52. package/coverage/lcov-report/dist/test-utils/order-more/models/line-item.js.html +15 -15
  53. package/coverage/lcov-report/dist/test-utils/order-more/models/order.js.html +39 -39
  54. package/coverage/lcov-report/dist/test-utils/order-more/models/parcel-event.js.html +6 -6
  55. package/coverage/lcov-report/dist/test-utils/order-more/models/parcel-line-item.js.html +7 -7
  56. package/coverage/lcov-report/dist/test-utils/order-more/models/parcel.js.html +2 -2
  57. package/coverage/lcov-report/dist/test-utils/order-more/models/physical-address.js.html +12 -12
  58. package/coverage/lcov-report/dist/test-utils/order-more/models/product-variant-image.js.html +7 -7
  59. package/coverage/lcov-report/dist/test-utils/order-more/models/product-variant.js.html +22 -22
  60. package/coverage/lcov-report/dist/test-utils/order-more/models/product.js.html +11 -11
  61. package/coverage/lcov-report/dist/test-utils/order-more/models/refund.js.html +11 -11
  62. package/coverage/lcov-report/dist/test-utils/order-more/models/shipment-actual-product-variant.js.html +9 -9
  63. package/coverage/lcov-report/dist/test-utils/order-more/models/shipment.js.html +4 -4
  64. package/coverage/lcov-report/dist/test-utils/order-more/models/size.js.html +4 -4
  65. package/coverage/lcov-report/dist/test-utils/order-more/models/utm-medium.js.html +15 -15
  66. package/coverage/lcov-report/dist/test-utils/order-more/models/utm-source.js.html +17 -17
  67. package/coverage/lcov-report/dist/test-utils/six/entities.js.html +1 -1
  68. package/coverage/lcov-report/dist/test-utils/six/index.html +1 -1
  69. package/coverage/lcov-report/dist/test-utils/six/models/customer.js.html +3 -3
  70. package/coverage/lcov-report/dist/test-utils/six/models/index.html +21 -21
  71. package/coverage/lcov-report/dist/test-utils/six/models/line-item.js.html +10 -10
  72. package/coverage/lcov-report/dist/test-utils/six/models/order.js.html +13 -13
  73. package/coverage/lcov-report/dist/test-utils/six/models/parcel-line-item.js.html +2 -2
  74. package/coverage/lcov-report/dist/test-utils/six/models/parcel.js.html +2 -2
  75. package/coverage/lcov-report/dist/test-utils/thirteen/entities.js.html +1 -1
  76. package/coverage/lcov-report/dist/test-utils/thirteen/index.html +1 -1
  77. package/coverage/lcov-report/dist/test-utils/thirteen/models/audience.js.html +2 -2
  78. package/coverage/lcov-report/dist/test-utils/thirteen/models/brand.js.html +2 -2
  79. package/coverage/lcov-report/dist/test-utils/thirteen/models/category.js.html +1 -1
  80. package/coverage/lcov-report/dist/test-utils/thirteen/models/index.html +14 -14
  81. package/coverage/lcov-report/dist/test-utils/thirteen/models/member.js.html +2 -2
  82. package/coverage/lcov-report/dist/test-utils/thirteen/models/passion.js.html +2 -2
  83. package/coverage/lcov-report/dist/test-utils/thirteen/models/product.js.html +10 -10
  84. package/coverage/lcov-report/dist/test-utils/thirteen/models/recommendation-audience.js.html +2 -2
  85. package/coverage/lcov-report/dist/test-utils/thirteen/models/recommendation.js.html +2 -2
  86. package/coverage/lcov-report/dist/test-utils/three/index.html +1 -1
  87. package/coverage/lcov-report/dist/test-utils/three/results.js.html +1 -1
  88. package/coverage/lcov-report/dist/test-utils/twelve/entities.js.html +1 -1
  89. package/coverage/lcov-report/dist/test-utils/twelve/index.html +1 -1
  90. package/coverage/lcov-report/dist/test-utils/twelve/models/index.html +1 -1
  91. package/coverage/lcov-report/dist/test-utils/twelve/models/member.js.html +1 -1
  92. package/coverage/lcov-report/dist/test-utils/twelve/models/prompt.js.html +2 -2
  93. package/coverage/lcov-report/dist/test-utils/two/index.html +1 -1
  94. package/coverage/lcov-report/dist/test-utils/two/results.js.html +1 -1
  95. package/coverage/lcov-report/index.html +103 -103
  96. package/coverage/lcov-report/src/core.ts.html +841 -415
  97. package/coverage/lcov-report/src/driver-integrations/index.html +20 -20
  98. package/coverage/lcov-report/src/driver-integrations/pgp.ts.html +63 -63
  99. package/coverage/lcov-report/src/index.html +28 -28
  100. package/coverage/lcov-report/src/index.ts.html +1 -1
  101. package/coverage/lcov-report/src/orm.ts.html +388 -298
  102. package/coverage/lcov-report/test-utils/blog/entities.ts.html +1 -1
  103. package/coverage/lcov-report/test-utils/blog/index.html +1 -1
  104. package/coverage/lcov-report/test-utils/blog/models/article.ts.html +15 -15
  105. package/coverage/lcov-report/test-utils/blog/models/article_tag.ts.html +2 -2
  106. package/coverage/lcov-report/test-utils/blog/models/index.html +1 -1
  107. package/coverage/lcov-report/test-utils/blog/models/person.ts.html +13 -13
  108. package/coverage/lcov-report/test-utils/blog/models/tag.ts.html +1 -1
  109. package/coverage/lcov-report/test-utils/five/entities.ts.html +1 -1
  110. package/coverage/lcov-report/test-utils/five/index.html +1 -1
  111. package/coverage/lcov-report/test-utils/five/models/index.html +1 -1
  112. package/coverage/lcov-report/test-utils/five/models/line-item.ts.html +4 -4
  113. package/coverage/lcov-report/test-utils/five/models/order.ts.html +3 -3
  114. package/coverage/lcov-report/test-utils/five/models/parcel-event.ts.html +6 -6
  115. package/coverage/lcov-report/test-utils/five/models/parcel-line-item.ts.html +7 -7
  116. package/coverage/lcov-report/test-utils/five/models/parcel.ts.html +2 -2
  117. package/coverage/lcov-report/test-utils/fourteen/entities.ts.html +1 -1
  118. package/coverage/lcov-report/test-utils/fourteen/index.html +1 -1
  119. package/coverage/lcov-report/test-utils/fourteen/models/customer.ts.html +1 -1
  120. package/coverage/lcov-report/test-utils/fourteen/models/index.html +1 -1
  121. package/coverage/lcov-report/test-utils/fourteen/models/person.ts.html +1 -1
  122. package/coverage/lcov-report/test-utils/nine/entities.ts.html +1 -1
  123. package/coverage/lcov-report/test-utils/nine/index.html +1 -1
  124. package/coverage/lcov-report/test-utils/nine/models/feature-switch.ts.html +8 -8
  125. package/coverage/lcov-report/test-utils/nine/models/index.html +1 -1
  126. package/coverage/lcov-report/test-utils/order/entities.ts.html +2 -2
  127. package/coverage/lcov-report/test-utils/order/index.html +1 -1
  128. package/coverage/lcov-report/test-utils/order/models/index.html +14 -14
  129. package/coverage/lcov-report/test-utils/order/models/line-item.ts.html +5 -5
  130. package/coverage/lcov-report/test-utils/order/models/order.ts.html +36 -36
  131. package/coverage/lcov-report/test-utils/order/models/product-variant.ts.html +13 -13
  132. package/coverage/lcov-report/test-utils/order/models/product.ts.html +13 -13
  133. package/coverage/lcov-report/test-utils/order/models/utm-source.ts.html +8 -8
  134. package/coverage/lcov-report/test-utils/order-more/entities.ts.html +1 -1
  135. package/coverage/lcov-report/test-utils/order-more/index.html +1 -1
  136. package/coverage/lcov-report/test-utils/order-more/models/actual-product-variant.ts.html +3 -3
  137. package/coverage/lcov-report/test-utils/order-more/models/color.ts.html +6 -6
  138. package/coverage/lcov-report/test-utils/order-more/models/customer.ts.html +3 -3
  139. package/coverage/lcov-report/test-utils/order-more/models/gender.ts.html +4 -4
  140. package/coverage/lcov-report/test-utils/order-more/models/index.html +23 -23
  141. package/coverage/lcov-report/test-utils/order-more/models/inventory-level.ts.html +11 -11
  142. package/coverage/lcov-report/test-utils/order-more/models/line-item.ts.html +15 -15
  143. package/coverage/lcov-report/test-utils/order-more/models/order.ts.html +45 -45
  144. package/coverage/lcov-report/test-utils/order-more/models/parcel-event.ts.html +6 -6
  145. package/coverage/lcov-report/test-utils/order-more/models/parcel-line-item.ts.html +7 -7
  146. package/coverage/lcov-report/test-utils/order-more/models/parcel.ts.html +2 -2
  147. package/coverage/lcov-report/test-utils/order-more/models/physical-address.ts.html +12 -12
  148. package/coverage/lcov-report/test-utils/order-more/models/product-variant-image.ts.html +7 -7
  149. package/coverage/lcov-report/test-utils/order-more/models/product-variant.ts.html +22 -22
  150. package/coverage/lcov-report/test-utils/order-more/models/product.ts.html +11 -11
  151. package/coverage/lcov-report/test-utils/order-more/models/refund.ts.html +11 -11
  152. package/coverage/lcov-report/test-utils/order-more/models/shipment-actual-product-variant.ts.html +9 -9
  153. package/coverage/lcov-report/test-utils/order-more/models/shipment.ts.html +4 -4
  154. package/coverage/lcov-report/test-utils/order-more/models/size.ts.html +4 -4
  155. package/coverage/lcov-report/test-utils/order-more/models/utm-medium.ts.html +15 -15
  156. package/coverage/lcov-report/test-utils/order-more/models/utm-source.ts.html +17 -17
  157. package/coverage/lcov-report/test-utils/six/entities.ts.html +1 -1
  158. package/coverage/lcov-report/test-utils/six/index.html +1 -1
  159. package/coverage/lcov-report/test-utils/six/models/customer.ts.html +3 -3
  160. package/coverage/lcov-report/test-utils/six/models/index.html +21 -21
  161. package/coverage/lcov-report/test-utils/six/models/line-item.ts.html +10 -10
  162. package/coverage/lcov-report/test-utils/six/models/order.ts.html +13 -13
  163. package/coverage/lcov-report/test-utils/six/models/parcel-line-item.ts.html +2 -2
  164. package/coverage/lcov-report/test-utils/six/models/parcel.ts.html +2 -2
  165. package/coverage/lcov-report/test-utils/thirteen/entities.ts.html +1 -1
  166. package/coverage/lcov-report/test-utils/thirteen/index.html +1 -1
  167. package/coverage/lcov-report/test-utils/thirteen/models/audience.ts.html +2 -2
  168. package/coverage/lcov-report/test-utils/thirteen/models/brand.ts.html +2 -2
  169. package/coverage/lcov-report/test-utils/thirteen/models/category.ts.html +1 -1
  170. package/coverage/lcov-report/test-utils/thirteen/models/index.html +14 -14
  171. package/coverage/lcov-report/test-utils/thirteen/models/member.ts.html +2 -2
  172. package/coverage/lcov-report/test-utils/thirteen/models/passion.ts.html +2 -2
  173. package/coverage/lcov-report/test-utils/thirteen/models/product.ts.html +10 -10
  174. package/coverage/lcov-report/test-utils/thirteen/models/recommendation-audience.ts.html +2 -2
  175. package/coverage/lcov-report/test-utils/thirteen/models/recommendation.ts.html +2 -2
  176. package/coverage/lcov-report/test-utils/three/index.html +1 -1
  177. package/coverage/lcov-report/test-utils/three/results.js.html +1 -1
  178. package/coverage/lcov-report/test-utils/twelve/entities.ts.html +1 -1
  179. package/coverage/lcov-report/test-utils/twelve/index.html +1 -1
  180. package/coverage/lcov-report/test-utils/twelve/models/index.html +1 -1
  181. package/coverage/lcov-report/test-utils/twelve/models/member.ts.html +1 -1
  182. package/coverage/lcov-report/test-utils/twelve/models/prompt.ts.html +2 -2
  183. package/coverage/lcov-report/test-utils/two/index.html +1 -1
  184. package/coverage/lcov-report/test-utils/two/results.js.html +1 -1
  185. package/coverage/lcov.info +2136 -1991
  186. package/dist/example/data-access/person.d.ts +1 -1
  187. package/dist/src/core.d.ts +13 -7
  188. package/dist/src/core.js +258 -189
  189. package/dist/src/core.spec.js +413 -0
  190. package/dist/src/driver-integrations/index.d.ts +5 -5
  191. package/dist/src/driver-integrations/pgp.spec.d.ts +1 -0
  192. package/dist/src/driver-integrations/pgp.spec.js +376 -0
  193. package/dist/src/orm.d.ts +9 -9
  194. package/dist/src/orm.js +137 -76
  195. package/dist/src/orm.spec.js +535 -85
  196. package/dist/test-utils/nine/models/feature-switch.d.ts +2 -2
  197. package/dist/test-utils/nine/models/feature-switch.ts +2 -2
  198. package/example/data-access/person.ts +1 -1
  199. package/package.json +9 -6
  200. package/scripts/bench-core.js +636 -0
  201. package/scripts/check-bench-scenarios.js +47 -0
  202. package/src/core.spec.ts +485 -2
  203. package/src/core.ts +369 -227
  204. package/src/driver-integrations/index.ts +5 -5
  205. package/src/driver-integrations/pgp.spec.ts +444 -0
  206. package/src/driver-integrations/pgp.ts +5 -5
  207. package/src/orm.spec.ts +592 -88
  208. package/src/orm.ts +173 -143
  209. package/test-utils/nine/models/feature-switch.ts +2 -2
@@ -20,31 +20,31 @@
20
20
  </h1>
21
21
  <div class='clearfix'>
22
22
  <div class='fl pad1y space-right2'>
23
- <span class="strong">64.44% </span>
23
+ <span class="strong">100% </span>
24
24
  <span class="quiet">Statements</span>
25
- <span class='fraction'>58/90</span>
25
+ <span class='fraction'>154/154</span>
26
26
  </div>
27
27
  <div class='fl pad1y space-right2'>
28
- <span class="strong">76.92% </span>
28
+ <span class="strong">88.89% </span>
29
29
  <span class="quiet">Branches</span>
30
- <span class='fraction'>10/13</span>
30
+ <span class='fraction'>24/27</span>
31
31
  </div>
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">71.05% </span>
33
+ <span class="strong">100% </span>
34
34
  <span class="quiet">Functions</span>
35
- <span class='fraction'>27/38</span>
35
+ <span class='fraction'>17/17</span>
36
36
  </div>
37
37
  <div class='fl pad1y space-right2'>
38
- <span class="strong">64.44% </span>
38
+ <span class="strong">100% </span>
39
39
  <span class="quiet">Lines</span>
40
- <span class='fraction'>58/90</span>
40
+ <span class='fraction'>148/148</span>
41
41
  </div>
42
42
  </div>
43
43
  <p class="quiet">
44
44
  Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
45
45
  </p>
46
46
  </div>
47
- <div class='status-line medium'></div>
47
+ <div class='status-line high'></div>
48
48
  <pre><table class="coverage">
49
49
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
50
50
  <a name='L2'></a><a href='#L2'>2</a>
@@ -383,7 +383,37 @@
383
383
  <a name='L335'></a><a href='#L335'>335</a>
384
384
  <a name='L336'></a><a href='#L336'>336</a>
385
385
  <a name='L337'></a><a href='#L337'>337</a>
386
- <a name='L338'></a><a href='#L338'>338</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
386
+ <a name='L338'></a><a href='#L338'>338</a>
387
+ <a name='L339'></a><a href='#L339'>339</a>
388
+ <a name='L340'></a><a href='#L340'>340</a>
389
+ <a name='L341'></a><a href='#L341'>341</a>
390
+ <a name='L342'></a><a href='#L342'>342</a>
391
+ <a name='L343'></a><a href='#L343'>343</a>
392
+ <a name='L344'></a><a href='#L344'>344</a>
393
+ <a name='L345'></a><a href='#L345'>345</a>
394
+ <a name='L346'></a><a href='#L346'>346</a>
395
+ <a name='L347'></a><a href='#L347'>347</a>
396
+ <a name='L348'></a><a href='#L348'>348</a>
397
+ <a name='L349'></a><a href='#L349'>349</a>
398
+ <a name='L350'></a><a href='#L350'>350</a>
399
+ <a name='L351'></a><a href='#L351'>351</a>
400
+ <a name='L352'></a><a href='#L352'>352</a>
401
+ <a name='L353'></a><a href='#L353'>353</a>
402
+ <a name='L354'></a><a href='#L354'>354</a>
403
+ <a name='L355'></a><a href='#L355'>355</a>
404
+ <a name='L356'></a><a href='#L356'>356</a>
405
+ <a name='L357'></a><a href='#L357'>357</a>
406
+ <a name='L358'></a><a href='#L358'>358</a>
407
+ <a name='L359'></a><a href='#L359'>359</a>
408
+ <a name='L360'></a><a href='#L360'>360</a>
409
+ <a name='L361'></a><a href='#L361'>361</a>
410
+ <a name='L362'></a><a href='#L362'>362</a>
411
+ <a name='L363'></a><a href='#L363'>363</a>
412
+ <a name='L364'></a><a href='#L364'>364</a>
413
+ <a name='L365'></a><a href='#L365'>365</a>
414
+ <a name='L366'></a><a href='#L366'>366</a>
415
+ <a name='L367'></a><a href='#L367'>367</a>
416
+ <a name='L368'></a><a href='#L368'>368</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
387
417
  <span class="cline-any cline-neutral">&nbsp;</span>
388
418
  <span class="cline-any cline-neutral">&nbsp;</span>
389
419
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -440,267 +470,297 @@
440
470
  <span class="cline-any cline-neutral">&nbsp;</span>
441
471
  <span class="cline-any cline-neutral">&nbsp;</span>
442
472
  <span class="cline-any cline-neutral">&nbsp;</span>
443
- <span class="cline-any cline-yes">1x</span>
444
- <span class="cline-any cline-neutral">&nbsp;</span>
445
- <span class="cline-any cline-neutral">&nbsp;</span>
446
- <span class="cline-any cline-neutral">&nbsp;</span>
447
- <span class="cline-any cline-neutral">&nbsp;</span>
448
- <span class="cline-any cline-yes">6x</span>
449
- <span class="cline-any cline-neutral">&nbsp;</span>
450
- <span class="cline-any cline-neutral">&nbsp;</span>
451
- <span class="cline-any cline-yes">6x</span>
452
- <span class="cline-any cline-yes">6x</span>
453
- <span class="cline-any cline-neutral">&nbsp;</span>
454
- <span class="cline-any cline-no">&nbsp;</span>
455
- <span class="cline-any cline-neutral">&nbsp;</span>
456
- <span class="cline-any cline-neutral">&nbsp;</span>
457
- <span class="cline-any cline-neutral">&nbsp;</span>
458
- <span class="cline-any cline-neutral">&nbsp;</span>
459
- <span class="cline-any cline-neutral">&nbsp;</span>
460
- <span class="cline-any cline-neutral">&nbsp;</span>
461
- <span class="cline-any cline-neutral">&nbsp;</span>
462
- <span class="cline-any cline-neutral">&nbsp;</span>
463
- <span class="cline-any cline-yes">6x</span>
464
473
  <span class="cline-any cline-neutral">&nbsp;</span>
465
474
  <span class="cline-any cline-neutral">&nbsp;</span>
466
475
  <span class="cline-any cline-yes">1x</span>
467
476
  <span class="cline-any cline-neutral">&nbsp;</span>
468
477
  <span class="cline-any cline-neutral">&nbsp;</span>
469
478
  <span class="cline-any cline-neutral">&nbsp;</span>
470
- <span class="cline-any cline-yes">24x</span>
471
- <span class="cline-any cline-neutral">&nbsp;</span>
472
- <span class="cline-any cline-neutral">&nbsp;</span>
473
479
  <span class="cline-any cline-neutral">&nbsp;</span>
480
+ <span class="cline-any cline-yes">41x</span>
474
481
  <span class="cline-any cline-neutral">&nbsp;</span>
475
482
  <span class="cline-any cline-neutral">&nbsp;</span>
476
- <span class="cline-any cline-yes">4x</span>
483
+ <span class="cline-any cline-yes">41x</span>
484
+ <span class="cline-any cline-yes">40x</span>
477
485
  <span class="cline-any cline-neutral">&nbsp;</span>
478
486
  <span class="cline-any cline-yes">1x</span>
479
487
  <span class="cline-any cline-neutral">&nbsp;</span>
480
488
  <span class="cline-any cline-neutral">&nbsp;</span>
481
- <span class="cline-any cline-yes">24x</span>
482
489
  <span class="cline-any cline-neutral">&nbsp;</span>
483
- <span class="cline-any cline-yes">24x</span>
484
- <span class="cline-any cline-yes">1x</span>
485
- <span class="cline-any cline-yes">4x</span>
486
490
  <span class="cline-any cline-neutral">&nbsp;</span>
487
- <span class="cline-any cline-yes">1x</span>
488
491
  <span class="cline-any cline-neutral">&nbsp;</span>
489
492
  <span class="cline-any cline-neutral">&nbsp;</span>
490
- <span class="cline-any cline-yes">6x</span>
491
493
  <span class="cline-any cline-neutral">&nbsp;</span>
492
494
  <span class="cline-any cline-neutral">&nbsp;</span>
493
495
  <span class="cline-any cline-neutral">&nbsp;</span>
494
- <span class="cline-any cline-yes">1x</span>
495
496
  <span class="cline-any cline-neutral">&nbsp;</span>
496
497
  <span class="cline-any cline-neutral">&nbsp;</span>
497
498
  <span class="cline-any cline-neutral">&nbsp;</span>
498
- <span class="cline-any cline-yes">24x</span>
499
499
  <span class="cline-any cline-neutral">&nbsp;</span>
500
500
  <span class="cline-any cline-neutral">&nbsp;</span>
501
501
  <span class="cline-any cline-neutral">&nbsp;</span>
502
+ <span class="cline-any cline-yes">40x</span>
503
+ <span class="cline-any cline-yes">40x</span>
504
+ <span class="cline-any cline-yes">23x</span>
505
+ <span class="cline-any cline-yes">23x</span>
506
+ <span class="cline-any cline-yes">23x</span>
507
+ <span class="cline-any cline-yes">23x</span>
508
+ <span class="cline-any cline-yes">23x</span>
509
+ <span class="cline-any cline-yes">23x</span>
510
+ <span class="cline-any cline-yes">23x</span>
511
+ <span class="cline-any cline-yes">552x</span>
512
+ <span class="cline-any cline-yes">552x</span>
513
+ <span class="cline-any cline-yes">552x</span>
514
+ <span class="cline-any cline-yes">552x</span>
515
+ <span class="cline-any cline-yes">552x</span>
502
516
  <span class="cline-any cline-neutral">&nbsp;</span>
517
+ <span class="cline-any cline-yes">23x</span>
503
518
  <span class="cline-any cline-neutral">&nbsp;</span>
504
519
  <span class="cline-any cline-neutral">&nbsp;</span>
505
- <span class="cline-any cline-yes">4x</span>
506
520
  <span class="cline-any cline-neutral">&nbsp;</span>
507
- <span class="cline-any cline-yes">1x</span>
508
- <span class="cline-any cline-yes">1x</span>
509
- <span class="cline-any cline-yes">1x</span>
510
- <span class="cline-any cline-neutral">&nbsp;</span>
511
- <span class="cline-any cline-neutral">&nbsp;</span>
512
- <span class="cline-any cline-yes">24x</span>
513
- <span class="cline-any cline-neutral">&nbsp;</span>
514
- <span class="cline-any cline-yes">24x</span>
515
- <span class="cline-any cline-yes">1x</span>
516
- <span class="cline-any cline-yes">1x</span>
517
- <span class="cline-any cline-neutral">&nbsp;</span>
518
- <span class="cline-any cline-neutral">&nbsp;</span>
519
- <span class="cline-any cline-yes">6x</span>
520
- <span class="cline-any cline-neutral">&nbsp;</span>
521
- <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-yes">1x</span>
523
521
  <span class="cline-any cline-neutral">&nbsp;</span>
524
522
  <span class="cline-any cline-neutral">&nbsp;</span>
525
- <span class="cline-any cline-yes">24x</span>
523
+ <span class="cline-any cline-yes">23x</span>
526
524
  <span class="cline-any cline-neutral">&nbsp;</span>
525
+ <span class="cline-any cline-yes">23x</span>
527
526
  <span class="cline-any cline-neutral">&nbsp;</span>
528
527
  <span class="cline-any cline-neutral">&nbsp;</span>
528
+ <span class="cline-any cline-yes">40x</span>
529
529
  <span class="cline-any cline-neutral">&nbsp;</span>
530
530
  <span class="cline-any cline-neutral">&nbsp;</span>
531
- <span class="cline-any cline-yes">24x</span>
532
- <span class="cline-any cline-yes">4x</span>
533
- <span class="cline-any cline-neutral">&nbsp;</span>
534
- <span class="cline-any cline-yes">1x</span>
531
+ <span class="cline-any cline-yes">5x</span>
532
+ <span class="cline-any cline-yes">5x</span>
533
+ <span class="cline-any cline-yes">5x</span>
534
+ <span class="cline-any cline-yes">5x</span>
535
+ <span class="cline-any cline-yes">5x</span>
536
+ <span class="cline-any cline-yes">5x</span>
537
+ <span class="cline-any cline-yes">5x</span>
538
+ <span class="cline-any cline-yes">5x</span>
539
+ <span class="cline-any cline-yes">120x</span>
540
+ <span class="cline-any cline-yes">120x</span>
541
+ <span class="cline-any cline-yes">12x</span>
542
+ <span class="cline-any cline-yes">7x</span>
535
543
  <span class="cline-any cline-neutral">&nbsp;</span>
544
+ <span class="cline-any cline-yes">12x</span>
545
+ <span class="cline-any cline-yes">12x</span>
546
+ <span class="cline-any cline-yes">12x</span>
547
+ <span class="cline-any cline-yes">12x</span>
536
548
  <span class="cline-any cline-neutral">&nbsp;</span>
537
- <span class="cline-any cline-yes">24x</span>
538
549
  <span class="cline-any cline-neutral">&nbsp;</span>
550
+ <span class="cline-any cline-yes">5x</span>
539
551
  <span class="cline-any cline-neutral">&nbsp;</span>
540
552
  <span class="cline-any cline-neutral">&nbsp;</span>
541
- <span class="cline-any cline-yes">24x</span>
542
- <span class="cline-any cline-yes">1x</span>
543
- <span class="cline-any cline-neutral">&nbsp;</span>
553
+ <span class="cline-any cline-yes">40x</span>
544
554
  <span class="cline-any cline-neutral">&nbsp;</span>
545
555
  <span class="cline-any cline-neutral">&nbsp;</span>
546
556
  <span class="cline-any cline-neutral">&nbsp;</span>
547
557
  <span class="cline-any cline-yes">6x</span>
558
+ <span class="cline-any cline-yes">6x</span>
559
+ <span class="cline-any cline-yes">6x</span>
560
+ <span class="cline-any cline-yes">6x</span>
561
+ <span class="cline-any cline-yes">6x</span>
562
+ <span class="cline-any cline-yes">6x</span>
563
+ <span class="cline-any cline-yes">6x</span>
564
+ <span class="cline-any cline-yes">144x</span>
565
+ <span class="cline-any cline-yes">144x</span>
566
+ <span class="cline-any cline-yes">13x</span>
567
+ <span class="cline-any cline-yes">7x</span>
548
568
  <span class="cline-any cline-neutral">&nbsp;</span>
569
+ <span class="cline-any cline-yes">13x</span>
570
+ <span class="cline-any cline-yes">13x</span>
571
+ <span class="cline-any cline-yes">13x</span>
549
572
  <span class="cline-any cline-neutral">&nbsp;</span>
550
- <span class="cline-any cline-yes">1x</span>
551
- <span class="cline-any cline-neutral">&nbsp;</span>
552
- <span class="cline-any cline-neutral">&nbsp;</span>
553
- <span class="cline-any cline-yes">24x</span>
554
573
  <span class="cline-any cline-neutral">&nbsp;</span>
574
+ <span class="cline-any cline-yes">6x</span>
575
+ <span class="cline-any cline-yes">6x</span>
576
+ <span class="cline-any cline-yes">6x</span>
555
577
  <span class="cline-any cline-neutral">&nbsp;</span>
556
578
  <span class="cline-any cline-neutral">&nbsp;</span>
579
+ <span class="cline-any cline-yes">40x</span>
557
580
  <span class="cline-any cline-neutral">&nbsp;</span>
558
581
  <span class="cline-any cline-neutral">&nbsp;</span>
559
- <span class="cline-any cline-yes">24x</span>
582
+ <span class="cline-any cline-yes">10x</span>
583
+ <span class="cline-any cline-yes">10x</span>
584
+ <span class="cline-any cline-yes">10x</span>
585
+ <span class="cline-any cline-yes">10x</span>
586
+ <span class="cline-any cline-yes">10x</span>
587
+ <span class="cline-any cline-yes">10x</span>
588
+ <span class="cline-any cline-yes">10x</span>
589
+ <span class="cline-any cline-yes">240x</span>
590
+ <span class="cline-any cline-yes">240x</span>
591
+ <span class="cline-any cline-yes">14x</span>
560
592
  <span class="cline-any cline-yes">4x</span>
561
593
  <span class="cline-any cline-neutral">&nbsp;</span>
562
- <span class="cline-any cline-yes">1x</span>
594
+ <span class="cline-any cline-yes">14x</span>
595
+ <span class="cline-any cline-yes">14x</span>
596
+ <span class="cline-any cline-yes">14x</span>
563
597
  <span class="cline-any cline-neutral">&nbsp;</span>
564
598
  <span class="cline-any cline-neutral">&nbsp;</span>
565
- <span class="cline-any cline-yes">24x</span>
599
+ <span class="cline-any cline-yes">10x</span>
566
600
  <span class="cline-any cline-neutral">&nbsp;</span>
567
601
  <span class="cline-any cline-neutral">&nbsp;</span>
568
602
  <span class="cline-any cline-neutral">&nbsp;</span>
569
- <span class="cline-any cline-yes">24x</span>
570
603
  <span class="cline-any cline-neutral">&nbsp;</span>
604
+ <span class="cline-any cline-yes">40x</span>
571
605
  <span class="cline-any cline-neutral">&nbsp;</span>
572
- <span class="cline-any cline-yes">4x</span>
573
606
  <span class="cline-any cline-neutral">&nbsp;</span>
607
+ <span class="cline-any cline-yes">2x</span>
608
+ <span class="cline-any cline-yes">2x</span>
609
+ <span class="cline-any cline-yes">2x</span>
610
+ <span class="cline-any cline-yes">2x</span>
611
+ <span class="cline-any cline-yes">2x</span>
612
+ <span class="cline-any cline-yes">2x</span>
613
+ <span class="cline-any cline-yes">2x</span>
614
+ <span class="cline-any cline-yes">48x</span>
615
+ <span class="cline-any cline-yes">48x</span>
616
+ <span class="cline-any cline-yes">5x</span>
617
+ <span class="cline-any cline-yes">3x</span>
574
618
  <span class="cline-any cline-neutral">&nbsp;</span>
575
- <span class="cline-any cline-yes">1x</span>
619
+ <span class="cline-any cline-yes">5x</span>
620
+ <span class="cline-any cline-yes">5x</span>
621
+ <span class="cline-any cline-yes">5x</span>
576
622
  <span class="cline-any cline-neutral">&nbsp;</span>
577
623
  <span class="cline-any cline-neutral">&nbsp;</span>
578
- <span class="cline-any cline-yes">6x</span>
579
- <span class="cline-any cline-no">&nbsp;</span>
580
- <span class="cline-any cline-no">&nbsp;</span>
624
+ <span class="cline-any cline-yes">2x</span>
581
625
  <span class="cline-any cline-neutral">&nbsp;</span>
582
- <span class="cline-any cline-no">&nbsp;</span>
583
626
  <span class="cline-any cline-neutral">&nbsp;</span>
627
+ <span class="cline-any cline-yes">40x</span>
628
+ <span class="cline-any cline-yes">3x</span>
629
+ <span class="cline-any cline-yes">3x</span>
630
+ <span class="cline-any cline-yes">3x</span>
631
+ <span class="cline-any cline-yes">3x</span>
632
+ <span class="cline-any cline-yes">6x</span>
633
+ <span class="cline-any cline-yes">6x</span>
634
+ <span class="cline-any cline-yes">6x</span>
584
635
  <span class="cline-any cline-neutral">&nbsp;</span>
585
636
  <span class="cline-any cline-neutral">&nbsp;</span>
586
- <span class="cline-any cline-no">&nbsp;</span>
637
+ <span class="cline-any cline-yes">3x</span>
587
638
  <span class="cline-any cline-neutral">&nbsp;</span>
588
- <span class="cline-any cline-no">&nbsp;</span>
589
- <span class="cline-any cline-no">&nbsp;</span>
590
639
  <span class="cline-any cline-neutral">&nbsp;</span>
640
+ <span class="cline-any cline-yes">40x</span>
641
+ <span class="cline-any cline-yes">5x</span>
642
+ <span class="cline-any cline-yes">5x</span>
643
+ <span class="cline-any cline-yes">5x</span>
591
644
  <span class="cline-any cline-neutral">&nbsp;</span>
592
645
  <span class="cline-any cline-neutral">&nbsp;</span>
593
- <span class="cline-any cline-no">&nbsp;</span>
594
646
  <span class="cline-any cline-neutral">&nbsp;</span>
595
647
  <span class="cline-any cline-neutral">&nbsp;</span>
596
- <span class="cline-any cline-yes">6x</span>
597
- <span class="cline-any cline-yes">4x</span>
648
+ <span class="cline-any cline-yes">40x</span>
598
649
  <span class="cline-any cline-neutral">&nbsp;</span>
599
650
  <span class="cline-any cline-neutral">&nbsp;</span>
600
651
  <span class="cline-any cline-neutral">&nbsp;</span>
652
+ <span class="cline-any cline-yes">6x</span>
653
+ <span class="cline-any cline-yes">6x</span>
654
+ <span class="cline-any cline-yes">6x</span>
601
655
  <span class="cline-any cline-neutral">&nbsp;</span>
602
656
  <span class="cline-any cline-neutral">&nbsp;</span>
603
657
  <span class="cline-any cline-neutral">&nbsp;</span>
604
- <span class="cline-any cline-yes">6x</span>
605
658
  <span class="cline-any cline-neutral">&nbsp;</span>
606
659
  <span class="cline-any cline-neutral">&nbsp;</span>
607
660
  <span class="cline-any cline-neutral">&nbsp;</span>
608
- <span class="cline-any cline-yes">3x</span>
609
661
  <span class="cline-any cline-neutral">&nbsp;</span>
662
+ <span class="cline-any cline-yes">40x</span>
663
+ <span class="cline-any cline-yes">2x</span>
664
+ <span class="cline-any cline-yes">2x</span>
665
+ <span class="cline-any cline-yes">2x</span>
610
666
  <span class="cline-any cline-neutral">&nbsp;</span>
611
667
  <span class="cline-any cline-neutral">&nbsp;</span>
612
668
  <span class="cline-any cline-neutral">&nbsp;</span>
613
669
  <span class="cline-any cline-neutral">&nbsp;</span>
670
+ <span class="cline-any cline-yes">2x</span>
614
671
  <span class="cline-any cline-neutral">&nbsp;</span>
615
672
  <span class="cline-any cline-neutral">&nbsp;</span>
616
673
  <span class="cline-any cline-neutral">&nbsp;</span>
674
+ <span class="cline-any cline-yes">40x</span>
617
675
  <span class="cline-any cline-neutral">&nbsp;</span>
618
- <span class="cline-any cline-yes">6x</span>
619
- <span class="cline-any cline-no">&nbsp;</span>
620
- <span class="cline-any cline-no">&nbsp;</span>
621
676
  <span class="cline-any cline-neutral">&nbsp;</span>
622
677
  <span class="cline-any cline-neutral">&nbsp;</span>
678
+ <span class="cline-any cline-yes">2x</span>
679
+ <span class="cline-any cline-yes">2x</span>
680
+ <span class="cline-any cline-yes">2x</span>
623
681
  <span class="cline-any cline-neutral">&nbsp;</span>
624
682
  <span class="cline-any cline-neutral">&nbsp;</span>
625
- <span class="cline-any cline-no">&nbsp;</span>
626
683
  <span class="cline-any cline-neutral">&nbsp;</span>
627
684
  <span class="cline-any cline-neutral">&nbsp;</span>
628
685
  <span class="cline-any cline-neutral">&nbsp;</span>
629
- <span class="cline-any cline-yes">6x</span>
630
- <span class="cline-any cline-no">&nbsp;</span>
631
- <span class="cline-any cline-no">&nbsp;</span>
632
686
  <span class="cline-any cline-neutral">&nbsp;</span>
633
687
  <span class="cline-any cline-neutral">&nbsp;</span>
634
688
  <span class="cline-any cline-neutral">&nbsp;</span>
689
+ <span class="cline-any cline-yes">2x</span>
635
690
  <span class="cline-any cline-neutral">&nbsp;</span>
636
691
  <span class="cline-any cline-neutral">&nbsp;</span>
637
692
  <span class="cline-any cline-neutral">&nbsp;</span>
693
+ <span class="cline-any cline-yes">40x</span>
694
+ <span class="cline-any cline-yes">1x</span>
695
+ <span class="cline-any cline-yes">1x</span>
696
+ <span class="cline-any cline-yes">1x</span>
638
697
  <span class="cline-any cline-neutral">&nbsp;</span>
639
- <span class="cline-any cline-no">&nbsp;</span>
640
698
  <span class="cline-any cline-neutral">&nbsp;</span>
641
699
  <span class="cline-any cline-neutral">&nbsp;</span>
700
+ <span class="cline-any cline-yes">1x</span>
642
701
  <span class="cline-any cline-neutral">&nbsp;</span>
643
- <span class="cline-any cline-yes">6x</span>
644
- <span class="cline-any cline-no">&nbsp;</span>
645
- <span class="cline-any cline-no">&nbsp;</span>
646
702
  <span class="cline-any cline-neutral">&nbsp;</span>
703
+ <span class="cline-any cline-yes">40x</span>
704
+ <span class="cline-any cline-yes">1x</span>
705
+ <span class="cline-any cline-yes">1x</span>
706
+ <span class="cline-any cline-yes">1x</span>
647
707
  <span class="cline-any cline-neutral">&nbsp;</span>
648
708
  <span class="cline-any cline-neutral">&nbsp;</span>
649
- <span class="cline-any cline-no">&nbsp;</span>
650
709
  <span class="cline-any cline-neutral">&nbsp;</span>
710
+ <span class="cline-any cline-yes">1x</span>
651
711
  <span class="cline-any cline-neutral">&nbsp;</span>
652
- <span class="cline-any cline-yes">6x</span>
653
- <span class="cline-any cline-no">&nbsp;</span>
654
- <span class="cline-any cline-no">&nbsp;</span>
655
712
  <span class="cline-any cline-neutral">&nbsp;</span>
713
+ <span class="cline-any cline-yes">40x</span>
714
+ <span class="cline-any cline-yes">1x</span>
715
+ <span class="cline-any cline-yes">1x</span>
716
+ <span class="cline-any cline-yes">1x</span>
656
717
  <span class="cline-any cline-neutral">&nbsp;</span>
657
718
  <span class="cline-any cline-neutral">&nbsp;</span>
658
- <span class="cline-any cline-no">&nbsp;</span>
659
719
  <span class="cline-any cline-neutral">&nbsp;</span>
660
720
  <span class="cline-any cline-neutral">&nbsp;</span>
661
- <span class="cline-any cline-yes">6x</span>
662
- <span class="cline-any cline-no">&nbsp;</span>
663
- <span class="cline-any cline-no">&nbsp;</span>
721
+ <span class="cline-any cline-yes">1x</span>
664
722
  <span class="cline-any cline-neutral">&nbsp;</span>
665
723
  <span class="cline-any cline-neutral">&nbsp;</span>
724
+ <span class="cline-any cline-yes">40x</span>
666
725
  <span class="cline-any cline-neutral">&nbsp;</span>
667
726
  <span class="cline-any cline-neutral">&nbsp;</span>
668
- <span class="cline-any cline-no">&nbsp;</span>
727
+ <span class="cline-any cline-yes">2x</span>
728
+ <span class="cline-any cline-yes">2x</span>
729
+ <span class="cline-any cline-yes">2x</span>
669
730
  <span class="cline-any cline-neutral">&nbsp;</span>
670
731
  <span class="cline-any cline-neutral">&nbsp;</span>
671
- <span class="cline-any cline-yes">6x</span>
672
- <span class="cline-any cline-no">&nbsp;</span>
673
- <span class="cline-any cline-no">&nbsp;</span>
674
732
  <span class="cline-any cline-neutral">&nbsp;</span>
675
733
  <span class="cline-any cline-neutral">&nbsp;</span>
734
+ <span class="cline-any cline-yes">2x</span>
676
735
  <span class="cline-any cline-neutral">&nbsp;</span>
677
736
  <span class="cline-any cline-neutral">&nbsp;</span>
678
- <span class="cline-any cline-no">&nbsp;</span>
737
+ <span class="cline-any cline-yes">40x</span>
679
738
  <span class="cline-any cline-neutral">&nbsp;</span>
680
739
  <span class="cline-any cline-neutral">&nbsp;</span>
681
- <span class="cline-any cline-yes">6x</span>
740
+ <span class="cline-any cline-yes">2x</span>
741
+ <span class="cline-any cline-yes">2x</span>
742
+ <span class="cline-any cline-yes">2x</span>
682
743
  <span class="cline-any cline-neutral">&nbsp;</span>
683
744
  <span class="cline-any cline-neutral">&nbsp;</span>
684
- <span class="cline-any cline-no">&nbsp;</span>
685
- <span class="cline-any cline-no">&nbsp;</span>
686
745
  <span class="cline-any cline-neutral">&nbsp;</span>
687
746
  <span class="cline-any cline-neutral">&nbsp;</span>
747
+ <span class="cline-any cline-yes">2x</span>
688
748
  <span class="cline-any cline-neutral">&nbsp;</span>
689
749
  <span class="cline-any cline-neutral">&nbsp;</span>
690
- <span class="cline-any cline-no">&nbsp;</span>
750
+ <span class="cline-any cline-yes">40x</span>
691
751
  <span class="cline-any cline-neutral">&nbsp;</span>
692
752
  <span class="cline-any cline-neutral">&nbsp;</span>
693
- <span class="cline-any cline-yes">6x</span>
694
- <span class="cline-any cline-no">&nbsp;</span>
695
- <span class="cline-any cline-no">&nbsp;</span>
753
+ <span class="cline-any cline-yes">2x</span>
754
+ <span class="cline-any cline-yes">2x</span>
755
+ <span class="cline-any cline-yes">2x</span>
696
756
  <span class="cline-any cline-neutral">&nbsp;</span>
697
757
  <span class="cline-any cline-neutral">&nbsp;</span>
698
758
  <span class="cline-any cline-neutral">&nbsp;</span>
699
759
  <span class="cline-any cline-neutral">&nbsp;</span>
700
- <span class="cline-any cline-no">&nbsp;</span>
760
+ <span class="cline-any cline-yes">2x</span>
701
761
  <span class="cline-any cline-neutral">&nbsp;</span>
702
762
  <span class="cline-any cline-neutral">&nbsp;</span>
703
- <span class="cline-any cline-yes">6x</span>
763
+ <span class="cline-any cline-yes">40x</span>
704
764
  <span class="cline-any cline-neutral">&nbsp;</span>
705
765
  <span class="cline-any cline-neutral">&nbsp;</span>
706
766
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -742,14 +802,16 @@ export interface IPureORM extends ICoreIntegratedDriver {
742
802
  * if you want to write these in your data access layer yourself.
743
803
  */
744
804
  &nbsp;
745
- getMatching: &lt;T extends IModel&gt;(model: T) =&gt; T;
746
- getOneOrNoneMatching: &lt;T extends IModel&gt;(model: T) =&gt; T | void;
747
- getAnyMatching: &lt;T extends ICollection&lt;IModel&gt;&gt;(model: IModel) =&gt; T | void;
748
- getAllMatching: &lt;T extends ICollection&lt;IModel&gt;&gt;(model: IModel) =&gt; T;
749
- create: &lt;T extends IModel&gt;(model: T) =&gt; T;
750
- update: &lt;T extends IModel&gt;(model: T, options: { on: string }) =&gt; T;
751
- delete: &lt;T extends IModel&gt;(model: T) =&gt; void;
752
- deleteMatching: &lt;T extends IModel&gt;(model: T) =&gt; void;
805
+ getMatching: &lt;T extends IModel&gt;(model: T) =&gt; Promise&lt;T&gt;;
806
+ getOneOrNoneMatching: &lt;T extends IModel&gt;(model: T) =&gt; Promise&lt;T | void&gt;;
807
+ getAnyMatching: &lt;T extends ICollection&lt;IModel&gt;&gt;(
808
+ model: IModel
809
+ ) =&gt; Promise&lt;T | void&gt;;
810
+ getAllMatching: &lt;T extends ICollection&lt;IModel&gt;&gt;(model: IModel) =&gt; Promise&lt;T&gt;;
811
+ create: &lt;T extends IModel&gt;(model: T) =&gt; Promise&lt;T&gt;;
812
+ update: &lt;T extends IModel&gt;(model: T, options?: { on: string }) =&gt; Promise&lt;T&gt;;
813
+ delete: &lt;T extends IModel&gt;(model: T) =&gt; Promise&lt;void&gt;;
814
+ deleteMatching: &lt;T extends IModel&gt;(model: T) =&gt; Promise&lt;void&gt;;
753
815
  &nbsp;
754
816
  /* ------------------------------------------------------------------------*/
755
817
  /* Helper Utility Functions -----------------------------------------------*/
@@ -785,10 +847,10 @@ export const create = ({
785
847
  const core = createCore({ entities: externalEntities });
786
848
  &nbsp;
787
849
  let orm: ICoreIntegratedDriver;
788
- <span class="missing-if-branch" title="else path not taken" >E</span>if (db.$config.pgp) {
850
+ if (db.$config.pgp) {
789
851
  orm = createForPGP({ core, db, logError });
790
852
  } else {
791
- <span class="cstat-no" title="statement not covered" > throw new Error(</span>
853
+ throw new Error(
792
854
  `You're database driver is not yet supported. You can make a PR to add it, or use the \`createCore\` export which doesn't try to abstract over the database driver, and instead you pass the results of the database driver queries to it.`
793
855
  );
794
856
  }
@@ -796,31 +858,62 @@ export const create = ({
796
858
  /* ------------------------------------------------------------------------*/
797
859
  /* Helper Utilities for CRUD functions ------------------------------------*/
798
860
  /* ------------------------------------------------------------------------*/
861
+ &nbsp;
862
+ interface IOrmHelperPlan {
863
+ quotedColumns: Array&lt;string&gt;;
864
+ updateClausePrefixes: Array&lt;string&gt;;
865
+ wherePositionalPrefixes: Array&lt;string&gt;;
866
+ whereNamedPrefixes: Array&lt;string&gt;;
867
+ }
868
+ &nbsp;
869
+ const helperPlanByEntity = new Map&lt;any, IOrmHelperPlan&gt;();
870
+ const getHelperPlan = (entity: any): IOrmHelperPlan =&gt; {
871
+ let plan = helperPlanByEntity.get(entity);
872
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (!plan) {
873
+ const quotedColumns = new Array(entity.columnNames.length);
874
+ const updateClausePrefixes = new Array(entity.columnNames.length);
875
+ const wherePositionalPrefixes = new Array(entity.columnNames.length);
876
+ const whereNamedPrefixes = new Array(entity.columnNames.length);
877
+ for (let i = 0; i &lt; entity.columnNames.length; i++) {
878
+ const column = entity.columnNames[i];
879
+ quotedColumns[i] = `"${column}"`;
880
+ updateClausePrefixes[i] = `"${column}" = $`;
881
+ wherePositionalPrefixes[i] = `"${entity.tableName}"."${column}" = $`;
882
+ whereNamedPrefixes[i] = `"${entity.tableName}"."${column}" = $(`;
883
+ }
884
+ plan = {
885
+ quotedColumns,
886
+ updateClausePrefixes,
887
+ wherePositionalPrefixes,
888
+ whereNamedPrefixes
889
+ };
890
+ helperPlanByEntity.set(entity, plan);
891
+ }
892
+ return plan;
893
+ };
799
894
  &nbsp;
800
895
  const getSqlInsertParts = (
801
896
  model: IModel
802
897
  ): { columns: string; values: Array&lt;string&gt;; valuesVar: Array&lt;string&gt; } =&gt; {
803
- const columns = orm
804
- .getEntityByModel(model)
805
- .columnNames.filter(
806
- (column: string, index: number) =&gt;
807
- model[
808
- orm.getEntityByModel(model).propertyNames[
809
- index
810
- ] as keyof typeof model
811
- ] !== void 0
812
- )
813
- .map((col: string) =&gt; `"${col}"`)
814
- .join(', ');
815
- const values = orm
816
- .getEntityByModel(model)
817
- .propertyNames.map(
818
- (property: string) =&gt; model[property as keyof typeof model]
819
- )
820
- .filter((value: any) =&gt; value !== void 0);
821
- const valuesVar = values.map(
822
- (value: any, index: number) =&gt; `$${index + 1}`
823
- );
898
+ const entity = orm.getEntityByModel(model);
899
+ const { columnNames, propertyNames } = entity;
900
+ const helperPlan = getHelperPlan(entity);
901
+ let columns = '';
902
+ const values: Array&lt;any&gt; = [];
903
+ const valuesVar: Array&lt;string&gt; = [];
904
+ let paramIndex = 1;
905
+ for (let i = 0; i &lt; columnNames.length; i++) {
906
+ const val = model[propertyNames[i] as keyof typeof model];
907
+ if (val !== void 0) {
908
+ if (columns) {
909
+ columns += ', ';
910
+ }
911
+ columns += helperPlan.quotedColumns[i];
912
+ values.push(val);
913
+ valuesVar.push(`$${paramIndex}`);
914
+ paramIndex++;
915
+ }
916
+ }
824
917
  return { columns, values, valuesVar };
825
918
  };
826
919
  &nbsp;
@@ -828,54 +921,48 @@ export const create = ({
828
921
  model: IModel,
829
922
  on = 'id'
830
923
  ): { clause: string; idVar: string; values: Array&lt;string&gt; } =&gt; {
831
- const clauseArray = orm
832
- .getEntityByModel(model)
833
- .columnNames.filter(
834
- (sqlColumn: string, index: number) =&gt;
835
- model[
836
- orm.getEntityByModel(model).propertyNames[
837
- index
838
- ] as keyof typeof model
839
- ] !== void 0
840
- )
841
- .map(
842
- (sqlColumn: string, index: number) =&gt; `"${sqlColumn}" = $${index + 1}`
843
- );
844
- const clause = clauseArray.join(', ');
845
- const idVar = `$${clauseArray.length + 1}`;
846
- const _values = orm
847
- .getEntityByModel(model)
848
- .propertyNames.map(
849
- (property: string) =&gt; model[property as keyof typeof model]
850
- )
851
- .filter((value: any) =&gt; value !== void 0);
852
- const values = [..._values, model[on as keyof typeof model]];
924
+ const entity = orm.getEntityByModel(model);
925
+ const { columnNames, propertyNames } = entity;
926
+ const helperPlan = getHelperPlan(entity);
927
+ let clause = '';
928
+ const values: Array&lt;any&gt; = [];
929
+ let paramIndex = 1;
930
+ for (let i = 0; i &lt; columnNames.length; i++) {
931
+ const val = model[propertyNames[i] as keyof typeof model];
932
+ if (val !== void 0) {
933
+ if (clause) {
934
+ clause += ', ';
935
+ }
936
+ clause += helperPlan.updateClausePrefixes[i] + paramIndex;
937
+ values.push(val);
938
+ paramIndex++;
939
+ }
940
+ }
941
+ const idVar = `$${paramIndex}`;
942
+ values.push(model[on as keyof typeof model]);
853
943
  return { clause, idVar, values };
854
944
  };
855
945
  &nbsp;
856
946
  const getMatchingParts = (
857
947
  model: IModel
858
948
  ): { whereClause: string; values: Array&lt;string&gt; } =&gt; {
859
- const whereClause = orm
860
- .getEntityByModel(model)
861
- .propertyNames.map((property: string, index: number) =&gt;
862
- model[property as keyof typeof model] != null
863
- ? `"${orm.getEntityByModel(model).tableName}"."${
864
- orm.getEntityByModel(model).columnNames[index]
865
- }"`
866
- : null
867
- )
868
- .filter((x: string | null) =&gt; x != null)
869
- .map((x: string | null, i: number) =&gt; `${x} = $${i + 1}`)
870
- .join(' AND ');
871
- const values = orm
872
- .getEntityByModel(model)
873
- .propertyNames.map((property: string) =&gt;
874
- model[property as keyof typeof model] != null
875
- ? model[property as keyof typeof model]
876
- : null
877
- )
878
- .filter((x: any) =&gt; x != null);
949
+ const entity = orm.getEntityByModel(model);
950
+ const { propertyNames, columnNames } = entity;
951
+ const helperPlan = getHelperPlan(entity);
952
+ const values: Array&lt;any&gt; = [];
953
+ let paramIndex = 1;
954
+ let whereClause = '';
955
+ for (let i = 0; i &lt; propertyNames.length; i++) {
956
+ const val = model[propertyNames[i] as keyof typeof model];
957
+ if (val != null) {
958
+ if (whereClause) {
959
+ whereClause += ' AND ';
960
+ }
961
+ whereClause += helperPlan.wherePositionalPrefixes[i] + paramIndex;
962
+ values.push(val);
963
+ paramIndex++;
964
+ }
965
+ }
879
966
  return { whereClause, values };
880
967
  };
881
968
  &nbsp;
@@ -884,67 +971,54 @@ export const create = ({
884
971
  const getMatchingPartsObject = (
885
972
  model: IModel
886
973
  ): { whereClause: string; values: Array&lt;string&gt; } =&gt; {
887
- const whereClause = orm
888
- .getEntityByModel(model)
889
- .propertyNames.map((property: string, index: number) =&gt;
890
- model[property as keyof typeof model] != null
891
- ? `"${orm.getEntityByModel(model).tableName}"."${
892
- orm.getEntityByModel(model).columnNames[index]
893
- }"`
894
- : null
895
- )
896
- .filter((x: string | null) =&gt; x != null)
897
- .map((x: string | null, i: number) =&gt; `${x} = $(${i + 1})`)
898
- .join(' AND ');
899
- const values = orm
900
- .getEntityByModel(model)
901
- .propertyNames.map((property: string) =&gt;
902
- model[property as keyof typeof model] != null
903
- ? model[property as keyof typeof model]
904
- : null
905
- )
906
- .filter((x: any) =&gt; x != null)
907
- .reduce(
908
- (accum: any, val: any, index: number) =&gt;
909
- Object.assign({}, accum, { [index + 1]: val }),
910
- {}
911
- );
974
+ const entity = orm.getEntityByModel(model);
975
+ const { propertyNames, columnNames } = entity;
976
+ const helperPlan = getHelperPlan(entity);
977
+ const values: any = {};
978
+ let paramIndex = 1;
979
+ let whereClause = '';
980
+ for (let i = 0; i &lt; propertyNames.length; i++) {
981
+ const val = model[propertyNames[i] as keyof typeof model];
982
+ if (val != null) {
983
+ if (whereClause) {
984
+ whereClause += ' AND ';
985
+ }
986
+ whereClause += helperPlan.whereNamedPrefixes[i] + paramIndex + ')';
987
+ values[paramIndex] = val;
988
+ paramIndex++;
989
+ }
990
+ }
912
991
  return { whereClause, values };
913
992
  };
914
993
  &nbsp;
915
- const getNewWith = <span class="fstat-no" title="function not covered" >(m</span>odel: IModel, sqlColumns: any, values: any): IModel =&gt; {
916
- const Constructor = <span class="cstat-no" title="statement not covered" >model.constructor as any;</span>
917
- const modelKeys = <span class="cstat-no" title="statement not covered" >sqlColumns.map(</span>
918
- <span class="fstat-no" title="function not covered" > (k</span>ey: string) =&gt;
919
- <span class="cstat-no" title="statement not covered" > orm.getEntityByModel(model).propertyNames[</span>
920
- orm.getEntityByModel(model).columnNames.indexOf(key)
921
- ]
922
- );
923
- const modelData = <span class="cstat-no" title="statement not covered" >modelKeys.reduce(</span>
924
- <span class="fstat-no" title="function not covered" > (d</span>ata: any, key: string, index: number) =&gt; {
925
- <span class="cstat-no" title="statement not covered" > data[key] = values[index];</span>
926
- <span class="cstat-no" title="statement not covered" > return data;</span>
927
- },
928
- {}
929
- );
930
- <span class="cstat-no" title="statement not covered" > return new Constructor(modelData);</span>
994
+ const getNewWith = (model: IModel, sqlColumns: any, values: any): IModel =&gt; {
995
+ const Constructor = model.constructor as any;
996
+ const entity = orm.getEntityByModel(model);
997
+ const modelData: any = {};
998
+ for (let i = 0; i &lt; sqlColumns.length; i++) {
999
+ const propertyName = entity.columnToPropertyMap.get(sqlColumns[i]);
1000
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (propertyName) {
1001
+ modelData[propertyName] = values[i];
1002
+ }
1003
+ }
1004
+ return new Constructor(modelData);
931
1005
  };
932
1006
  &nbsp;
933
1007
  const getValueBySqlColumn = (model: IModel, sqlColumn: string): string =&gt; {
934
- return model[
935
- orm.getEntityByModel(model).propertyNames[
936
- orm.getEntityByModel(model).columnNames.indexOf(sqlColumn)
937
- ] as keyof typeof model
938
- ];
1008
+ const entity = orm.getEntityByModel(model);
1009
+ const propertyName = entity.columnToPropertyMap.get(sqlColumn);
1010
+ return propertyName
1011
+ ? model[propertyName as keyof typeof model]
1012
+ : (<span class="branch-1 cbranch-no" title="branch not covered" >undefined as any)</span>;
939
1013
  };
940
1014
  &nbsp;
941
1015
  const getSqlColumnForPropertyName = (
942
1016
  model: IModel,
943
1017
  propertyName: string
944
1018
  ): string =&gt; {
945
- return orm.getEntityByModel(model).columnNames[
946
- orm.getEntityByModel(model).propertyNames.indexOf(propertyName)
947
- ];
1019
+ const entity = orm.getEntityByModel(model);
1020
+ const column = entity.propertyToColumnMap.get(propertyName);
1021
+ return column as string;
948
1022
  };
949
1023
  &nbsp;
950
1024
  /* ------------------------------------------------------------------------*/
@@ -952,89 +1026,105 @@ export const create = ({
952
1026
  /* ------------------------------------------------------------------------*/
953
1027
  &nbsp;
954
1028
  // Standard create
955
- const create = <span class="fstat-no" title="function not covered" >&lt;T</span> extends IModel&gt;(model: T): T =&gt; {
956
- const { columns, values, valuesVar } = <span class="cstat-no" title="statement not covered" >getSqlInsertParts(model);</span>
957
- const query = <span class="cstat-no" title="statement not covered" >`</span>
958
- INSERT INTO "${orm.getEntityByModel(model).tableName}" ( ${columns} )
1029
+ const create = &lt;T extends IModel&gt;(model: T): Promise&lt;T&gt; =&gt; {
1030
+ const entity = orm.getEntityByModel(model);
1031
+ const { columns, values, valuesVar } = getSqlInsertParts(model);
1032
+ const query = `
1033
+ INSERT INTO "${entity.tableName}" ( ${columns} )
959
1034
  VALUES ( ${valuesVar} )
960
- RETURNING ${orm.getEntityByModel(model).selectColumnsClause};
1035
+ RETURNING ${entity.selectColumnsClause};
961
1036
  `;
962
- <span class="cstat-no" title="statement not covered" > return orm.one&lt;T&gt;(query, values);</span>
1037
+ return orm.one&lt;T&gt;(query, values);
963
1038
  };
964
1039
  &nbsp;
965
1040
  // Standard update
966
- const update = <span class="fstat-no" title="function not covered" >&lt;T</span> extends IModel&gt;(model: T, { on = <span class="branch-0 cbranch-no" title="branch not covered" >'id' </span>} = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span>: T =&gt; {
967
- const { clause, idVar, values } = <span class="cstat-no" title="statement not covered" >getSqlUpdateParts(model, on);</span>
968
- const query = <span class="cstat-no" title="statement not covered" >`</span>
969
- UPDATE "${orm.getEntityByModel(model).tableName}"
1041
+ const update = &lt;T extends IModel&gt;(
1042
+ model: T,
1043
+ { on = 'id' } = {}
1044
+ ): Promise&lt;T&gt; =&gt; {
1045
+ const entity = orm.getEntityByModel(model);
1046
+ const { clause, idVar, values } = getSqlUpdateParts(model, on);
1047
+ const query = `
1048
+ UPDATE "${entity.tableName}"
970
1049
  SET ${clause}
971
- WHERE "${
972
- orm.getEntityByModel(model).tableName
973
- }".${getSqlColumnForPropertyName(model, on)} = ${idVar}
974
- RETURNING ${orm.getEntityByModel(model).selectColumnsClause};
1050
+ WHERE "${entity.tableName}".${getSqlColumnForPropertyName(
1051
+ model,
1052
+ on
1053
+ )} = ${idVar}
1054
+ RETURNING ${entity.selectColumnsClause};
975
1055
  `;
976
- <span class="cstat-no" title="statement not covered" > return orm.one&lt;T&gt;(query, values);</span>
1056
+ return orm.one&lt;T&gt;(query, values);
977
1057
  };
978
1058
  &nbsp;
979
1059
  // Standard delete
980
- const _delete = <span class="fstat-no" title="function not covered" >&lt;T</span> extends IModel&gt;(model: T): void =&gt; {
981
- const id = <span class="cstat-no" title="statement not covered" >(model as any).id;</span>
982
- const query = <span class="cstat-no" title="statement not covered" >`</span>
983
- DELETE FROM "${orm.getEntityByModel(model).tableName}"
984
- WHERE "${orm.getEntityByModel(model).tableName}".id = $(id)
1060
+ const _delete = &lt;T extends IModel&gt;(model: T): Promise&lt;void&gt; =&gt; {
1061
+ const entity = orm.getEntityByModel(model);
1062
+ const id = (model as any).id;
1063
+ const query = `
1064
+ DELETE FROM "${entity.tableName}"
1065
+ WHERE "${entity.tableName}".id = $(id)
985
1066
  `;
986
- <span class="cstat-no" title="statement not covered" > return orm.none(query, { id });</span>
1067
+ return orm.none(query, { id });
987
1068
  };
988
1069
  &nbsp;
989
- const deleteMatching = <span class="fstat-no" title="function not covered" >&lt;T</span> extends IModel&gt;(model: T) =&gt; {
990
- const { whereClause, values } = <span class="cstat-no" title="statement not covered" >getMatchingParts(model);</span>
991
- const query = <span class="cstat-no" title="statement not covered" >`</span>
992
- DELETE FROM "${orm.getEntityByModel(model).tableName}"
1070
+ const deleteMatching = &lt;T extends IModel&gt;(model: T): Promise&lt;void&gt; =&gt; {
1071
+ const entity = orm.getEntityByModel(model);
1072
+ const { whereClause, values } = getMatchingParts(model);
1073
+ const query = `
1074
+ DELETE FROM "${entity.tableName}"
993
1075
  WHERE ${whereClause};
994
1076
  `;
995
- <span class="cstat-no" title="statement not covered" > return orm.none(query, values);</span>
1077
+ return orm.none(query, values);
996
1078
  };
997
1079
  &nbsp;
998
- const getMatching = <span class="fstat-no" title="function not covered" >&lt;T</span> extends IModel&gt;(model: T): T =&gt; {
999
- const { whereClause, values } = <span class="cstat-no" title="statement not covered" >getMatchingParts(model);</span>
1000
- const query = <span class="cstat-no" title="statement not covered" >`</span>
1001
- SELECT ${orm.getEntityByModel(model).selectColumnsClause}
1002
- FROM "${orm.getEntityByModel(model).tableName}"
1080
+ const getMatching = &lt;T extends IModel&gt;(model: T): Promise&lt;T&gt; =&gt; {
1081
+ const entity = orm.getEntityByModel(model);
1082
+ const { whereClause, values } = getMatchingParts(model);
1083
+ const query = `
1084
+ SELECT ${entity.selectColumnsClause}
1085
+ FROM "${entity.tableName}"
1003
1086
  WHERE ${whereClause};
1004
1087
  `;
1005
- <span class="cstat-no" title="statement not covered" > return orm.one&lt;T&gt;(query, values);</span>
1088
+ return orm.one&lt;T&gt;(query, values);
1006
1089
  };
1007
1090
  &nbsp;
1008
- const getOneOrNoneMatching = <span class="fstat-no" title="function not covered" >&lt;T</span> extends IModel&gt;(model: T): T | void =&gt; {
1009
- const { whereClause, values } = <span class="cstat-no" title="statement not covered" >getMatchingParts(model);</span>
1010
- const query = <span class="cstat-no" title="statement not covered" >`</span>
1011
- SELECT ${orm.getEntityByModel(model).selectColumnsClause}
1012
- FROM "${orm.getEntityByModel(model).tableName}"
1091
+ const getOneOrNoneMatching = &lt;T extends IModel&gt;(
1092
+ model: T
1093
+ ): Promise&lt;T | void&gt; =&gt; {
1094
+ const entity = orm.getEntityByModel(model);
1095
+ const { whereClause, values } = getMatchingParts(model);
1096
+ const query = `
1097
+ SELECT ${entity.selectColumnsClause}
1098
+ FROM "${entity.tableName}"
1013
1099
  WHERE ${whereClause};
1014
1100
  `;
1015
- <span class="cstat-no" title="statement not covered" > return orm.oneOrNone&lt;T&gt;(query, values);</span>
1101
+ return orm.oneOrNone&lt;T&gt;(query, values);
1016
1102
  };
1017
1103
  &nbsp;
1018
- const getAnyMatching = <span class="fstat-no" title="function not covered" >&lt;T</span> extends ICollection&lt;IModel&gt;&gt;(
1104
+ const getAnyMatching = &lt;T extends ICollection&lt;IModel&gt;&gt;(
1019
1105
  model: IModel
1020
- ): T | void =&gt; {
1021
- const { whereClause, values } = <span class="cstat-no" title="statement not covered" >getMatchingParts(model);</span>
1022
- const query = <span class="cstat-no" title="statement not covered" >`</span>
1023
- SELECT ${orm.getEntityByModel(model).selectColumnsClause}
1024
- FROM "${orm.getEntityByModel(model).tableName}"
1106
+ ): Promise&lt;T | void&gt; =&gt; {
1107
+ const entity = orm.getEntityByModel(model);
1108
+ const { whereClause, values } = getMatchingParts(model);
1109
+ const query = `
1110
+ SELECT ${entity.selectColumnsClause}
1111
+ FROM "${entity.tableName}"
1025
1112
  WHERE ${whereClause};
1026
1113
  `;
1027
- <span class="cstat-no" title="statement not covered" > return orm.any&lt;T&gt;(query, values);</span>
1114
+ return orm.any&lt;T&gt;(query, values);
1028
1115
  };
1029
1116
  &nbsp;
1030
- const getAllMatching = <span class="fstat-no" title="function not covered" >&lt;T</span> extends ICollection&lt;IModel&gt;&gt;(model: IModel): T =&gt; {
1031
- const { whereClause, values } = <span class="cstat-no" title="statement not covered" >getMatchingParts(model);</span>
1032
- const query = <span class="cstat-no" title="statement not covered" >`</span>
1033
- SELECT ${orm.getEntityByModel(model).selectColumnsClause}
1034
- FROM "${orm.getEntityByModel(model).tableName}"
1117
+ const getAllMatching = &lt;T extends ICollection&lt;IModel&gt;&gt;(
1118
+ model: IModel
1119
+ ): Promise&lt;T&gt; =&gt; {
1120
+ const entity = orm.getEntityByModel(model);
1121
+ const { whereClause, values } = getMatchingParts(model);
1122
+ const query = `
1123
+ SELECT ${entity.selectColumnsClause}
1124
+ FROM "${entity.tableName}"
1035
1125
  WHERE ${whereClause};
1036
1126
  `;
1037
- <span class="cstat-no" title="statement not covered" > return orm.many&lt;T&gt;(query, values);</span>
1127
+ return orm.many&lt;T&gt;(query, values);
1038
1128
  };
1039
1129
  &nbsp;
1040
1130
  return Object.assign({}, orm, {
@@ -1063,7 +1153,7 @@ export const create = ({
1063
1153
  </div><!-- /wrapper -->
1064
1154
  <div class='footer quiet pad2 space-top1 center small'>
1065
1155
  Code coverage
1066
- generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Sat Dec 23 2023 12:48:55 GMT-0500 (Eastern Standard Time)
1156
+ generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Sun Mar 01 2026 17:10:47 GMT-0500 (Eastern Standard Time)
1067
1157
  </div>
1068
1158
  </div>
1069
1159
  <script src="../prettify.js"></script>