sonamu 0.5.6 → 0.6.0

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 (365) hide show
  1. package/dist/api/base-frame.js +12 -2
  2. package/dist/api/caster.js +66 -2
  3. package/dist/api/code-converters.js +489 -2
  4. package/dist/api/config.d.ts +76 -0
  5. package/dist/api/config.d.ts.map +1 -0
  6. package/dist/api/config.js +32 -0
  7. package/dist/api/context.d.ts +1 -0
  8. package/dist/api/context.d.ts.map +1 -1
  9. package/dist/api/context.js +3 -2
  10. package/dist/api/decorators.d.ts +1 -0
  11. package/dist/api/decorators.d.ts.map +1 -1
  12. package/dist/api/decorators.js +142 -2
  13. package/dist/api/index.js +9 -2
  14. package/dist/api/sonamu.d.ts +8 -22
  15. package/dist/api/sonamu.d.ts.map +1 -1
  16. package/dist/api/sonamu.js +482 -2
  17. package/dist/bin/build-config.d.ts +2 -1
  18. package/dist/bin/build-config.d.ts.map +1 -1
  19. package/dist/bin/build-config.js +12 -2
  20. package/dist/bin/cli-wrapper.js +71 -2
  21. package/dist/bin/cli.js +418 -2
  22. package/dist/bin/hot-hook-register.d.ts +11 -0
  23. package/dist/bin/hot-hook-register.d.ts.map +1 -0
  24. package/dist/bin/hot-hook-register.js +21 -0
  25. package/dist/database/_batch_update.js +78 -2
  26. package/dist/database/base-model.js +247 -2
  27. package/dist/database/code-generator.js +53 -2
  28. package/dist/database/db.d.ts +5 -16
  29. package/dist/database/db.d.ts.map +1 -1
  30. package/dist/database/db.js +132 -2
  31. package/dist/database/knex-plugins/knex-on-duplicate-update.js +39 -2
  32. package/dist/database/puri-wrapper.d.ts +22 -10
  33. package/dist/database/puri-wrapper.d.ts.map +1 -1
  34. package/dist/database/puri-wrapper.js +109 -2
  35. package/dist/database/puri.d.ts +105 -73
  36. package/dist/database/puri.d.ts.map +1 -1
  37. package/dist/database/puri.js +539 -2
  38. package/dist/database/puri.types.d.ts +33 -42
  39. package/dist/database/puri.types.d.ts.map +1 -1
  40. package/dist/database/puri.types.js +3 -2
  41. package/dist/database/transaction-context.d.ts +3 -3
  42. package/dist/database/transaction-context.d.ts.map +1 -1
  43. package/dist/database/transaction-context.js +14 -2
  44. package/dist/database/upsert-builder.js +215 -2
  45. package/dist/entity/entity-manager.d.ts +3 -1
  46. package/dist/entity/entity-manager.d.ts.map +1 -1
  47. package/dist/entity/entity-manager.js +114 -2
  48. package/dist/entity/entity-utils.js +210 -2
  49. package/dist/entity/entity.d.ts.map +1 -1
  50. package/dist/entity/entity.js +651 -2
  51. package/dist/exceptions/error-handler.js +29 -2
  52. package/dist/exceptions/so-exceptions.js +85 -2
  53. package/dist/file-storage/driver.js +79 -2
  54. package/dist/file-storage/file-storage.js +75 -2
  55. package/dist/index.d.ts +2 -0
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +28 -2
  58. package/dist/migration/code-generation.js +558 -2
  59. package/dist/migration/migration-set.js +364 -2
  60. package/dist/migration/migrator.d.ts +0 -9
  61. package/dist/migration/migrator.d.ts.map +1 -1
  62. package/dist/migration/migrator.js +510 -2
  63. package/dist/migration/types.js +3 -2
  64. package/dist/naite/naite.d.ts +12 -0
  65. package/dist/naite/naite.d.ts.map +1 -0
  66. package/dist/naite/naite.js +72 -0
  67. package/dist/stream/index.js +3 -2
  68. package/dist/stream/sse.js +38 -2
  69. package/dist/syncer/api-parser.d.ts +20 -0
  70. package/dist/syncer/api-parser.d.ts.map +1 -0
  71. package/dist/syncer/api-parser.js +229 -0
  72. package/dist/syncer/checksum.d.ts +21 -0
  73. package/dist/syncer/checksum.d.ts.map +1 -0
  74. package/dist/syncer/checksum.js +98 -0
  75. package/dist/syncer/code-generator.d.ts +20 -0
  76. package/dist/syncer/code-generator.d.ts.map +1 -0
  77. package/dist/syncer/code-generator.js +141 -0
  78. package/dist/syncer/entity-operations.d.ts +17 -0
  79. package/dist/syncer/entity-operations.d.ts.map +1 -0
  80. package/dist/syncer/entity-operations.js +58 -0
  81. package/dist/syncer/file-patterns.d.ts +29 -0
  82. package/dist/syncer/file-patterns.d.ts.map +1 -0
  83. package/dist/syncer/file-patterns.js +38 -0
  84. package/dist/syncer/index.d.ts +6 -0
  85. package/dist/syncer/index.d.ts.map +1 -1
  86. package/dist/syncer/index.js +9 -2
  87. package/dist/syncer/module-loader.d.ts +35 -0
  88. package/dist/syncer/module-loader.d.ts.map +1 -0
  89. package/dist/syncer/module-loader.js +82 -0
  90. package/dist/syncer/syncer.d.ts +93 -108
  91. package/dist/syncer/syncer.d.ts.map +1 -1
  92. package/dist/syncer/syncer.js +375 -2
  93. package/dist/template/entity-converter.d.ts +14 -0
  94. package/dist/template/entity-converter.d.ts.map +1 -0
  95. package/dist/template/entity-converter.js +101 -0
  96. package/dist/template/helpers.d.ts +23 -0
  97. package/dist/template/helpers.d.ts.map +1 -0
  98. package/dist/template/helpers.js +64 -0
  99. package/dist/{templates → template/implementations}/entity.template.d.ts +3 -3
  100. package/dist/template/implementations/entity.template.d.ts.map +1 -0
  101. package/dist/template/implementations/entity.template.js +87 -0
  102. package/dist/{templates → template/implementations}/generated.template.d.ts +3 -3
  103. package/dist/template/implementations/generated.template.d.ts.map +1 -0
  104. package/dist/template/implementations/generated.template.js +232 -0
  105. package/dist/{templates → template/implementations}/generated_http.template.d.ts +3 -3
  106. package/dist/template/implementations/generated_http.template.d.ts.map +1 -0
  107. package/dist/template/implementations/generated_http.template.js +131 -0
  108. package/dist/{templates → template/implementations}/generated_sso.template.d.ts +3 -3
  109. package/dist/template/implementations/generated_sso.template.d.ts.map +1 -0
  110. package/dist/template/implementations/generated_sso.template.js +105 -0
  111. package/dist/{templates → template/implementations}/init_types.template.d.ts +3 -3
  112. package/dist/template/implementations/init_types.template.d.ts.map +1 -0
  113. package/dist/template/implementations/init_types.template.js +38 -0
  114. package/dist/template/implementations/model.template.d.ts +17 -0
  115. package/dist/template/implementations/model.template.d.ts.map +1 -0
  116. package/dist/template/implementations/model.template.js +171 -0
  117. package/dist/{templates → template/implementations}/model_test.template.d.ts +3 -3
  118. package/dist/template/implementations/model_test.template.d.ts.map +1 -0
  119. package/dist/template/implementations/model_test.template.js +35 -0
  120. package/dist/{templates → template/implementations}/service.template.d.ts +6 -6
  121. package/dist/template/implementations/service.template.d.ts.map +1 -0
  122. package/dist/template/implementations/service.template.js +193 -0
  123. package/dist/{templates → template/implementations}/view_enums_buttonset.template.d.ts +3 -3
  124. package/dist/template/implementations/view_enums_buttonset.template.d.ts.map +1 -0
  125. package/dist/template/implementations/view_enums_buttonset.template.js +31 -0
  126. package/dist/{templates → template/implementations}/view_enums_dropdown.template.d.ts +3 -4
  127. package/dist/template/implementations/view_enums_dropdown.template.d.ts.map +1 -0
  128. package/dist/template/implementations/view_enums_dropdown.template.js +50 -0
  129. package/dist/{templates → template/implementations}/view_enums_select.template.d.ts +3 -3
  130. package/dist/template/implementations/view_enums_select.template.d.ts.map +1 -0
  131. package/dist/template/implementations/view_enums_select.template.js +55 -0
  132. package/dist/{templates → template/implementations}/view_form.template.d.ts +5 -5
  133. package/dist/template/implementations/view_form.template.d.ts.map +1 -0
  134. package/dist/template/implementations/view_form.template.js +337 -0
  135. package/dist/{templates → template/implementations}/view_id_all_select.template.d.ts +3 -3
  136. package/dist/template/implementations/view_id_all_select.template.d.ts.map +1 -0
  137. package/dist/template/implementations/view_id_all_select.template.js +31 -0
  138. package/dist/{templates → template/implementations}/view_id_async_select.template.d.ts +3 -3
  139. package/dist/template/implementations/view_id_async_select.template.d.ts.map +1 -0
  140. package/dist/template/implementations/view_id_async_select.template.js +105 -0
  141. package/dist/{templates → template/implementations}/view_list.template.d.ts +5 -13
  142. package/dist/template/implementations/view_list.template.d.ts.map +1 -0
  143. package/dist/template/implementations/view_list.template.js +465 -0
  144. package/dist/{templates → template/implementations}/view_list_columns.template.d.ts +3 -3
  145. package/dist/template/implementations/view_list_columns.template.d.ts.map +1 -0
  146. package/dist/template/implementations/view_list_columns.template.js +49 -0
  147. package/dist/{templates → template/implementations}/view_search_input.template.d.ts +3 -3
  148. package/dist/template/implementations/view_search_input.template.d.ts.map +1 -0
  149. package/dist/template/implementations/view_search_input.template.js +64 -0
  150. package/dist/template/index.d.ts +5 -0
  151. package/dist/template/index.d.ts.map +1 -0
  152. package/dist/template/index.js +6 -0
  153. package/dist/template/template.d.ts +39 -0
  154. package/dist/template/template.d.ts.map +1 -0
  155. package/dist/template/template.js +47 -0
  156. package/dist/template/zod-converter.d.ts +18 -0
  157. package/dist/template/zod-converter.d.ts.map +1 -0
  158. package/dist/template/zod-converter.js +166 -0
  159. package/dist/testing/_relation-graph.js +80 -2
  160. package/dist/testing/fixture-manager.d.ts.map +1 -1
  161. package/dist/testing/fixture-manager.js +521 -2
  162. package/dist/types/types.d.ts +39 -40
  163. package/dist/types/types.d.ts.map +1 -1
  164. package/dist/types/types.js +289 -2
  165. package/dist/typings/knex.d.js +3 -2
  166. package/dist/utils/async-utils.d.ts +7 -0
  167. package/dist/utils/async-utils.d.ts.map +1 -1
  168. package/dist/utils/async-utils.js +57 -2
  169. package/dist/utils/console-util.d.ts +2 -0
  170. package/dist/utils/console-util.d.ts.map +1 -0
  171. package/dist/utils/console-util.js +6 -0
  172. package/dist/utils/controller.js +26 -2
  173. package/dist/utils/esm-utils.d.ts +45 -0
  174. package/dist/utils/esm-utils.d.ts.map +1 -0
  175. package/dist/utils/esm-utils.js +56 -0
  176. package/dist/utils/fs-utils.js +17 -2
  177. package/dist/utils/lodash-able.js +6 -2
  178. package/dist/utils/model.js +22 -2
  179. package/dist/utils/path-utils.d.ts +89 -0
  180. package/dist/utils/path-utils.d.ts.map +1 -0
  181. package/dist/utils/path-utils.js +60 -0
  182. package/dist/utils/process-utils.d.ts +13 -0
  183. package/dist/utils/process-utils.d.ts.map +1 -0
  184. package/dist/utils/process-utils.js +36 -0
  185. package/dist/utils/sql-parser.js +35 -2
  186. package/dist/utils/utils.d.ts +4 -7
  187. package/dist/utils/utils.d.ts.map +1 -1
  188. package/dist/utils/utils.js +33 -2
  189. package/dist/utils/zod-error.d.ts.map +1 -1
  190. package/dist/utils/zod-error.js +19 -2
  191. package/package.json +21 -9
  192. package/src/api/code-converters.ts +2 -2
  193. package/src/api/config.ts +142 -0
  194. package/src/api/context.ts +1 -0
  195. package/src/api/decorators.ts +15 -5
  196. package/src/api/sonamu.ts +102 -87
  197. package/src/bin/build-config.ts +2 -1
  198. package/src/bin/cli-wrapper.ts +10 -3
  199. package/src/bin/cli.ts +108 -56
  200. package/src/bin/hot-hook-register.ts +22 -0
  201. package/src/database/base-model.ts +1 -1
  202. package/src/database/code-generator.ts +1 -1
  203. package/src/database/db.ts +53 -60
  204. package/src/database/puri-wrapper.ts +104 -26
  205. package/src/database/puri.ts +477 -580
  206. package/src/database/puri.types.ts +111 -201
  207. package/src/database/transaction-context.ts +4 -4
  208. package/src/database/upsert-builder.ts +1 -1
  209. package/src/entity/entity-manager.ts +19 -15
  210. package/src/entity/entity.ts +4 -3
  211. package/src/index.ts +2 -0
  212. package/src/migration/code-generation.ts +1 -1
  213. package/src/migration/migration-set.ts +1 -1
  214. package/src/migration/migrator.ts +23 -152
  215. package/src/naite/naite.ts +70 -0
  216. package/src/syncer/api-parser.ts +299 -0
  217. package/src/syncer/checksum.ts +152 -0
  218. package/src/syncer/code-generator.ts +202 -0
  219. package/src/syncer/entity-operations.ts +68 -0
  220. package/src/syncer/file-patterns.ts +56 -0
  221. package/src/syncer/index.ts +6 -0
  222. package/src/syncer/module-loader.ts +125 -0
  223. package/src/syncer/syncer.ts +363 -1420
  224. package/src/template/entity-converter.ts +123 -0
  225. package/src/template/helpers.ts +84 -0
  226. package/src/{templates → template/implementations}/entity.template.ts +4 -4
  227. package/src/{templates → template/implementations}/generated.template.ts +9 -9
  228. package/src/{templates → template/implementations}/generated_http.template.ts +9 -6
  229. package/src/{templates → template/implementations}/generated_sso.template.ts +7 -7
  230. package/src/{templates → template/implementations}/init_types.template.ts +4 -4
  231. package/src/{templates → template/implementations}/model.template.ts +9 -9
  232. package/src/{templates → template/implementations}/model_test.template.ts +5 -5
  233. package/src/{templates → template/implementations}/service.template.ts +29 -12
  234. package/src/{templates → template/implementations}/view_enums_buttonset.template.ts +3 -3
  235. package/src/{templates → template/implementations}/view_enums_dropdown.template.ts +5 -21
  236. package/src/{templates → template/implementations}/view_enums_select.template.ts +4 -4
  237. package/src/{templates → template/implementations}/view_form.template.ts +11 -13
  238. package/src/{templates → template/implementations}/view_id_all_select.template.ts +3 -3
  239. package/src/{templates → template/implementations}/view_id_async_select.template.ts +3 -3
  240. package/src/{templates → template/implementations}/view_list.template.ts +13 -64
  241. package/src/{templates → template/implementations}/view_list_columns.template.ts +3 -3
  242. package/src/{templates → template/implementations}/view_search_input.template.ts +3 -3
  243. package/src/template/index.ts +4 -0
  244. package/src/template/template.ts +86 -0
  245. package/src/template/zod-converter.ts +219 -0
  246. package/src/testing/fixture-manager.ts +8 -1
  247. package/src/types/types.ts +39 -62
  248. package/src/utils/async-utils.ts +17 -0
  249. package/src/utils/console-util.ts +4 -0
  250. package/src/utils/esm-utils.ts +69 -0
  251. package/src/utils/path-utils.ts +102 -0
  252. package/src/utils/process-utils.ts +46 -0
  253. package/src/utils/sql-parser.ts +1 -1
  254. package/src/utils/utils.ts +14 -40
  255. package/src/utils/zod-error.ts +0 -1
  256. package/dist/api/base-frame.js.map +0 -1
  257. package/dist/api/caster.js.map +0 -1
  258. package/dist/api/code-converters.js.map +0 -1
  259. package/dist/api/context.js.map +0 -1
  260. package/dist/api/decorators.js.map +0 -1
  261. package/dist/api/index.js.map +0 -1
  262. package/dist/api/sonamu.js.map +0 -1
  263. package/dist/bin/build-config.js.map +0 -1
  264. package/dist/bin/cli-wrapper.js.map +0 -1
  265. package/dist/bin/cli.js.map +0 -1
  266. package/dist/database/_batch_update.js.map +0 -1
  267. package/dist/database/base-model.js.map +0 -1
  268. package/dist/database/code-generator.js.map +0 -1
  269. package/dist/database/db.js.map +0 -1
  270. package/dist/database/knex-plugins/knex-on-duplicate-update.js.map +0 -1
  271. package/dist/database/puri-wrapper.js.map +0 -1
  272. package/dist/database/puri.js.map +0 -1
  273. package/dist/database/puri.types.js.map +0 -1
  274. package/dist/database/transaction-context.js.map +0 -1
  275. package/dist/database/upsert-builder.js.map +0 -1
  276. package/dist/entity/entity-manager.js.map +0 -1
  277. package/dist/entity/entity-utils.js.map +0 -1
  278. package/dist/entity/entity.js.map +0 -1
  279. package/dist/exceptions/error-handler.js.map +0 -1
  280. package/dist/exceptions/so-exceptions.js.map +0 -1
  281. package/dist/file-storage/driver.js.map +0 -1
  282. package/dist/file-storage/file-storage.js.map +0 -1
  283. package/dist/index.js.map +0 -1
  284. package/dist/migration/code-generation.js.map +0 -1
  285. package/dist/migration/migration-set.js.map +0 -1
  286. package/dist/migration/migrator.js.map +0 -1
  287. package/dist/migration/types.js.map +0 -1
  288. package/dist/stream/index.js.map +0 -1
  289. package/dist/stream/sse.js.map +0 -1
  290. package/dist/syncer/index.js.map +0 -1
  291. package/dist/syncer/syncer.js.map +0 -1
  292. package/dist/templates/base-template.d.ts +0 -13
  293. package/dist/templates/base-template.d.ts.map +0 -1
  294. package/dist/templates/base-template.js +0 -2
  295. package/dist/templates/base-template.js.map +0 -1
  296. package/dist/templates/entity.template.d.ts.map +0 -1
  297. package/dist/templates/entity.template.js +0 -2
  298. package/dist/templates/entity.template.js.map +0 -1
  299. package/dist/templates/generated.template.d.ts.map +0 -1
  300. package/dist/templates/generated.template.js +0 -2
  301. package/dist/templates/generated.template.js.map +0 -1
  302. package/dist/templates/generated_http.template.d.ts.map +0 -1
  303. package/dist/templates/generated_http.template.js +0 -2
  304. package/dist/templates/generated_http.template.js.map +0 -1
  305. package/dist/templates/generated_sso.template.d.ts.map +0 -1
  306. package/dist/templates/generated_sso.template.js +0 -2
  307. package/dist/templates/generated_sso.template.js.map +0 -1
  308. package/dist/templates/index.d.ts +0 -2
  309. package/dist/templates/index.d.ts.map +0 -1
  310. package/dist/templates/index.js +0 -2
  311. package/dist/templates/index.js.map +0 -1
  312. package/dist/templates/init_types.template.d.ts.map +0 -1
  313. package/dist/templates/init_types.template.js +0 -2
  314. package/dist/templates/init_types.template.js.map +0 -1
  315. package/dist/templates/model.template.d.ts +0 -17
  316. package/dist/templates/model.template.d.ts.map +0 -1
  317. package/dist/templates/model.template.js +0 -2
  318. package/dist/templates/model.template.js.map +0 -1
  319. package/dist/templates/model_test.template.d.ts.map +0 -1
  320. package/dist/templates/model_test.template.js +0 -2
  321. package/dist/templates/model_test.template.js.map +0 -1
  322. package/dist/templates/service.template.d.ts.map +0 -1
  323. package/dist/templates/service.template.js +0 -2
  324. package/dist/templates/service.template.js.map +0 -1
  325. package/dist/templates/view_enums_buttonset.template.d.ts.map +0 -1
  326. package/dist/templates/view_enums_buttonset.template.js +0 -2
  327. package/dist/templates/view_enums_buttonset.template.js.map +0 -1
  328. package/dist/templates/view_enums_dropdown.template.d.ts.map +0 -1
  329. package/dist/templates/view_enums_dropdown.template.js +0 -2
  330. package/dist/templates/view_enums_dropdown.template.js.map +0 -1
  331. package/dist/templates/view_enums_select.template.d.ts.map +0 -1
  332. package/dist/templates/view_enums_select.template.js +0 -2
  333. package/dist/templates/view_enums_select.template.js.map +0 -1
  334. package/dist/templates/view_form.template.d.ts.map +0 -1
  335. package/dist/templates/view_form.template.js +0 -2
  336. package/dist/templates/view_form.template.js.map +0 -1
  337. package/dist/templates/view_id_all_select.template.d.ts.map +0 -1
  338. package/dist/templates/view_id_all_select.template.js +0 -2
  339. package/dist/templates/view_id_all_select.template.js.map +0 -1
  340. package/dist/templates/view_id_async_select.template.d.ts.map +0 -1
  341. package/dist/templates/view_id_async_select.template.js +0 -2
  342. package/dist/templates/view_id_async_select.template.js.map +0 -1
  343. package/dist/templates/view_list.template.d.ts.map +0 -1
  344. package/dist/templates/view_list.template.js +0 -2
  345. package/dist/templates/view_list.template.js.map +0 -1
  346. package/dist/templates/view_list_columns.template.d.ts.map +0 -1
  347. package/dist/templates/view_list_columns.template.js +0 -2
  348. package/dist/templates/view_list_columns.template.js.map +0 -1
  349. package/dist/templates/view_search_input.template.d.ts.map +0 -1
  350. package/dist/templates/view_search_input.template.js +0 -2
  351. package/dist/templates/view_search_input.template.js.map +0 -1
  352. package/dist/testing/_relation-graph.js.map +0 -1
  353. package/dist/testing/fixture-manager.js.map +0 -1
  354. package/dist/types/types.js.map +0 -1
  355. package/dist/typings/knex.d.js.map +0 -1
  356. package/dist/utils/async-utils.js.map +0 -1
  357. package/dist/utils/controller.js.map +0 -1
  358. package/dist/utils/fs-utils.js.map +0 -1
  359. package/dist/utils/lodash-able.js.map +0 -1
  360. package/dist/utils/model.js.map +0 -1
  361. package/dist/utils/sql-parser.js.map +0 -1
  362. package/dist/utils/utils.js.map +0 -1
  363. package/dist/utils/zod-error.js.map +0 -1
  364. package/src/templates/base-template.ts +0 -19
  365. package/src/templates/index.ts +0 -1
@@ -1,56 +1,47 @@
1
+ import { DatabaseSchemaExtend } from "../types/types";
2
+ import { Puri } from "./puri";
3
+ import { PuriWrapper } from "./puri-wrapper";
4
+ type ExcludeMetadataColumns<T> = Exclude<T, "__fulltext__">;
5
+ export type AvailableColumns<TTables extends Record<string, any>> = {
6
+ [TAlias in keyof TTables]: `${TAlias & string}.${ExcludeMetadataColumns<keyof TTables[TAlias]> & string}`;
7
+ }[keyof TTables] | (IsSingleKey<TTables> extends true ? ExcludeMetadataColumns<keyof TTables[keyof TTables]> : never);
8
+ export type ResultAvailableColumns<TTables extends Record<string, any>, TResult = any> = AvailableColumns<TTables> | `${keyof TResult & string}`;
9
+ export type SelectValue<TTables extends Record<string, any>> = AvailableColumns<TTables> | SqlExpression<"string" | "number" | "boolean" | "date">;
10
+ export type SelectObject<TTables extends Record<string, any>> = Record<string, SelectValue<TTables>>;
11
+ export type ParseSelectObject<TTables extends Record<string, any>, TSelect extends SelectObject<TTables>> = {
12
+ [K in keyof TSelect]: TSelect[K] extends SqlExpression<infer R> ? R extends "string" ? string : R extends "number" ? number : R extends "boolean" ? boolean : R extends "date" ? Date : never : ExtractColumnType<TTables, TSelect[K] & string>;
13
+ };
14
+ export type ExtractColumnType<TTables extends Record<string, any>, Path extends string> = Path extends `${infer TAlias}.${infer TColumn}` ? TAlias extends keyof TTables ? TColumn extends keyof TTables[TAlias] ? TTables[TAlias][TColumn] : never : never : IsSingleKey<TTables> extends true ? Path extends keyof TTables[keyof TTables] ? TTables[keyof TTables][Path] : never : never;
15
+ export type WhereCondition<TTables extends Record<string, any>> = {
16
+ [key in AvailableColumns<TTables>]?: ExtractColumnType<TTables, key & string>;
17
+ };
18
+ export type FulltextColumns<TTables extends Record<string, any>> = {
19
+ [TAlias in keyof TTables]: TTables[TAlias] extends {
20
+ __fulltext__: readonly (infer Col)[];
21
+ } ? Col extends string ? `${TAlias & string}.${Col}` : never : never;
22
+ }[keyof TTables];
1
23
  export type ComparisonOperator = "=" | ">" | ">=" | "<" | "<=" | "<>" | "!=";
24
+ export type SqlExpression<T extends "string" | "number" | "boolean" | "date"> = {
25
+ _type: "sql_expression";
26
+ _return: T;
27
+ _sql: string;
28
+ };
2
29
  export type Expand<T> = T extends any[] ? {
3
30
  [K in keyof T[0]]: T[0][K];
4
31
  }[] : T extends object ? {
5
32
  [K in keyof T]: T[K];
6
33
  } : T;
7
- export type MergeJoined<TExisting, TNew> = TExisting extends EmptyRecord ? TNew : TExisting & TNew;
8
- type DeepEqual<T, U> = [T] extends [U] ? [U] extends [T] ? true : false : false;
9
- type Extends<T, U> = DeepEqual<T, Record<string, never>> extends true ? false : T extends U ? true : false;
34
+ type IsSingleKey<TTables extends Record<string, any>> = keyof TTables extends infer K ? K extends keyof TTables ? keyof TTables extends K ? true : false : false : false;
35
+ export type SingleTableValue<TTables extends Record<string, any>> = IsSingleKey<TTables> extends true ? TTables[keyof TTables] : never;
10
36
  type NullableToOptional<T> = {
11
37
  [K in keyof T as T[K] extends null | undefined ? K : never]?: Exclude<T[K], null | undefined>;
12
38
  } & Partial<{
13
39
  [K in keyof T as T[K] extends null | undefined ? never : K]: T[K];
14
40
  }>;
15
- export type EmptyRecord = Record<string, never>;
16
- export type ResultAvailableColumns<TSchema, T extends keyof TSchema | string, TOriginal = any, TResult = any, TJoined = EmptyRecord> = Exclude<AvailableColumns<TSchema, T, TOriginal, TJoined> | `${keyof TResult & string}`, "__fulltext__" | `${T & string}.__fulltext__`>;
17
- export type AvailableColumns<TSchema, T extends keyof TSchema | string, TOriginal = any, TJoined = EmptyRecord> = T extends keyof TSchema ? (Extends<TJoined, Record<string, any>> extends false ? keyof TSchema[T] : {
18
- [K in keyof TJoined]: TJoined[K] extends Record<string, any> ? `${string & K}.${keyof TJoined[K] & string}` : never;
19
- }[keyof TJoined]) | `${T & string}.${keyof TSchema[T] & string}` : keyof TOriginal | `${T & string}.${keyof TOriginal & string}` | (Extends<TJoined, Record<string, any>> extends true ? {
20
- [K in keyof TJoined]: TJoined[K] extends Record<string, any> ? `${string & K}.${keyof TJoined[K] & string}` : never;
21
- }[keyof TJoined] : never);
22
- export type ExtractColumnType<TSchema, T extends keyof TSchema | string, Path extends string, TOriginal = any, TJoined = EmptyRecord> = T extends keyof TSchema ? Path extends keyof TSchema[T] ? TSchema[T][Path] : Path extends `${T & string}.${infer Column}` ? Column extends keyof TSchema[T] ? TSchema[T][Column] : never : Path extends `${infer Table}.${infer Column}` ? Table extends keyof TJoined ? TJoined[Table] extends Record<string, any> ? Column extends keyof TJoined[Table] ? TJoined[Table][Column] : never : never : never : never : Path extends `${T & string}.${infer Column}` ? Column extends keyof TOriginal ? TOriginal[Column] : never : Path extends `${infer Table}.${infer Column}` ? Table extends keyof TJoined ? TJoined[Table] extends Record<string, any> ? Column extends keyof TJoined[Table] ? TJoined[Table][Column] : never : never : never : Path extends keyof TOriginal ? TOriginal[Path] : never;
23
- export type SqlFunction<T extends "string" | "number" | "boolean" | "date"> = {
24
- _type: "sql_function";
25
- _return: T;
26
- _sql: string;
27
- };
28
- type ExtractSqlType<T> = T extends SqlFunction<infer R> ? R extends "string" ? string : R extends "number" ? number : R extends "boolean" ? boolean : R extends "date" ? Date : never : never;
29
- export type SelectValue<TSchema, T extends keyof TSchema | string, TOriginal = any, TJoined = EmptyRecord> = AvailableColumns<TSchema, T, TOriginal, TJoined> | SqlFunction<"string" | "number" | "boolean" | "date">;
30
- export type SelectObject<TSchema, T extends keyof TSchema | string, TOriginal = any, TJoined = EmptyRecord> = Record<string, SelectValue<TSchema, T, TOriginal, TJoined>>;
31
- export type ParseSelectObject<TSchema, T extends keyof TSchema | string, S extends SelectObject<TSchema, T, TOriginal, TJoined>, TOriginal = any, TJoined = EmptyRecord> = {
32
- [K in keyof S]: S[K] extends SqlFunction<any> ? ExtractSqlType<S[K]> : ExtractColumnType<TSchema, T, S[K] & string, TOriginal, TJoined>;
33
- };
34
- export type WhereCondition<TSchema, T extends keyof TSchema | string, TOriginal = any, TJoined = EmptyRecord> = {
35
- [key in AvailableColumns<TSchema, T, TOriginal, TJoined>]?: ExtractColumnType<TSchema, T, key & string, TOriginal, TJoined>;
36
- };
37
- export type FulltextColumns<TSchema, T extends keyof TSchema | string, TOriginal = any, TJoined = EmptyRecord> = T extends keyof TSchema ? (TSchema[T] extends {
38
- __fulltext__: readonly (infer Col)[];
39
- } ? Col & string : never) | (TSchema[T] extends {
40
- __fulltext__: readonly (infer Col)[];
41
- } ? `${T & string}.${Col & string}` : never) | (TJoined extends Record<string, any> ? {
42
- [K in keyof TJoined]: TJoined[K] extends {
43
- __fulltext__: readonly (infer Col)[];
44
- } ? (Col & string) | `${string & K}.${Col & string}` : never;
45
- }[keyof TJoined] : never) : (TOriginal extends {
46
- __fulltext__: readonly (infer Col)[];
47
- } ? Col & string : never) | (TOriginal extends {
48
- __fulltext__: readonly (infer Col)[];
49
- } ? `${T & string}.${Col & string}` : never) | (TJoined extends Record<string, any> ? {
50
- [K in keyof TJoined]: TJoined[K] extends {
51
- __fulltext__: readonly (infer Col)[];
52
- } ? (Col & string) | `${string & K}.${Col & string}` : never;
53
- }[keyof TJoined] : never);
54
41
  export type InsertData<T> = NullableToOptional<Omit<T, "id" | "created_at" | "__fulltext__">>;
42
+ type ExtractTTables<T extends Puri<any, any, any>> = T extends Puri<any, infer TTables, any> ? TTables : never;
43
+ export type UnionExtractedTTables<SubsetKey extends string, SubsetQueries extends Record<SubsetKey, (qbWrapper: PuriWrapper<DatabaseSchemaExtend>) => Puri<any, any, any>>> = {
44
+ [K in SubsetKey]: ExtractTTables<ReturnType<SubsetQueries[K]>>;
45
+ }[SubsetKey];
55
46
  export {};
56
47
  //# sourceMappingURL=puri.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"puri.types.d.ts","sourceRoot":"","sources":["../../src/database/puri.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"puri.types.d.ts","sourceRoot":"","sources":["../../src/database/puri.types.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});
2
- //# sourceMappingURL=puri.types.js.map
1
+ export { };
2
+
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS9wdXJpLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFiYXNlU2NoZW1hRXh0ZW5kIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBQdXJpIH0gZnJvbSBcIi4vcHVyaVwiO1xuaW1wb3J0IHsgUHVyaVdyYXBwZXIgfSBmcm9tIFwiLi9wdXJpLXdyYXBwZXJcIjtcblxuLy8g66mU7YOA642w7J207YSwIOy7rOufvCDsoJzsmbhcbnR5cGUgRXhjbHVkZU1ldGFkYXRhQ29sdW1uczxUPiA9IEV4Y2x1ZGU8VCwgXCJfX2Z1bGx0ZXh0X19cIj47XG5cbi8vIFRUYWJsZXPsnZgg66qo65OgIO2FjOydtOu4lOyXkOyEnCDsgqzsmqkg6rCA64ql7ZWcIOy7rOufvCDqsr3roZxcbmV4cG9ydCB0eXBlIEF2YWlsYWJsZUNvbHVtbnM8VFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID1cbiAgfCB7XG4gICAgICBbVEFsaWFzIGluIGtleW9mIFRUYWJsZXNdOiBgJHtUQWxpYXMgJiBzdHJpbmd9LiR7RXhjbHVkZU1ldGFkYXRhQ29sdW1uczxrZXlvZiBUVGFibGVzW1RBbGlhc10+ICYgc3RyaW5nfWA7XG4gICAgfVtrZXlvZiBUVGFibGVzXVxuICB8IChJc1NpbmdsZUtleTxUVGFibGVzPiBleHRlbmRzIHRydWVcbiAgICAgID8gRXhjbHVkZU1ldGFkYXRhQ29sdW1uczxrZXlvZiBUVGFibGVzW2tleW9mIFRUYWJsZXNdPiAvLyDri6jsnbwg7YWM7J2067iU7J2066m0IOy7rOufvOuqheunjOuPhCDtl4jsmqlcbiAgICAgIDogbmV2ZXIpO1xuLy8gR3JvdXAgQnksIE9yZGVyIEJ5LCBIYXZpbmcg65Ox7JeQ7IScIOyEoO2DnSDqsIDriqXtlZwg7Lus65+8XG5leHBvcnQgdHlwZSBSZXN1bHRBdmFpbGFibGVDb2x1bW5zPFxuICBUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PixcbiAgVFJlc3VsdCA9IGFueSxcbj4gPSBBdmFpbGFibGVDb2x1bW5zPFRUYWJsZXM+IHwgYCR7a2V5b2YgVFJlc3VsdCAmIHN0cmluZ31gO1xuXG4vLyBTZWxlY3Qg6rCSIO2DgOyehSDtmZXsnqVcbmV4cG9ydCB0eXBlIFNlbGVjdFZhbHVlPFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9XG4gIHwgQXZhaWxhYmxlQ29sdW1uczxUVGFibGVzPlxuICB8IFNxbEV4cHJlc3Npb248XCJzdHJpbmdcIiB8IFwibnVtYmVyXCIgfCBcImJvb2xlYW5cIiB8IFwiZGF0ZVwiPjtcblxuLy8gU2VsZWN0IOqwneyytCDtg4DsnoUgKO2YhOyerOuKlCDsu6zrn7wg6rK966Gc66eMIOyngOybkClcbmV4cG9ydCB0eXBlIFNlbGVjdE9iamVjdDxUVGFibGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4gPSBSZWNvcmQ8XG4gIHN0cmluZyxcbiAgU2VsZWN0VmFsdWU8VFRhYmxlcz4gLy8gQXZhaWxhYmxlQ29sdW1ucyDrjIDsi6Bcbj47XG5cbi8vIFNlbGVjdCDqsrDqs7wg7YOA7J6FIOy2lOuhoFxuZXhwb3J0IHR5cGUgUGFyc2VTZWxlY3RPYmplY3Q8XG4gIFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICBUU2VsZWN0IGV4dGVuZHMgU2VsZWN0T2JqZWN0PFRUYWJsZXM+LFxuPiA9IHtcbiAgW0sgaW4ga2V5b2YgVFNlbGVjdF06IFRTZWxlY3RbS10gZXh0ZW5kcyBTcWxFeHByZXNzaW9uPGluZmVyIFI+XG4gICAgPyBSIGV4dGVuZHMgXCJzdHJpbmdcIlxuICAgICAgPyBzdHJpbmdcbiAgICAgIDogUiBleHRlbmRzIFwibnVtYmVyXCJcbiAgICAgICAgPyBudW1iZXJcbiAgICAgICAgOiBSIGV4dGVuZHMgXCJib29sZWFuXCJcbiAgICAgICAgICA/IGJvb2xlYW5cbiAgICAgICAgICA6IFIgZXh0ZW5kcyBcImRhdGVcIlxuICAgICAgICAgICAgPyBEYXRlXG4gICAgICAgICAgICA6IG5ldmVyXG4gICAgOiBFeHRyYWN0Q29sdW1uVHlwZTxUVGFibGVzLCBUU2VsZWN0W0tdICYgc3RyaW5nPjtcbn07XG5cbi8vIOy7rOufvCDqsr3roZzsl5DshJwg7YOA7J6FIOy2lOy2nFxuZXhwb3J0IHR5cGUgRXh0cmFjdENvbHVtblR5cGU8XG4gIFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICBQYXRoIGV4dGVuZHMgc3RyaW5nLFxuPiA9IFBhdGggZXh0ZW5kcyBgJHtpbmZlciBUQWxpYXN9LiR7aW5mZXIgVENvbHVtbn1gXG4gID8gVEFsaWFzIGV4dGVuZHMga2V5b2YgVFRhYmxlc1xuICAgID8gVENvbHVtbiBleHRlbmRzIGtleW9mIFRUYWJsZXNbVEFsaWFzXVxuICAgICAgPyBUVGFibGVzW1RBbGlhc11bVENvbHVtbl1cbiAgICAgIDogbmV2ZXJcbiAgICA6IG5ldmVyXG4gIDogSXNTaW5nbGVLZXk8VFRhYmxlcz4gZXh0ZW5kcyB0cnVlIC8vIOy2lOqwgFxuICAgID8gUGF0aCBleHRlbmRzIGtleW9mIFRUYWJsZXNba2V5b2YgVFRhYmxlc11cbiAgICAgID8gVFRhYmxlc1trZXlvZiBUVGFibGVzXVtQYXRoXVxuICAgICAgOiBuZXZlclxuICAgIDogbmV2ZXI7XG4vLyBXaGVyZSDsobDqsbQg6rCd7LK0IO2DgOyehVxuLy8g7JiIOiB7IFwidS5pZFwiOiAxLCBcInUuc3RhdHVzXCI6IFwiYWN0aXZlXCIgfVxuZXhwb3J0IHR5cGUgV2hlcmVDb25kaXRpb248VFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID0ge1xuICBba2V5IGluIEF2YWlsYWJsZUNvbHVtbnM8VFRhYmxlcz5dPzogRXh0cmFjdENvbHVtblR5cGU8VFRhYmxlcywga2V5ICYgc3RyaW5nPjtcbn07XG5cbi8vIEZ1bGx0ZXh0IGluZGV4IOy7rOufvCDstpTstpwg7YOA7J6FXG5leHBvcnQgdHlwZSBGdWxsdGV4dENvbHVtbnM8VFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID0ge1xuICBbVEFsaWFzIGluIGtleW9mIFRUYWJsZXNdOiBUVGFibGVzW1RBbGlhc10gZXh0ZW5kcyB7XG4gICAgX19mdWxsdGV4dF9fOiByZWFkb25seSAoaW5mZXIgQ29sKVtdO1xuICB9XG4gICAgPyBDb2wgZXh0ZW5kcyBzdHJpbmdcbiAgICAgID8gYCR7VEFsaWFzICYgc3RyaW5nfS4ke0NvbH1gXG4gICAgICA6IG5ldmVyXG4gICAgOiBuZXZlcjtcbn1ba2V5b2YgVFRhYmxlc107XG5cbi8vIOu5hOq1kCDsl7DsgrDsnpBcbmV4cG9ydCB0eXBlIENvbXBhcmlzb25PcGVyYXRvciA9IFwiPVwiIHwgXCI+XCIgfCBcIj49XCIgfCBcIjxcIiB8IFwiPD1cIiB8IFwiPD5cIiB8IFwiIT1cIjtcblxuLy8gU1FMIEV4cHJlc3Npb24g7YOA7J6FIOygleydmFxuZXhwb3J0IHR5cGUgU3FsRXhwcmVzc2lvbjxUIGV4dGVuZHMgXCJzdHJpbmdcIiB8IFwibnVtYmVyXCIgfCBcImJvb2xlYW5cIiB8IFwiZGF0ZVwiPiA9XG4gIHtcbiAgICBfdHlwZTogXCJzcWxfZXhwcmVzc2lvblwiOyAvLyDrmJDripQgXCJjb21wdXRlZF92YWx1ZVwiXG4gICAgX3JldHVybjogVDtcbiAgICBfc3FsOiBzdHJpbmc7XG4gIH07XG5cbi8vIOqysOqzvCDtg4DsnoUg6rCA64+F7ISx7J2EIOychO2VnCDtg4DsnoUg7ZmV7J6lXG5leHBvcnQgdHlwZSBFeHBhbmQ8VD4gPSBUIGV4dGVuZHMgYW55W11cbiAgPyB7IFtLIGluIGtleW9mIFRbMF1dOiBUWzBdW0tdIH1bXSAvLyDrsLDsl7TsnbTrqbQg7LKrIOuyiOynuCDsmpTshozrpbwgRXhwYW5k7ZWY6rOgIOuwsOyXtOuhnCDqsJDsjIhcbiAgOiBUIGV4dGVuZHMgb2JqZWN0XG4gICAgPyB7IFtLIGluIGtleW9mIFRdOiBUW0tdIH1cbiAgICA6IFQ7XG5cbnR5cGUgSXNTaW5nbGVLZXk8VFRhYmxlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+ID1cbiAga2V5b2YgVFRhYmxlcyBleHRlbmRzIGluZmVyIEtcbiAgICA/IEsgZXh0ZW5kcyBrZXlvZiBUVGFibGVzXG4gICAgICA/IGtleW9mIFRUYWJsZXMgZXh0ZW5kcyBLIC8vIOyXreuwqe2WpSDssrTtgazroZwg64uo7J28IO2CpCDtmZXsnbhcbiAgICAgICAgPyB0cnVlXG4gICAgICAgIDogZmFsc2VcbiAgICAgIDogZmFsc2VcbiAgICA6IGZhbHNlO1xuXG5leHBvcnQgdHlwZSBTaW5nbGVUYWJsZVZhbHVlPFRUYWJsZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9XG4gIElzU2luZ2xlS2V5PFRUYWJsZXM+IGV4dGVuZHMgdHJ1ZSA/IFRUYWJsZXNba2V5b2YgVFRhYmxlc10gOiBuZXZlcjtcblxuLy8gTnVsbGFibGXsnYQgT3B0aW9uYWzroZwg67OA7ZmYXG50eXBlIE51bGxhYmxlVG9PcHRpb25hbDxUPiA9IHtcbiAgW0sgaW4ga2V5b2YgVCBhcyBUW0tdIGV4dGVuZHMgbnVsbCB8IHVuZGVmaW5lZCA/IEsgOiBuZXZlcl0/OiBFeGNsdWRlPFxuICAgIFRbS10sXG4gICAgbnVsbCB8IHVuZGVmaW5lZFxuICA+O1xufSAmIFBhcnRpYWw8e1xuICBbSyBpbiBrZXlvZiBUIGFzIFRbS10gZXh0ZW5kcyBudWxsIHwgdW5kZWZpbmVkID8gbmV2ZXIgOiBLXTogVFtLXTtcbn0+O1xuXG4vLyBJbnNlcnQg7YOA7J6FOiBpZCwgY3JlYXRlZF9hdCDsoJzsmbhcbmV4cG9ydCB0eXBlIEluc2VydERhdGE8VD4gPSBOdWxsYWJsZVRvT3B0aW9uYWw8XG4gIE9taXQ8VCwgXCJpZFwiIHwgXCJjcmVhdGVkX2F0XCIgfCBcIl9fZnVsbHRleHRfX1wiPlxuPjtcblxuLy8gU3Vic2V0UXVlcnnrpbwg7JyE7ZWcIO2DgOyehSDsnKDti7jrpqzti7BcbnR5cGUgRXh0cmFjdFRUYWJsZXM8VCBleHRlbmRzIFB1cmk8YW55LCBhbnksIGFueT4+ID1cbiAgVCBleHRlbmRzIFB1cmk8YW55LCBpbmZlciBUVGFibGVzLCBhbnk+ID8gVFRhYmxlcyA6IG5ldmVyO1xuZXhwb3J0IHR5cGUgVW5pb25FeHRyYWN0ZWRUVGFibGVzPFxuICBTdWJzZXRLZXkgZXh0ZW5kcyBzdHJpbmcsXG4gIFN1YnNldFF1ZXJpZXMgZXh0ZW5kcyBSZWNvcmQ8XG4gICAgU3Vic2V0S2V5LFxuICAgIChxYldyYXBwZXI6IFB1cmlXcmFwcGVyPERhdGFiYXNlU2NoZW1hRXh0ZW5kPikgPT4gUHVyaTxhbnksIGFueSwgYW55PlxuICA+LFxuPiA9IHtcbiAgW0sgaW4gU3Vic2V0S2V5XTogRXh0cmFjdFRUYWJsZXM8UmV0dXJuVHlwZTxTdWJzZXRRdWVyaWVzW0tdPj47XG59W1N1YnNldEtleV07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0lBLFdBUWEifQ==
@@ -1,9 +1,9 @@
1
- import type { PuriWrapper } from "./puri-wrapper";
1
+ import type { PuriTransactionWrapper } from "./puri-wrapper";
2
2
  import type { DBPreset } from "./db";
3
3
  export declare class TransactionContext {
4
4
  private transactions;
5
- getTransaction(preset: DBPreset): PuriWrapper | undefined;
6
- setTransaction(preset: DBPreset, trx: PuriWrapper): void;
5
+ getTransaction(preset: DBPreset): PuriTransactionWrapper | undefined;
6
+ setTransaction(preset: DBPreset, trx: PuriTransactionWrapper): void;
7
7
  deleteTransaction(preset: DBPreset): void;
8
8
  }
9
9
  //# sourceMappingURL=transaction-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-context.d.ts","sourceRoot":"","sources":["../../src/database/transaction-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAErC,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,YAAY,CAAyC;IAE7D,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS;IAIzD,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI;IAIxD,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI;CAG1C"}
1
+ {"version":3,"file":"transaction-context.d.ts","sourceRoot":"","sources":["../../src/database/transaction-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAErC,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,YAAY,CAAoD;IAExE,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,sBAAsB,GAAG,SAAS;IAIpE,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,sBAAsB,GAAG,IAAI;IAInE,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI;CAG1C"}
@@ -1,2 +1,14 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"TransactionContext",{enumerable:true,get:function(){return TransactionContext}});function _class_call_check(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}function _create_class(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}var TransactionContext=/*#__PURE__*/function(){"use strict";function TransactionContext(){_class_call_check(this,TransactionContext);_define_property(this,"transactions",new Map)}_create_class(TransactionContext,[{key:"getTransaction",value:function getTransaction(preset){return this.transactions.get(preset)}},{key:"setTransaction",value:function setTransaction(preset,trx){this.transactions.set(preset,trx)}},{key:"deleteTransaction",value:function deleteTransaction(preset){this.transactions.delete(preset)}}]);return TransactionContext}();
2
- //# sourceMappingURL=transaction-context.js.map
1
+ export class TransactionContext {
2
+ transactions = new Map();
3
+ getTransaction(preset) {
4
+ return this.transactions.get(preset);
5
+ }
6
+ setTransaction(preset, trx) {
7
+ this.transactions.set(preset, trx);
8
+ }
9
+ deleteTransaction(preset) {
10
+ this.transactions.delete(preset);
11
+ }
12
+ }
13
+
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS90cmFuc2FjdGlvbi1jb250ZXh0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHVyaVRyYW5zYWN0aW9uV3JhcHBlciB9IGZyb20gXCIuL3B1cmktd3JhcHBlclwiO1xuaW1wb3J0IHR5cGUgeyBEQlByZXNldCB9IGZyb20gXCIuL2RiXCI7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkNvbnRleHQge1xuICBwcml2YXRlIHRyYW5zYWN0aW9uczogTWFwPERCUHJlc2V0LCBQdXJpVHJhbnNhY3Rpb25XcmFwcGVyPiA9IG5ldyBNYXAoKTtcblxuICBnZXRUcmFuc2FjdGlvbihwcmVzZXQ6IERCUHJlc2V0KTogUHVyaVRyYW5zYWN0aW9uV3JhcHBlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb25zLmdldChwcmVzZXQpO1xuICB9XG5cbiAgc2V0VHJhbnNhY3Rpb24ocHJlc2V0OiBEQlByZXNldCwgdHJ4OiBQdXJpVHJhbnNhY3Rpb25XcmFwcGVyKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbnMuc2V0KHByZXNldCwgdHJ4KTtcbiAgfVxuXG4gIGRlbGV0ZVRyYW5zYWN0aW9uKHByZXNldDogREJQcmVzZXQpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9ucy5kZWxldGUocHJlc2V0KTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlRyYW5zYWN0aW9uQ29udGV4dCIsInRyYW5zYWN0aW9ucyIsIk1hcCIsImdldFRyYW5zYWN0aW9uIiwicHJlc2V0IiwiZ2V0Iiwic2V0VHJhbnNhY3Rpb24iLCJ0cngiLCJzZXQiLCJkZWxldGVUcmFuc2FjdGlvbiIsImRlbGV0ZSJdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxNQUFNQTtJQUNIQyxlQUFzRCxJQUFJQyxNQUFNO0lBRXhFQyxlQUFlQyxNQUFnQixFQUFzQztRQUNuRSxPQUFPLElBQUksQ0FBQ0gsWUFBWSxDQUFDSSxHQUFHLENBQUNEO0lBQy9CO0lBRUFFLGVBQWVGLE1BQWdCLEVBQUVHLEdBQTJCLEVBQVE7UUFDbEUsSUFBSSxDQUFDTixZQUFZLENBQUNPLEdBQUcsQ0FBQ0osUUFBUUc7SUFDaEM7SUFFQUUsa0JBQWtCTCxNQUFnQixFQUFRO1FBQ3hDLElBQUksQ0FBQ0gsWUFBWSxDQUFDUyxNQUFNLENBQUNOO0lBQzNCO0FBQ0YifQ==
@@ -1,2 +1,215 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:Object.getOwnPropertyDescriptor(all,name).get})}_export(exports,{get UpsertBuilder(){return UpsertBuilder},get isRefField(){return isRefField}});var _crypto=require("crypto");var _lodash=/*#__PURE__*/_interop_require_default(require("lodash"));var _entitymanager=require("../entity/entity-manager");var _utils=require("../utils/utils");var _batch_update=require("./_batch_update");function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _class_call_check(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}function _create_class(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _instanceof(left,right){if(right!=null&&typeof Symbol!=="undefined"&&right[Symbol.hasInstance]){return!!right[Symbol.hasInstance](left)}else{return left instanceof right}}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _iterable_to_array(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function _object_without_properties(source,excluded){if(source==null)return{};var target=_object_without_properties_loose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key]}}return target}function _object_without_properties_loose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key]}return target}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _to_consumable_array(arr){return _array_without_holes(arr)||_iterable_to_array(arr)||_unsupported_iterable_to_array(arr)||_non_iterable_spread()}function _type_of(obj){"@swc/helpers - typeof";return obj&&typeof Symbol!=="undefined"&&obj.constructor===Symbol?"symbol":typeof obj}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return g.next=verb(0),g["throw"]=verb(1),g["return"]=verb(2),typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}function isRefField(field){return field!==undefined&&field!==null&&field.of!==undefined&&field.uuid!==undefined}var UpsertBuilder=/*#__PURE__*/function(){"use strict";function UpsertBuilder(){_class_call_check(this,UpsertBuilder);_define_property(this,"tables",void 0);this.tables=new Map}_create_class(UpsertBuilder,[{key:"getTable",value:function getTable(tableName){var table=this.tables.get(tableName);if(table===undefined){var tableSpec=function(){try{return _entitymanager.EntityManager.getTableSpec(tableName)}catch(e){return null}}();var _tableSpec_uniqueIndexes;this.tables.set(tableName,{references:new Set,rows:[],uniqueIndexes:(_tableSpec_uniqueIndexes=tableSpec===null||tableSpec===void 0?void 0:tableSpec.uniqueIndexes)!==null&&_tableSpec_uniqueIndexes!==void 0?_tableSpec_uniqueIndexes:[],uniquesMap:new Map})}return this.tables.get(tableName)}},{key:"hasTable",value:function hasTable(tableName){return this.tables.has(tableName)}},{key:"register",value:function register(tableName,row){var table=this.getTable(tableName);var uniqueKeys=table.uniqueIndexes.map(function(unqIndex){var uniqueKeyArray=unqIndex.columns.map(function(unqCol){var val=row[unqCol];if(isRefField(val)){return val.uuid}else{var _row_unqCol;return(_row_unqCol=row[unqCol])!==null&&_row_unqCol!==void 0?_row_unqCol:(0,_crypto.randomUUID)()}});if(uniqueKeyArray.length===0){return null}return uniqueKeyArray.join("---delimiter--")}).filter(_utils.nonNullable);var uuid=function(){if(uniqueKeys.length>0){var _iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;try{for(var _iterator=uniqueKeys[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var uniqueKey=_step.value;if(table.uniquesMap.has(uniqueKey)){return table.uniquesMap.get(uniqueKey)}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}}return(0,_crypto.randomUUID)()}();if(uniqueKeys.length>0){var _iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;try{for(var _iterator=uniqueKeys[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var uniqueKey=_step.value;table.uniquesMap.set(uniqueKey,uuid)}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}}row=Object.keys(row).reduce(function(r,rowKey){var rowValue=row[rowKey];if(isRefField(rowValue)){var _rowValue;var _use;(_use=(_rowValue=rowValue).use)!==null&&_use!==void 0?_use:_rowValue.use="id";table.references.add(rowValue.of+"."+rowValue.use);r[rowKey]=rowValue}else if((typeof rowValue==="undefined"?"undefined":_type_of(rowValue))==="object"&&!_instanceof(rowValue,Date)){r[rowKey]=rowValue===null?null:JSON.stringify(rowValue)}else{r[rowKey]=rowValue}return r},{});table.rows.push(_object_spread({uuid:uuid},row));var _row_uuid;return{of:tableName,uuid:(_row_uuid=row.uuid)!==null&&_row_uuid!==void 0?_row_uuid:uuid}}},{key:"upsert",value:function upsert(wdb,tableName,chunkSize){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.upsertOrInsert(wdb,tableName,"upsert",chunkSize)]})}).call(this)}},{key:"insertOnly",value:function insertOnly(wdb,tableName,chunkSize){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.upsertOrInsert(wdb,tableName,"insert",chunkSize)]})}).call(this)}},{key:"upsertOrInsert",value:function upsertOrInsert(wdb,tableName,mode,chunkSize){return _async_to_generator(function(){var table,_Array_from_reduce,references,refTables,extractFields,groups,_groups_normal,normalRows,_groups_selfRef,selfRefRows,chunks,uuidMap,_iteratorNormalCompletion,_didIteratorError,_iteratorError,_iterator,_step,chunk,q,uuids,upsertedRows,err,allIds,_allIds,selfRefIds;return _ts_generator(this,function(_state){switch(_state.label){case 0:if(this.hasTable(tableName)===false){return[2,[]]}table=this.tables.get(tableName);if(table===undefined){throw new Error("존재하지 않는 테이블 ".concat(tableName,"에 upsert 요청"))}else if(table.rows.length===0){throw new Error("".concat(tableName,"에 upsert 할 데이터가 없습니다."))}if(table.rows.some(function(row){return Object.entries(row).some(function(param){var _param=_sliced_to_array(param,2),value=_param[1];return isRefField(value)&&value.of!==tableName})})){throw new Error("".concat(tableName," 해결되지 않은 참조가 있습니다."))}_Array_from_reduce=Array.from(this.tables).reduce(function(r,param){var _param=_sliced_to_array(param,2),table=_param[1];var reference=Array.from(table.references.values()).find(function(ref){return ref.includes(tableName+".")});if(reference){r.references.push(reference);r.refTables.push(table)}return r},{references:[],refTables:[]}),references=_Array_from_reduce.references,refTables=_Array_from_reduce.refTables;extractFields=_lodash.default.uniq(references).map(function(reference){return reference.split(".")[1]});groups=_lodash.default.groupBy(table.rows,function(row){return Object.entries(row).some(function(param){var _param=_sliced_to_array(param,2),value=_param[1];return isRefField(value)})?"selfRef":"normal"});normalRows=(_groups_normal=groups.normal)!==null&&_groups_normal!==void 0?_groups_normal:[];selfRefRows=(_groups_selfRef=groups.selfRef)!==null&&_groups_selfRef!==void 0?_groups_selfRef:[];chunks=chunkSize?_lodash.default.chunk(normalRows,chunkSize):[normalRows];uuidMap=new Map;_iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;_state.label=1;case 1:_state.trys.push([1,10,11,12]);_iterator=chunks[Symbol.iterator]();_state.label=2;case 2:if(!!(_iteratorNormalCompletion=(_step=_iterator.next()).done))return[3,9];chunk=_step.value;q=wdb.insert(chunk).into(tableName);if(!(mode==="insert"))return[3,4];return[4,q];case 3:_state.sent();return[3,6];case 4:if(!(mode==="upsert"))return[3,6];return[4,q.onDuplicateUpdate.apply(q,Object.keys(normalRows[0]))];case 5:_state.sent();_state.label=6;case 6:uuids=chunk.map(function(row){return row.uuid});return[4,wdb(tableName).select(_lodash.default.uniq(["uuid","id"].concat(_to_consumable_array(extractFields)))).whereIn("uuid",uuids)];case 7:upsertedRows=_state.sent();upsertedRows.forEach(function(row){uuidMap.set(row.uuid,row)});_state.label=8;case 8:_iteratorNormalCompletion=true;return[3,2];case 9:return[3,12];case 10:err=_state.sent();_didIteratorError=true;_iteratorError=err;return[3,12];case 11:try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}return[7];case 12:refTables.map(function(table){table.rows=table.rows.map(function(row){Object.keys(row).map(function(key){var prop=row[key];if(isRefField(prop)&&prop.of===tableName){var parent=uuidMap.get(prop.uuid);if(parent===undefined){console.error(prop);throw new Error("존재하지 않는 uuid ".concat(prop.uuid," -- in ").concat(tableName))}var _prop_use;row[key]=parent[(_prop_use=prop.use)!==null&&_prop_use!==void 0?_prop_use:"id"]}});return row})});allIds=Array.from(uuidMap.values()).map(function(row){return row.id});if(!(selfRefRows.length>0))return[3,14];table.rows=selfRefRows;return[4,this.upsert(wdb,tableName,chunkSize)];case 13:selfRefIds=_state.sent();(_allIds=allIds).push.apply(_allIds,_to_consumable_array(selfRefIds));return[3,15];case 14:table.rows=[];table.references.clear();table.uniquesMap.clear();_state.label=15;case 15:return[2,allIds]}})}).call(this)}},{key:"updateBatch",value:function updateBatch(wdb,tableName,options){return _async_to_generator(function(){var table,_options_where,whereColumns,rows;return _ts_generator(this,function(_state){switch(_state.label){case 0:options=_lodash.default.defaults(options,{chunkSize:500,where:"id"});if(this.hasTable(tableName)===false){return[2]}table=this.tables.get(tableName);if(table.rows.length===0){return[2]}whereColumns=Array.isArray(options.where)?options.where:[(_options_where=options.where)!==null&&_options_where!==void 0?_options_where:"id"];rows=table.rows.map(function(_row){var uuid=_row.uuid,row=_object_without_properties(_row,["uuid"]);return row});return[4,(0,_batch_update.batchUpdate)(wdb,tableName,whereColumns,rows,options.chunkSize)];case 1:_state.sent();table.rows=[];table.references.clear();table.uniquesMap.clear();return[2]}})}).call(this)}}]);return UpsertBuilder}();
2
- //# sourceMappingURL=upsert-builder.js.map
1
+ import { randomUUID } from "crypto";
2
+ import * as _ from "lodash-es";
3
+ import { EntityManager } from "../entity/entity-manager.js";
4
+ import { nonNullable } from "../utils/utils.js";
5
+ import { batchUpdate } from "./_batch_update.js";
6
+ export function isRefField(field) {
7
+ return field !== undefined && field !== null && field.of !== undefined && field.uuid !== undefined;
8
+ }
9
+ export class UpsertBuilder {
10
+ tables;
11
+ constructor(){
12
+ this.tables = new Map();
13
+ }
14
+ getTable(tableName) {
15
+ const table = this.tables.get(tableName);
16
+ if (table === undefined) {
17
+ const tableSpec = (()=>{
18
+ try {
19
+ return EntityManager.getTableSpec(tableName);
20
+ } catch {
21
+ return null;
22
+ }
23
+ })();
24
+ this.tables.set(tableName, {
25
+ references: new Set(),
26
+ rows: [],
27
+ uniqueIndexes: tableSpec?.uniqueIndexes ?? [],
28
+ uniquesMap: new Map()
29
+ });
30
+ }
31
+ return this.tables.get(tableName);
32
+ }
33
+ hasTable(tableName) {
34
+ return this.tables.has(tableName);
35
+ }
36
+ register(tableName, row) {
37
+ const table = this.getTable(tableName);
38
+ // 해당 테이블의 unique 인덱스를 순회하며 키 생성
39
+ const uniqueKeys = table.uniqueIndexes.map((unqIndex)=>{
40
+ const uniqueKeyArray = unqIndex.columns.map((unqCol)=>{
41
+ const val = row[unqCol];
42
+ if (isRefField(val)) {
43
+ return val.uuid;
44
+ } else {
45
+ return row[unqCol] ?? randomUUID(); // nullable인 경우 uuid로 랜덤값 삽입
46
+ }
47
+ });
48
+ // 값이 모두 null인 경우 키 생성 패스
49
+ if (uniqueKeyArray.length === 0) {
50
+ return null;
51
+ }
52
+ return uniqueKeyArray.join("---delimiter--");
53
+ }).filter(nonNullable);
54
+ // uuid 생성 로직
55
+ const uuid = (()=>{
56
+ // 키를 순회하여 이미 존재하는 키가 있는지 확인
57
+ if (uniqueKeys.length > 0) {
58
+ for (const uniqueKey of uniqueKeys){
59
+ if (table.uniquesMap.has(uniqueKey)) {
60
+ return table.uniquesMap.get(uniqueKey); // 이미 has 체크를 했으므로 undefined 불가능
61
+ }
62
+ }
63
+ }
64
+ // 찾을 수 없는 경우 생성
65
+ return randomUUID();
66
+ })();
67
+ // 모든 유니크키에 대해 유니크맵에 uuid 저장
68
+ if (uniqueKeys.length > 0) {
69
+ for (const uniqueKey of uniqueKeys){
70
+ table.uniquesMap.set(uniqueKey, uuid);
71
+ }
72
+ }
73
+ // 이 테이블에 사용된 RefField를 순회하여, 현재 테이블 정보에 어떤 필드를 참조하는지 추가
74
+ // 이 정보를 나중에 치환할 때 사용
75
+ row = Object.keys(row).reduce((r, rowKey)=>{
76
+ const rowValue = row[rowKey];
77
+ if (isRefField(rowValue)) {
78
+ rowValue.use ??= "id";
79
+ table.references.add(rowValue.of + "." + rowValue.use);
80
+ r[rowKey] = rowValue;
81
+ } else if (typeof rowValue === "object" && !(rowValue instanceof Date)) {
82
+ // object인 경우 JSON으로 변환
83
+ r[rowKey] = rowValue === null ? null : JSON.stringify(rowValue);
84
+ } else {
85
+ r[rowKey] = rowValue;
86
+ }
87
+ return r;
88
+ }, {});
89
+ table.rows.push({
90
+ uuid,
91
+ ...row
92
+ });
93
+ return {
94
+ of: tableName,
95
+ uuid: row.uuid ?? uuid
96
+ };
97
+ }
98
+ async upsert(wdb, tableName, chunkSize) {
99
+ return this.upsertOrInsert(wdb, tableName, "upsert", chunkSize);
100
+ }
101
+ async insertOnly(wdb, tableName, chunkSize) {
102
+ return this.upsertOrInsert(wdb, tableName, "insert", chunkSize);
103
+ }
104
+ async upsertOrInsert(wdb, tableName, mode, chunkSize) {
105
+ if (this.hasTable(tableName) === false) {
106
+ return [];
107
+ }
108
+ const table = this.tables.get(tableName);
109
+ if (table === undefined) {
110
+ throw new Error(`존재하지 않는 테이블 ${tableName}에 upsert 요청`);
111
+ } else if (table.rows.length === 0) {
112
+ throw new Error(`${tableName}에 upsert 할 데이터가 없습니다.`);
113
+ }
114
+ if (table.rows.some((row)=>Object.entries(row).some(([, value])=>isRefField(value) && value.of !== tableName))) {
115
+ throw new Error(`${tableName} 해결되지 않은 참조가 있습니다.`);
116
+ }
117
+ // 전체 테이블 순회하여 현재 테이블 참조하는 모든 테이블 추출
118
+ const { references, refTables } = Array.from(this.tables).reduce((r, [, table])=>{
119
+ const reference = Array.from(table.references.values()).find((ref)=>ref.includes(tableName + "."));
120
+ if (reference) {
121
+ r.references.push(reference);
122
+ r.refTables.push(table);
123
+ }
124
+ return r;
125
+ }, {
126
+ references: [],
127
+ refTables: []
128
+ });
129
+ const extractFields = _.uniq(references).map((reference)=>reference.split(".")[1]);
130
+ // 내부 참조 있는 경우 필터하여 분리
131
+ const groups = _.groupBy(table.rows, (row)=>Object.entries(row).some(([, value])=>isRefField(value)) ? "selfRef" : "normal");
132
+ const normalRows = groups.normal ?? [];
133
+ const selfRefRows = groups.selfRef ?? [];
134
+ const chunks = chunkSize ? _.chunk(normalRows, chunkSize) : [
135
+ normalRows
136
+ ];
137
+ const uuidMap = new Map();
138
+ for (const chunk of chunks){
139
+ const q = wdb.insert(chunk).into(tableName);
140
+ if (mode === "insert") {
141
+ await q;
142
+ } else if (mode === "upsert") {
143
+ await q.onDuplicateUpdate.apply(q, Object.keys(normalRows[0]));
144
+ }
145
+ // upsert된 row들을 다시 조회하여 uuidMap에 저장
146
+ const uuids = chunk.map((row)=>row.uuid);
147
+ const upsertedRows = await wdb(tableName).select(_.uniq([
148
+ "uuid",
149
+ "id",
150
+ ...extractFields
151
+ ])).whereIn("uuid", uuids);
152
+ upsertedRows.forEach((row)=>{
153
+ uuidMap.set(row.uuid, row);
154
+ });
155
+ }
156
+ // 해당 테이블 참조를 실제 밸류로 변경
157
+ refTables.map((table)=>{
158
+ table.rows = table.rows.map((row)=>{
159
+ Object.keys(row).map((key)=>{
160
+ const prop = row[key];
161
+ if (isRefField(prop) && prop.of === tableName) {
162
+ const parent = uuidMap.get(prop.uuid);
163
+ if (parent === undefined) {
164
+ console.error(prop);
165
+ throw new Error(`존재하지 않는 uuid ${prop.uuid} -- in ${tableName}`);
166
+ }
167
+ row[key] = parent[prop.use ?? "id"];
168
+ }
169
+ });
170
+ return row;
171
+ });
172
+ });
173
+ const allIds = Array.from(uuidMap.values()).map((row)=>row.id);
174
+ // 자기 참조가 있는 경우 재귀적으로 upsert
175
+ if (selfRefRows.length > 0) {
176
+ // 처리된 데이터를 제외하고 다시 upsert
177
+ table.rows = selfRefRows;
178
+ const selfRefIds = await this.upsert(wdb, tableName, chunkSize);
179
+ allIds.push(...selfRefIds);
180
+ } else {
181
+ // 자기 참조가 없으면 해당 테이블의 데이터 초기화
182
+ table.rows = [];
183
+ table.references.clear();
184
+ table.uniquesMap.clear();
185
+ }
186
+ return allIds;
187
+ }
188
+ async updateBatch(wdb, tableName, options) {
189
+ options = _.defaults(options, {
190
+ chunkSize: 500,
191
+ where: "id"
192
+ });
193
+ if (this.hasTable(tableName) === false) {
194
+ return;
195
+ }
196
+ const table = this.tables.get(tableName);
197
+ if (table.rows.length === 0) {
198
+ return;
199
+ }
200
+ const whereColumns = Array.isArray(options.where) ? options.where : [
201
+ options.where ?? "id"
202
+ ];
203
+ const rows = table.rows.map((_row)=>{
204
+ const { uuid, ...row } = _row;
205
+ return row;
206
+ });
207
+ await batchUpdate(wdb, tableName, whereColumns, rows, options.chunkSize);
208
+ // updateBatch 완료 후 처리된 데이터 제거
209
+ table.rows = [];
210
+ table.references.clear();
211
+ table.uniquesMap.clear();
212
+ }
213
+ }
214
+
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS91cHNlcnQtYnVpbGRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSBcImNyeXB0b1wiO1xuaW1wb3J0ICogYXMgXyBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBLbmV4IH0gZnJvbSBcImtuZXhcIjtcbmltcG9ydCB7IEVudGl0eU1hbmFnZXIgfSBmcm9tIFwiLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQgeyBub25OdWxsYWJsZSB9IGZyb20gXCIuLi91dGlscy91dGlsc1wiO1xuaW1wb3J0IHsgUm93V2l0aElkLCBiYXRjaFVwZGF0ZSB9IGZyb20gXCIuL19iYXRjaF91cGRhdGVcIjtcblxudHlwZSBUYWJsZURhdGEgPSB7XG4gIHJlZmVyZW5jZXM6IFNldDxzdHJpbmc+O1xuICByb3dzOiBhbnlbXTtcbiAgdW5pcXVlSW5kZXhlczogeyBuYW1lPzogc3RyaW5nOyBjb2x1bW5zOiBzdHJpbmdbXSB9W107XG4gIHVuaXF1ZXNNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz47XG59O1xuZXhwb3J0IHR5cGUgVUJSZWYgPSB7XG4gIHV1aWQ6IHN0cmluZztcbiAgb2Y6IHN0cmluZztcbiAgdXNlPzogc3RyaW5nO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBpc1JlZkZpZWxkKGZpZWxkOiBhbnkpOiBmaWVsZCBpcyBVQlJlZiB7XG4gIHJldHVybiAoXG4gICAgZmllbGQgIT09IHVuZGVmaW5lZCAmJlxuICAgIGZpZWxkICE9PSBudWxsICYmXG4gICAgZmllbGQub2YgIT09IHVuZGVmaW5lZCAmJlxuICAgIGZpZWxkLnV1aWQgIT09IHVuZGVmaW5lZFxuICApO1xufVxuXG5leHBvcnQgY2xhc3MgVXBzZXJ0QnVpbGRlciB7XG4gIHRhYmxlczogTWFwPHN0cmluZywgVGFibGVEYXRhPjtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy50YWJsZXMgPSBuZXcgTWFwKCk7XG4gIH1cblxuICBnZXRUYWJsZSh0YWJsZU5hbWU6IHN0cmluZyk6IFRhYmxlRGF0YSB7XG4gICAgY29uc3QgdGFibGUgPSB0aGlzLnRhYmxlcy5nZXQodGFibGVOYW1lKTtcbiAgICBpZiAodGFibGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgdGFibGVTcGVjID0gKCgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gRW50aXR5TWFuYWdlci5nZXRUYWJsZVNwZWModGFibGVOYW1lKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0pKCk7XG5cbiAgICAgIHRoaXMudGFibGVzLnNldCh0YWJsZU5hbWUsIHtcbiAgICAgICAgcmVmZXJlbmNlczogbmV3IFNldCgpLFxuICAgICAgICByb3dzOiBbXSxcbiAgICAgICAgdW5pcXVlSW5kZXhlczogdGFibGVTcGVjPy51bmlxdWVJbmRleGVzID8/IFtdLFxuICAgICAgICB1bmlxdWVzTWFwOiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGFibGVzLmdldCh0YWJsZU5hbWUpITtcbiAgfVxuXG4gIGhhc1RhYmxlKHRhYmxlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVzLmhhcyh0YWJsZU5hbWUpO1xuICB9XG5cbiAgcmVnaXN0ZXI8VCBleHRlbmRzIHN0cmluZz4oXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgcm93OiB7XG4gICAgICBba2V5IGluIFRdPzpcbiAgICAgICAgfCBVQlJlZlxuICAgICAgICB8IHN0cmluZ1xuICAgICAgICB8IG51bWJlclxuICAgICAgICB8IGJvb2xlYW5cbiAgICAgICAgfCBiaWdpbnRcbiAgICAgICAgfCBudWxsXG4gICAgICAgIHwgb2JqZWN0XG4gICAgICAgIHwgdW5rbm93bjtcbiAgICB9XG4gICk6IFVCUmVmIHtcbiAgICBjb25zdCB0YWJsZSA9IHRoaXMuZ2V0VGFibGUodGFibGVOYW1lKTtcblxuICAgIC8vIO2VtOuLuSDthYzsnbTruJTsnZggdW5pcXVlIOyduOuNseyKpOulvCDsiJztmoztlZjrqbAg7YKkIOyDneyEsVxuICAgIGNvbnN0IHVuaXF1ZUtleXMgPSB0YWJsZS51bmlxdWVJbmRleGVzXG4gICAgICAubWFwKCh1bnFJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCB1bmlxdWVLZXlBcnJheSA9IHVucUluZGV4LmNvbHVtbnMubWFwKCh1bnFDb2wpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWwgPSByb3dbdW5xQ29sIGFzIGtleW9mIHR5cGVvZiByb3ddO1xuICAgICAgICAgIGlmIChpc1JlZkZpZWxkKHZhbCkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWwudXVpZDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJvd1t1bnFDb2wgYXMga2V5b2YgdHlwZW9mIHJvd10gPz8gcmFuZG9tVVVJRCgpOyAvLyBudWxsYWJsZeyduCDqsr3smrAgdXVpZOuhnCDrnpzrjaTqsJIg7IK97J6FXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyDqsJLsnbQg66qo65GQIG51bGzsnbgg6rK97JqwIO2CpCDsg53shLEg7Yyo7IqkXG4gICAgICAgIGlmICh1bmlxdWVLZXlBcnJheS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5pcXVlS2V5QXJyYXkuam9pbihcIi0tLWRlbGltaXRlci0tXCIpO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIobm9uTnVsbGFibGUpO1xuXG4gICAgLy8gdXVpZCDsg53shLEg66Gc7KeBXG4gICAgY29uc3QgdXVpZDogc3RyaW5nID0gKCgpID0+IHtcbiAgICAgIC8vIO2CpOulvCDsiJztmoztlZjsl6wg7J2066+4IOyhtOyerO2VmOuKlCDtgqTqsIAg7J6I64qU7KeAIO2ZleyduFxuICAgICAgaWYgKHVuaXF1ZUtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICBmb3IgKGNvbnN0IHVuaXF1ZUtleSBvZiB1bmlxdWVLZXlzKSB7XG4gICAgICAgICAgaWYgKHRhYmxlLnVuaXF1ZXNNYXAuaGFzKHVuaXF1ZUtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0YWJsZS51bmlxdWVzTWFwLmdldCh1bmlxdWVLZXkpITsgLy8g7J2066+4IGhhcyDssrTtgazrpbwg7ZaI7Jy866+A66GcIHVuZGVmaW5lZCDrtojqsIDriqVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8g7LC+7J2EIOyImCDsl4bripQg6rK97JqwIOyDneyEsVxuICAgICAgcmV0dXJuIHJhbmRvbVVVSUQoKTtcbiAgICB9KSgpO1xuXG4gICAgLy8g66qo65OgIOycoOuLiO2BrO2CpOyXkCDrjIDtlbQg7Jyg64uI7YGs66e17JeQIHV1aWQg7KCA7J6lXG4gICAgaWYgKHVuaXF1ZUtleXMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCB1bmlxdWVLZXkgb2YgdW5pcXVlS2V5cykge1xuICAgICAgICB0YWJsZS51bmlxdWVzTWFwLnNldCh1bmlxdWVLZXksIHV1aWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIOydtCDthYzsnbTruJTsl5Ag7IKs7Jqp65CcIFJlZkZpZWxk66W8IOyInO2ajO2VmOyXrCwg7ZiE7J6sIO2FjOydtOu4lCDsoJXrs7Tsl5Ag7Ja065akIO2VhOuTnOulvCDssLjsobDtlZjripTsp4Ag7LaU6rCAXG4gICAgLy8g7J20IOygleuztOulvCDrgpjspJHsl5Ag7LmY7ZmY7ZWgIOuVjCDsgqzsmqlcbiAgICByb3cgPSBPYmplY3Qua2V5cyhyb3cpLnJlZHVjZSgociwgcm93S2V5KSA9PiB7XG4gICAgICBjb25zdCByb3dWYWx1ZSA9IHJvd1tyb3dLZXkgYXMga2V5b2YgdHlwZW9mIHJvd107XG5cbiAgICAgIGlmIChpc1JlZkZpZWxkKHJvd1ZhbHVlKSkge1xuICAgICAgICByb3dWYWx1ZS51c2UgPz89IFwiaWRcIjtcbiAgICAgICAgdGFibGUucmVmZXJlbmNlcy5hZGQocm93VmFsdWUub2YgKyBcIi5cIiArIHJvd1ZhbHVlLnVzZSk7XG4gICAgICAgIHJbcm93S2V5XSA9IHJvd1ZhbHVlO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygcm93VmFsdWUgPT09IFwib2JqZWN0XCIgJiYgIShyb3dWYWx1ZSBpbnN0YW5jZW9mIERhdGUpKSB7XG4gICAgICAgIC8vIG9iamVjdOyduCDqsr3smrAgSlNPTuycvOuhnCDrs4DtmZhcbiAgICAgICAgcltyb3dLZXldID0gcm93VmFsdWUgPT09IG51bGwgPyBudWxsIDogSlNPTi5zdHJpbmdpZnkocm93VmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcltyb3dLZXldID0gcm93VmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gcjtcbiAgICB9LCB7fSBhcyBhbnkpO1xuXG4gICAgdGFibGUucm93cy5wdXNoKHtcbiAgICAgIHV1aWQsXG4gICAgICAuLi5yb3csXG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgb2Y6IHRhYmxlTmFtZSxcbiAgICAgIHV1aWQ6IChyb3cgYXMgeyB1dWlkPzogc3RyaW5nIH0pLnV1aWQgPz8gdXVpZCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgdXBzZXJ0KFxuICAgIHdkYjogS25leCxcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBjaHVua1NpemU/OiBudW1iZXJcbiAgKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLnVwc2VydE9ySW5zZXJ0KHdkYiwgdGFibGVOYW1lLCBcInVwc2VydFwiLCBjaHVua1NpemUpO1xuICB9XG4gIGFzeW5jIGluc2VydE9ubHkoXG4gICAgd2RiOiBLbmV4LFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGNodW5rU2l6ZT86IG51bWJlclxuICApOiBQcm9taXNlPG51bWJlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMudXBzZXJ0T3JJbnNlcnQod2RiLCB0YWJsZU5hbWUsIFwiaW5zZXJ0XCIsIGNodW5rU2l6ZSk7XG4gIH1cblxuICBhc3luYyB1cHNlcnRPckluc2VydChcbiAgICB3ZGI6IEtuZXgsXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgbW9kZTogXCJ1cHNlcnRcIiB8IFwiaW5zZXJ0XCIsXG4gICAgY2h1bmtTaXplPzogbnVtYmVyXG4gICk6IFByb21pc2U8bnVtYmVyW10+IHtcbiAgICBpZiAodGhpcy5oYXNUYWJsZSh0YWJsZU5hbWUpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHRhYmxlID0gdGhpcy50YWJsZXMuZ2V0KHRhYmxlTmFtZSk7XG4gICAgaWYgKHRhYmxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihg7KG07J6s7ZWY7KeAIOyViuuKlCDthYzsnbTruJQgJHt0YWJsZU5hbWV97JeQIHVwc2VydCDsmpTssq1gKTtcbiAgICB9IGVsc2UgaWYgKHRhYmxlLnJvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGFibGVOYW1lfeyXkCB1cHNlcnQg7ZWgIOuNsOydtO2EsOqwgCDsl4bsirXri4jri6QuYCk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGFibGUucm93cy5zb21lKChyb3cpID0+XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHJvdykuc29tZShcbiAgICAgICAgICAoWywgdmFsdWVdKSA9PiBpc1JlZkZpZWxkKHZhbHVlKSAmJiB2YWx1ZS5vZiAhPT0gdGFibGVOYW1lXG4gICAgICAgIClcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0YWJsZU5hbWV9IO2VtOqysOuQmOyngCDslYrsnYAg7LC47KGw6rCAIOyeiOyKteuLiOuLpC5gKTtcbiAgICB9XG5cbiAgICAvLyDsoITssrQg7YWM7J2067iUIOyInO2ajO2VmOyXrCDtmITsnqwg7YWM7J2067iUIOywuOyhsO2VmOuKlCDrqqjrk6Ag7YWM7J2067iUIOy2lOy2nFxuICAgIGNvbnN0IHsgcmVmZXJlbmNlcywgcmVmVGFibGVzIH0gPSBBcnJheS5mcm9tKHRoaXMudGFibGVzKS5yZWR1Y2UoXG4gICAgICAociwgWywgdGFibGVdKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IEFycmF5LmZyb20odGFibGUucmVmZXJlbmNlcy52YWx1ZXMoKSkuZmluZCgocmVmKSA9PlxuICAgICAgICAgIHJlZi5pbmNsdWRlcyh0YWJsZU5hbWUgKyBcIi5cIilcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHJlZmVyZW5jZSkge1xuICAgICAgICAgIHIucmVmZXJlbmNlcy5wdXNoKHJlZmVyZW5jZSk7XG4gICAgICAgICAgci5yZWZUYWJsZXMucHVzaCh0YWJsZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJlZmVyZW5jZXM6IFtdIGFzIHN0cmluZ1tdLFxuICAgICAgICByZWZUYWJsZXM6IFtdIGFzIFRhYmxlRGF0YVtdLFxuICAgICAgfVxuICAgICk7XG4gICAgY29uc3QgZXh0cmFjdEZpZWxkcyA9IF8udW5pcShyZWZlcmVuY2VzKS5tYXAoXG4gICAgICAocmVmZXJlbmNlKSA9PiByZWZlcmVuY2Uuc3BsaXQoXCIuXCIpWzFdXG4gICAgKTtcblxuICAgIC8vIOuCtOu2gCDssLjsobAg7J6I64qUIOqyveyasCDtlYTthLDtlZjsl6wg67aE66asXG4gICAgY29uc3QgZ3JvdXBzID0gXy5ncm91cEJ5KHRhYmxlLnJvd3MsIChyb3cpID0+XG4gICAgICBPYmplY3QuZW50cmllcyhyb3cpLnNvbWUoKFssIHZhbHVlXSkgPT4gaXNSZWZGaWVsZCh2YWx1ZSkpXG4gICAgICAgID8gXCJzZWxmUmVmXCJcbiAgICAgICAgOiBcIm5vcm1hbFwiXG4gICAgKTtcbiAgICBjb25zdCBub3JtYWxSb3dzID0gZ3JvdXBzLm5vcm1hbCA/PyBbXTtcbiAgICBjb25zdCBzZWxmUmVmUm93cyA9IGdyb3Vwcy5zZWxmUmVmID8/IFtdO1xuXG4gICAgY29uc3QgY2h1bmtzID0gY2h1bmtTaXplID8gXy5jaHVuayhub3JtYWxSb3dzLCBjaHVua1NpemUpIDogW25vcm1hbFJvd3NdO1xuICAgIGNvbnN0IHV1aWRNYXAgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuXG4gICAgZm9yIChjb25zdCBjaHVuayBvZiBjaHVua3MpIHtcbiAgICAgIGNvbnN0IHEgPSB3ZGIuaW5zZXJ0KGNodW5rKS5pbnRvKHRhYmxlTmFtZSk7XG4gICAgICBpZiAobW9kZSA9PT0gXCJpbnNlcnRcIikge1xuICAgICAgICBhd2FpdCBxO1xuICAgICAgfSBlbHNlIGlmIChtb2RlID09PSBcInVwc2VydFwiKSB7XG4gICAgICAgIGF3YWl0IHEub25EdXBsaWNhdGVVcGRhdGUuYXBwbHkocSwgT2JqZWN0LmtleXMobm9ybWFsUm93c1swXSkpO1xuICAgICAgfVxuXG4gICAgICAvLyB1cHNlcnTrkJwgcm9365Ok7J2EIOuLpOyLnCDsobDtmoztlZjsl6wgdXVpZE1hcOyXkCDsoIDsnqVcbiAgICAgIGNvbnN0IHV1aWRzID0gY2h1bmsubWFwKChyb3cpID0+IHJvdy51dWlkKTtcbiAgICAgIGNvbnN0IHVwc2VydGVkUm93cyA9IGF3YWl0IHdkYih0YWJsZU5hbWUpXG4gICAgICAgIC5zZWxlY3QoXy51bmlxKFtcInV1aWRcIiwgXCJpZFwiLCAuLi5leHRyYWN0RmllbGRzXSkpXG4gICAgICAgIC53aGVyZUluKFwidXVpZFwiLCB1dWlkcyk7XG4gICAgICB1cHNlcnRlZFJvd3MuZm9yRWFjaCgocm93OiBhbnkpID0+IHtcbiAgICAgICAgdXVpZE1hcC5zZXQocm93LnV1aWQsIHJvdyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyDtlbTri7kg7YWM7J2067iUIOywuOyhsOulvCDsi6TsoJwg67C466WY66GcIOuzgOqyvVxuICAgIHJlZlRhYmxlcy5tYXAoKHRhYmxlKSA9PiB7XG4gICAgICB0YWJsZS5yb3dzID0gdGFibGUucm93cy5tYXAoKHJvdykgPT4ge1xuICAgICAgICBPYmplY3Qua2V5cyhyb3cpLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgICAgY29uc3QgcHJvcCA9IHJvd1trZXldO1xuICAgICAgICAgIGlmIChpc1JlZkZpZWxkKHByb3ApICYmIHByb3Aub2YgPT09IHRhYmxlTmFtZSkge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gdXVpZE1hcC5nZXQocHJvcC51dWlkKTtcbiAgICAgICAgICAgIGlmIChwYXJlbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKHByb3ApO1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYOyhtOyerO2VmOyngCDslYrripQgdXVpZCAke3Byb3AudXVpZH0gLS0gaW4gJHt0YWJsZU5hbWV9YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm93W2tleV0gPSBwYXJlbnRbcHJvcC51c2UgPz8gXCJpZFwiXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcm93O1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBhbGxJZHMgPSBBcnJheS5mcm9tKHV1aWRNYXAudmFsdWVzKCkpLm1hcCgocm93KSA9PiByb3cuaWQpO1xuXG4gICAgLy8g7J6Q6riwIOywuOyhsOqwgCDsnojripQg6rK97JqwIOyerOq3gOyggeycvOuhnCB1cHNlcnRcbiAgICBpZiAoc2VsZlJlZlJvd3MubGVuZ3RoID4gMCkge1xuICAgICAgLy8g7LKY66as65CcIOuNsOydtO2EsOulvCDsoJzsmbjtlZjqs6Ag64uk7IucIHVwc2VydFxuICAgICAgdGFibGUucm93cyA9IHNlbGZSZWZSb3dzO1xuICAgICAgY29uc3Qgc2VsZlJlZklkcyA9IGF3YWl0IHRoaXMudXBzZXJ0KHdkYiwgdGFibGVOYW1lLCBjaHVua1NpemUpO1xuICAgICAgYWxsSWRzLnB1c2goLi4uc2VsZlJlZklkcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIOyekOq4sCDssLjsobDqsIAg7JeG7Jy866m0IO2VtOuLuSDthYzsnbTruJTsnZgg642w7J207YSwIOy0iOq4sO2ZlFxuICAgICAgdGFibGUucm93cyA9IFtdO1xuICAgICAgdGFibGUucmVmZXJlbmNlcy5jbGVhcigpO1xuICAgICAgdGFibGUudW5pcXVlc01hcC5jbGVhcigpO1xuICAgIH1cblxuICAgIHJldHVybiBhbGxJZHM7XG4gIH1cblxuICBhc3luYyB1cGRhdGVCYXRjaChcbiAgICB3ZGI6IEtuZXgsXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGNodW5rU2l6ZT86IG51bWJlcjtcbiAgICAgIHdoZXJlPzogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgfVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBvcHRpb25zID0gXy5kZWZhdWx0cyhvcHRpb25zLCB7XG4gICAgICBjaHVua1NpemU6IDUwMCxcbiAgICAgIHdoZXJlOiBcImlkXCIsXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5oYXNUYWJsZSh0YWJsZU5hbWUpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0YWJsZSA9IHRoaXMudGFibGVzLmdldCh0YWJsZU5hbWUpITtcbiAgICBpZiAodGFibGUucm93cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB3aGVyZUNvbHVtbnMgPSBBcnJheS5pc0FycmF5KG9wdGlvbnMud2hlcmUpXG4gICAgICA/IG9wdGlvbnMud2hlcmVcbiAgICAgIDogW29wdGlvbnMud2hlcmUgPz8gXCJpZFwiXTtcbiAgICBjb25zdCByb3dzID0gdGFibGUucm93cy5tYXAoKF9yb3cpID0+IHtcbiAgICAgIGNvbnN0IHsgdXVpZCwgLi4ucm93IH0gPSBfcm93O1xuICAgICAgcmV0dXJuIHJvdyBhcyBSb3dXaXRoSWQ8c3RyaW5nPjtcbiAgICB9KTtcblxuICAgIGF3YWl0IGJhdGNoVXBkYXRlKHdkYiwgdGFibGVOYW1lLCB3aGVyZUNvbHVtbnMsIHJvd3MsIG9wdGlvbnMuY2h1bmtTaXplKTtcblxuICAgIC8vIHVwZGF0ZUJhdGNoIOyZhOujjCDtm4Qg7LKY66as65CcIOuNsOydtO2EsCDsoJzqsbBcbiAgICB0YWJsZS5yb3dzID0gW107XG4gICAgdGFibGUucmVmZXJlbmNlcy5jbGVhcigpO1xuICAgIHRhYmxlLnVuaXF1ZXNNYXAuY2xlYXIoKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbInJhbmRvbVVVSUQiLCJfIiwiRW50aXR5TWFuYWdlciIsIm5vbk51bGxhYmxlIiwiYmF0Y2hVcGRhdGUiLCJpc1JlZkZpZWxkIiwiZmllbGQiLCJ1bmRlZmluZWQiLCJvZiIsInV1aWQiLCJVcHNlcnRCdWlsZGVyIiwidGFibGVzIiwiTWFwIiwiZ2V0VGFibGUiLCJ0YWJsZU5hbWUiLCJ0YWJsZSIsImdldCIsInRhYmxlU3BlYyIsImdldFRhYmxlU3BlYyIsInNldCIsInJlZmVyZW5jZXMiLCJTZXQiLCJyb3dzIiwidW5pcXVlSW5kZXhlcyIsInVuaXF1ZXNNYXAiLCJoYXNUYWJsZSIsImhhcyIsInJlZ2lzdGVyIiwicm93IiwidW5pcXVlS2V5cyIsIm1hcCIsInVucUluZGV4IiwidW5pcXVlS2V5QXJyYXkiLCJjb2x1bW5zIiwidW5xQ29sIiwidmFsIiwibGVuZ3RoIiwiam9pbiIsImZpbHRlciIsInVuaXF1ZUtleSIsIk9iamVjdCIsImtleXMiLCJyZWR1Y2UiLCJyIiwicm93S2V5Iiwicm93VmFsdWUiLCJ1c2UiLCJhZGQiLCJEYXRlIiwiSlNPTiIsInN0cmluZ2lmeSIsInB1c2giLCJ1cHNlcnQiLCJ3ZGIiLCJjaHVua1NpemUiLCJ1cHNlcnRPckluc2VydCIsImluc2VydE9ubHkiLCJtb2RlIiwiRXJyb3IiLCJzb21lIiwiZW50cmllcyIsInZhbHVlIiwicmVmVGFibGVzIiwiQXJyYXkiLCJmcm9tIiwicmVmZXJlbmNlIiwidmFsdWVzIiwiZmluZCIsInJlZiIsImluY2x1ZGVzIiwiZXh0cmFjdEZpZWxkcyIsInVuaXEiLCJzcGxpdCIsImdyb3VwcyIsImdyb3VwQnkiLCJub3JtYWxSb3dzIiwibm9ybWFsIiwic2VsZlJlZlJvd3MiLCJzZWxmUmVmIiwiY2h1bmtzIiwiY2h1bmsiLCJ1dWlkTWFwIiwicSIsImluc2VydCIsImludG8iLCJvbkR1cGxpY2F0ZVVwZGF0ZSIsImFwcGx5IiwidXVpZHMiLCJ1cHNlcnRlZFJvd3MiLCJzZWxlY3QiLCJ3aGVyZUluIiwiZm9yRWFjaCIsImtleSIsInByb3AiLCJwYXJlbnQiLCJjb25zb2xlIiwiZXJyb3IiLCJhbGxJZHMiLCJpZCIsInNlbGZSZWZJZHMiLCJjbGVhciIsInVwZGF0ZUJhdGNoIiwib3B0aW9ucyIsImRlZmF1bHRzIiwid2hlcmUiLCJ3aGVyZUNvbHVtbnMiLCJpc0FycmF5IiwiX3JvdyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsVUFBVSxRQUFRLFNBQVM7QUFDcEMsWUFBWUMsT0FBTyxZQUFZO0FBRS9CLFNBQVNDLGFBQWEsUUFBUSw4QkFBMkI7QUFDekQsU0FBU0MsV0FBVyxRQUFRLG9CQUFpQjtBQUM3QyxTQUFvQkMsV0FBVyxRQUFRLHFCQUFrQjtBQWF6RCxPQUFPLFNBQVNDLFdBQVdDLEtBQVU7SUFDbkMsT0FDRUEsVUFBVUMsYUFDVkQsVUFBVSxRQUNWQSxNQUFNRSxFQUFFLEtBQUtELGFBQ2JELE1BQU1HLElBQUksS0FBS0Y7QUFFbkI7QUFFQSxPQUFPLE1BQU1HO0lBQ1hDLE9BQStCO0lBQy9CLGFBQWM7UUFDWixJQUFJLENBQUNBLE1BQU0sR0FBRyxJQUFJQztJQUNwQjtJQUVBQyxTQUFTQyxTQUFpQixFQUFhO1FBQ3JDLE1BQU1DLFFBQVEsSUFBSSxDQUFDSixNQUFNLENBQUNLLEdBQUcsQ0FBQ0Y7UUFDOUIsSUFBSUMsVUFBVVIsV0FB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
@@ -1,5 +1,6 @@
1
1
  import { Entity } from "./entity";
2
2
  import { EntityJson } from "../types/types";
3
+ import { AbsolutePath } from "../utils/path-utils";
3
4
  export type EntityNamesRecord = Record<"fs" | "fsPlural" | "camel" | "camelPlural" | "capital" | "capitalPlural" | "upper" | "constant", string>;
4
5
  type TableSpec = {
5
6
  name: string;
@@ -13,7 +14,7 @@ declare class EntityManagerClass {
13
14
  modulePaths: Map<string, string>;
14
15
  private tableSpecs;
15
16
  isAutoloaded: boolean;
16
- autoload(doSilent?: boolean): Promise<void>;
17
+ autoload(_?: boolean): Promise<void>;
17
18
  reload(doSilent?: boolean): Promise<void>;
18
19
  register(json: EntityJson): Promise<void>;
19
20
  get(entityId: string): Entity;
@@ -26,6 +27,7 @@ declare class EntityManagerClass {
26
27
  setTableSpec(tableSpec: TableSpec): void;
27
28
  getTableSpec(key: string): TableSpec;
28
29
  getNamesFromId(entityId: string): EntityNamesRecord;
30
+ getEntityIdFromPath(filePath: AbsolutePath): string;
29
31
  }
30
32
  export declare const EntityManager: EntityManagerClass;
31
33
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"entity-manager.d.ts","sourceRoot":"","sources":["../../src/entity/entity-manager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAI5C,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAClC,IAAI,GACJ,UAAU,GACV,OAAO,GACP,aAAa,GACb,SAAS,GACT,eAAe,GACf,OAAO,GACP,UAAU,EACZ,MAAM,CACP,CAAC;AACF,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;CACvD,CAAC;AACF,cAAM,kBAAkB;IACtB,OAAO,CAAC,QAAQ,CAAkC;IAC3C,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IACpD,OAAO,CAAC,UAAU,CAAqC;IAChD,YAAY,EAAE,OAAO,CAAS;IAG/B,QAAQ,CAAC,QAAQ,GAAE,OAAe;IAgBlC,MAAM,CAAC,QAAQ,GAAE,OAAe;IAmBhC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/C,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAS7B,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAKjC,SAAS,IAAI,MAAM,EAAE;IAIrB,eAAe,IAAI,MAAM,EAAE;IAO3B,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAO1C,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAKpD,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASlC,YAAY,CAAC,SAAS,EAAE,SAAS;IAIjC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IASpC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB;CAoBpD;AAED,eAAO,MAAM,aAAa,oBAA2B,CAAC"}
1
+ {"version":3,"file":"entity-manager.d.ts","sourceRoot":"","sources":["../../src/entity/entity-manager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAClC,IAAI,GACJ,UAAU,GACV,OAAO,GACP,aAAa,GACb,SAAS,GACT,eAAe,GACf,OAAO,GACP,UAAU,EACZ,MAAM,CACP,CAAC;AACF,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;CACvD,CAAC;AACF,cAAM,kBAAkB;IACtB,OAAO,CAAC,QAAQ,CAAkC;IAC3C,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IACpD,OAAO,CAAC,UAAU,CAAqC;IAChD,YAAY,EAAE,OAAO,CAAS;IAG/B,QAAQ,CAAC,CAAC,GAAE,OAAe;IAwB3B,MAAM,CAAC,QAAQ,GAAE,OAAe;IAShC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAS7B,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAKjC,SAAS,IAAI,MAAM,EAAE;IAIrB,eAAe,IAAI,MAAM,EAAE;IAO3B,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAO1C,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAKpD,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASlC,YAAY,CAAC,SAAS,EAAE,SAAS;IAIjC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IASpC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB;IAqBnD,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM;CAKpD;AAED,eAAO,MAAM,aAAa,oBAA2B,CAAC"}