sonamu 0.5.7 → 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 (358) 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.map +1 -1
  11. package/dist/api/decorators.js +142 -2
  12. package/dist/api/index.js +9 -2
  13. package/dist/api/sonamu.d.ts +8 -22
  14. package/dist/api/sonamu.d.ts.map +1 -1
  15. package/dist/api/sonamu.js +482 -2
  16. package/dist/bin/build-config.d.ts +2 -1
  17. package/dist/bin/build-config.d.ts.map +1 -1
  18. package/dist/bin/build-config.js +12 -2
  19. package/dist/bin/cli-wrapper.js +71 -2
  20. package/dist/bin/cli.js +418 -2
  21. package/dist/bin/hot-hook-register.d.ts +11 -0
  22. package/dist/bin/hot-hook-register.d.ts.map +1 -0
  23. package/dist/bin/hot-hook-register.js +21 -0
  24. package/dist/database/_batch_update.js +78 -2
  25. package/dist/database/base-model.js +247 -2
  26. package/dist/database/code-generator.js +53 -2
  27. package/dist/database/db.d.ts +2 -16
  28. package/dist/database/db.d.ts.map +1 -1
  29. package/dist/database/db.js +132 -2
  30. package/dist/database/knex-plugins/knex-on-duplicate-update.js +39 -2
  31. package/dist/database/puri-wrapper.js +109 -2
  32. package/dist/database/puri.d.ts +23 -16
  33. package/dist/database/puri.d.ts.map +1 -1
  34. package/dist/database/puri.js +539 -2
  35. package/dist/database/puri.types.d.ts +8 -3
  36. package/dist/database/puri.types.d.ts.map +1 -1
  37. package/dist/database/puri.types.js +3 -2
  38. package/dist/database/transaction-context.js +14 -2
  39. package/dist/database/upsert-builder.js +215 -2
  40. package/dist/entity/entity-manager.d.ts +3 -1
  41. package/dist/entity/entity-manager.d.ts.map +1 -1
  42. package/dist/entity/entity-manager.js +114 -2
  43. package/dist/entity/entity-utils.js +210 -2
  44. package/dist/entity/entity.d.ts.map +1 -1
  45. package/dist/entity/entity.js +651 -2
  46. package/dist/exceptions/error-handler.js +29 -2
  47. package/dist/exceptions/so-exceptions.js +85 -2
  48. package/dist/file-storage/driver.js +79 -2
  49. package/dist/file-storage/file-storage.js +75 -2
  50. package/dist/index.d.ts +2 -0
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +28 -2
  53. package/dist/migration/code-generation.js +558 -2
  54. package/dist/migration/migration-set.js +364 -2
  55. package/dist/migration/migrator.d.ts +0 -9
  56. package/dist/migration/migrator.d.ts.map +1 -1
  57. package/dist/migration/migrator.js +510 -2
  58. package/dist/migration/types.js +3 -2
  59. package/dist/naite/naite.d.ts +12 -0
  60. package/dist/naite/naite.d.ts.map +1 -0
  61. package/dist/naite/naite.js +72 -0
  62. package/dist/stream/index.js +3 -2
  63. package/dist/stream/sse.js +38 -2
  64. package/dist/syncer/api-parser.d.ts +20 -0
  65. package/dist/syncer/api-parser.d.ts.map +1 -0
  66. package/dist/syncer/api-parser.js +229 -0
  67. package/dist/syncer/checksum.d.ts +21 -0
  68. package/dist/syncer/checksum.d.ts.map +1 -0
  69. package/dist/syncer/checksum.js +98 -0
  70. package/dist/syncer/code-generator.d.ts +20 -0
  71. package/dist/syncer/code-generator.d.ts.map +1 -0
  72. package/dist/syncer/code-generator.js +141 -0
  73. package/dist/syncer/entity-operations.d.ts +17 -0
  74. package/dist/syncer/entity-operations.d.ts.map +1 -0
  75. package/dist/syncer/entity-operations.js +58 -0
  76. package/dist/syncer/file-patterns.d.ts +29 -0
  77. package/dist/syncer/file-patterns.d.ts.map +1 -0
  78. package/dist/syncer/file-patterns.js +38 -0
  79. package/dist/syncer/index.d.ts +6 -0
  80. package/dist/syncer/index.d.ts.map +1 -1
  81. package/dist/syncer/index.js +9 -2
  82. package/dist/syncer/module-loader.d.ts +35 -0
  83. package/dist/syncer/module-loader.d.ts.map +1 -0
  84. package/dist/syncer/module-loader.js +82 -0
  85. package/dist/syncer/syncer.d.ts +93 -108
  86. package/dist/syncer/syncer.d.ts.map +1 -1
  87. package/dist/syncer/syncer.js +375 -2
  88. package/dist/template/entity-converter.d.ts +14 -0
  89. package/dist/template/entity-converter.d.ts.map +1 -0
  90. package/dist/template/entity-converter.js +101 -0
  91. package/dist/template/helpers.d.ts +23 -0
  92. package/dist/template/helpers.d.ts.map +1 -0
  93. package/dist/template/helpers.js +64 -0
  94. package/dist/{templates → template/implementations}/entity.template.d.ts +3 -3
  95. package/dist/template/implementations/entity.template.d.ts.map +1 -0
  96. package/dist/template/implementations/entity.template.js +87 -0
  97. package/dist/{templates → template/implementations}/generated.template.d.ts +3 -3
  98. package/dist/template/implementations/generated.template.d.ts.map +1 -0
  99. package/dist/template/implementations/generated.template.js +232 -0
  100. package/dist/{templates → template/implementations}/generated_http.template.d.ts +3 -3
  101. package/dist/template/implementations/generated_http.template.d.ts.map +1 -0
  102. package/dist/template/implementations/generated_http.template.js +131 -0
  103. package/dist/{templates → template/implementations}/generated_sso.template.d.ts +3 -3
  104. package/dist/template/implementations/generated_sso.template.d.ts.map +1 -0
  105. package/dist/template/implementations/generated_sso.template.js +105 -0
  106. package/dist/{templates → template/implementations}/init_types.template.d.ts +3 -3
  107. package/dist/template/implementations/init_types.template.d.ts.map +1 -0
  108. package/dist/template/implementations/init_types.template.js +38 -0
  109. package/dist/template/implementations/model.template.d.ts +17 -0
  110. package/dist/template/implementations/model.template.d.ts.map +1 -0
  111. package/dist/template/implementations/model.template.js +171 -0
  112. package/dist/{templates → template/implementations}/model_test.template.d.ts +3 -3
  113. package/dist/template/implementations/model_test.template.d.ts.map +1 -0
  114. package/dist/template/implementations/model_test.template.js +35 -0
  115. package/dist/{templates → template/implementations}/service.template.d.ts +6 -6
  116. package/dist/template/implementations/service.template.d.ts.map +1 -0
  117. package/dist/template/implementations/service.template.js +193 -0
  118. package/dist/{templates → template/implementations}/view_enums_buttonset.template.d.ts +3 -3
  119. package/dist/template/implementations/view_enums_buttonset.template.d.ts.map +1 -0
  120. package/dist/template/implementations/view_enums_buttonset.template.js +31 -0
  121. package/dist/{templates → template/implementations}/view_enums_dropdown.template.d.ts +3 -4
  122. package/dist/template/implementations/view_enums_dropdown.template.d.ts.map +1 -0
  123. package/dist/template/implementations/view_enums_dropdown.template.js +50 -0
  124. package/dist/{templates → template/implementations}/view_enums_select.template.d.ts +3 -3
  125. package/dist/template/implementations/view_enums_select.template.d.ts.map +1 -0
  126. package/dist/template/implementations/view_enums_select.template.js +55 -0
  127. package/dist/{templates → template/implementations}/view_form.template.d.ts +5 -5
  128. package/dist/template/implementations/view_form.template.d.ts.map +1 -0
  129. package/dist/template/implementations/view_form.template.js +337 -0
  130. package/dist/{templates → template/implementations}/view_id_all_select.template.d.ts +3 -3
  131. package/dist/template/implementations/view_id_all_select.template.d.ts.map +1 -0
  132. package/dist/template/implementations/view_id_all_select.template.js +31 -0
  133. package/dist/{templates → template/implementations}/view_id_async_select.template.d.ts +3 -3
  134. package/dist/template/implementations/view_id_async_select.template.d.ts.map +1 -0
  135. package/dist/template/implementations/view_id_async_select.template.js +105 -0
  136. package/dist/{templates → template/implementations}/view_list.template.d.ts +5 -13
  137. package/dist/template/implementations/view_list.template.d.ts.map +1 -0
  138. package/dist/template/implementations/view_list.template.js +465 -0
  139. package/dist/{templates → template/implementations}/view_list_columns.template.d.ts +3 -3
  140. package/dist/template/implementations/view_list_columns.template.d.ts.map +1 -0
  141. package/dist/template/implementations/view_list_columns.template.js +49 -0
  142. package/dist/{templates → template/implementations}/view_search_input.template.d.ts +3 -3
  143. package/dist/template/implementations/view_search_input.template.d.ts.map +1 -0
  144. package/dist/template/implementations/view_search_input.template.js +64 -0
  145. package/dist/template/index.d.ts +5 -0
  146. package/dist/template/index.d.ts.map +1 -0
  147. package/dist/template/index.js +6 -0
  148. package/dist/template/template.d.ts +39 -0
  149. package/dist/template/template.d.ts.map +1 -0
  150. package/dist/template/template.js +47 -0
  151. package/dist/template/zod-converter.d.ts +18 -0
  152. package/dist/template/zod-converter.d.ts.map +1 -0
  153. package/dist/template/zod-converter.js +166 -0
  154. package/dist/testing/_relation-graph.js +80 -2
  155. package/dist/testing/fixture-manager.d.ts.map +1 -1
  156. package/dist/testing/fixture-manager.js +521 -2
  157. package/dist/types/types.d.ts +39 -40
  158. package/dist/types/types.d.ts.map +1 -1
  159. package/dist/types/types.js +289 -2
  160. package/dist/typings/knex.d.js +3 -2
  161. package/dist/utils/async-utils.d.ts +7 -0
  162. package/dist/utils/async-utils.d.ts.map +1 -1
  163. package/dist/utils/async-utils.js +57 -2
  164. package/dist/utils/console-util.d.ts +2 -0
  165. package/dist/utils/console-util.d.ts.map +1 -0
  166. package/dist/utils/console-util.js +6 -0
  167. package/dist/utils/controller.js +26 -2
  168. package/dist/utils/esm-utils.d.ts +45 -0
  169. package/dist/utils/esm-utils.d.ts.map +1 -0
  170. package/dist/utils/esm-utils.js +56 -0
  171. package/dist/utils/fs-utils.js +17 -2
  172. package/dist/utils/lodash-able.js +6 -2
  173. package/dist/utils/model.js +22 -2
  174. package/dist/utils/path-utils.d.ts +89 -0
  175. package/dist/utils/path-utils.d.ts.map +1 -0
  176. package/dist/utils/path-utils.js +60 -0
  177. package/dist/utils/process-utils.d.ts +13 -0
  178. package/dist/utils/process-utils.d.ts.map +1 -0
  179. package/dist/utils/process-utils.js +36 -0
  180. package/dist/utils/sql-parser.js +35 -2
  181. package/dist/utils/utils.d.ts +4 -7
  182. package/dist/utils/utils.d.ts.map +1 -1
  183. package/dist/utils/utils.js +33 -2
  184. package/dist/utils/zod-error.d.ts.map +1 -1
  185. package/dist/utils/zod-error.js +19 -2
  186. package/package.json +21 -8
  187. package/src/api/code-converters.ts +2 -2
  188. package/src/api/config.ts +142 -0
  189. package/src/api/context.ts +1 -0
  190. package/src/api/decorators.ts +1 -0
  191. package/src/api/sonamu.ts +81 -67
  192. package/src/bin/build-config.ts +2 -1
  193. package/src/bin/cli-wrapper.ts +10 -3
  194. package/src/bin/cli.ts +108 -56
  195. package/src/bin/hot-hook-register.ts +22 -0
  196. package/src/database/base-model.ts +1 -1
  197. package/src/database/code-generator.ts +1 -1
  198. package/src/database/db.ts +10 -52
  199. package/src/database/puri.ts +78 -53
  200. package/src/database/puri.types.ts +18 -5
  201. package/src/database/upsert-builder.ts +1 -1
  202. package/src/entity/entity-manager.ts +19 -15
  203. package/src/entity/entity.ts +4 -3
  204. package/src/index.ts +2 -0
  205. package/src/migration/code-generation.ts +1 -1
  206. package/src/migration/migration-set.ts +1 -1
  207. package/src/migration/migrator.ts +23 -152
  208. package/src/naite/naite.ts +70 -0
  209. package/src/syncer/api-parser.ts +299 -0
  210. package/src/syncer/checksum.ts +152 -0
  211. package/src/syncer/code-generator.ts +202 -0
  212. package/src/syncer/entity-operations.ts +68 -0
  213. package/src/syncer/file-patterns.ts +56 -0
  214. package/src/syncer/index.ts +6 -0
  215. package/src/syncer/module-loader.ts +125 -0
  216. package/src/syncer/syncer.ts +363 -1420
  217. package/src/template/entity-converter.ts +123 -0
  218. package/src/template/helpers.ts +84 -0
  219. package/src/{templates → template/implementations}/entity.template.ts +4 -4
  220. package/src/{templates → template/implementations}/generated.template.ts +9 -9
  221. package/src/{templates → template/implementations}/generated_http.template.ts +9 -6
  222. package/src/{templates → template/implementations}/generated_sso.template.ts +7 -7
  223. package/src/{templates → template/implementations}/init_types.template.ts +4 -4
  224. package/src/{templates → template/implementations}/model.template.ts +9 -9
  225. package/src/{templates → template/implementations}/model_test.template.ts +5 -5
  226. package/src/{templates → template/implementations}/service.template.ts +19 -11
  227. package/src/{templates → template/implementations}/view_enums_buttonset.template.ts +3 -3
  228. package/src/{templates → template/implementations}/view_enums_dropdown.template.ts +5 -21
  229. package/src/{templates → template/implementations}/view_enums_select.template.ts +4 -4
  230. package/src/{templates → template/implementations}/view_form.template.ts +11 -13
  231. package/src/{templates → template/implementations}/view_id_all_select.template.ts +3 -3
  232. package/src/{templates → template/implementations}/view_id_async_select.template.ts +3 -3
  233. package/src/{templates → template/implementations}/view_list.template.ts +13 -64
  234. package/src/{templates → template/implementations}/view_list_columns.template.ts +3 -3
  235. package/src/{templates → template/implementations}/view_search_input.template.ts +3 -3
  236. package/src/template/index.ts +4 -0
  237. package/src/template/template.ts +86 -0
  238. package/src/template/zod-converter.ts +219 -0
  239. package/src/testing/fixture-manager.ts +8 -1
  240. package/src/types/types.ts +38 -61
  241. package/src/utils/async-utils.ts +17 -0
  242. package/src/utils/console-util.ts +4 -0
  243. package/src/utils/esm-utils.ts +69 -0
  244. package/src/utils/path-utils.ts +102 -0
  245. package/src/utils/process-utils.ts +46 -0
  246. package/src/utils/sql-parser.ts +1 -1
  247. package/src/utils/utils.ts +14 -40
  248. package/src/utils/zod-error.ts +0 -1
  249. package/dist/api/base-frame.js.map +0 -1
  250. package/dist/api/caster.js.map +0 -1
  251. package/dist/api/code-converters.js.map +0 -1
  252. package/dist/api/context.js.map +0 -1
  253. package/dist/api/decorators.js.map +0 -1
  254. package/dist/api/index.js.map +0 -1
  255. package/dist/api/sonamu.js.map +0 -1
  256. package/dist/bin/build-config.js.map +0 -1
  257. package/dist/bin/cli-wrapper.js.map +0 -1
  258. package/dist/bin/cli.js.map +0 -1
  259. package/dist/database/_batch_update.js.map +0 -1
  260. package/dist/database/base-model.js.map +0 -1
  261. package/dist/database/code-generator.js.map +0 -1
  262. package/dist/database/db.js.map +0 -1
  263. package/dist/database/knex-plugins/knex-on-duplicate-update.js.map +0 -1
  264. package/dist/database/puri-wrapper.js.map +0 -1
  265. package/dist/database/puri.js.map +0 -1
  266. package/dist/database/puri.types.js.map +0 -1
  267. package/dist/database/transaction-context.js.map +0 -1
  268. package/dist/database/upsert-builder.js.map +0 -1
  269. package/dist/entity/entity-manager.js.map +0 -1
  270. package/dist/entity/entity-utils.js.map +0 -1
  271. package/dist/entity/entity.js.map +0 -1
  272. package/dist/exceptions/error-handler.js.map +0 -1
  273. package/dist/exceptions/so-exceptions.js.map +0 -1
  274. package/dist/file-storage/driver.js.map +0 -1
  275. package/dist/file-storage/file-storage.js.map +0 -1
  276. package/dist/index.js.map +0 -1
  277. package/dist/migration/code-generation.js.map +0 -1
  278. package/dist/migration/migration-set.js.map +0 -1
  279. package/dist/migration/migrator.js.map +0 -1
  280. package/dist/migration/types.js.map +0 -1
  281. package/dist/stream/index.js.map +0 -1
  282. package/dist/stream/sse.js.map +0 -1
  283. package/dist/syncer/index.js.map +0 -1
  284. package/dist/syncer/syncer.js.map +0 -1
  285. package/dist/templates/base-template.d.ts +0 -13
  286. package/dist/templates/base-template.d.ts.map +0 -1
  287. package/dist/templates/base-template.js +0 -2
  288. package/dist/templates/base-template.js.map +0 -1
  289. package/dist/templates/entity.template.d.ts.map +0 -1
  290. package/dist/templates/entity.template.js +0 -2
  291. package/dist/templates/entity.template.js.map +0 -1
  292. package/dist/templates/generated.template.d.ts.map +0 -1
  293. package/dist/templates/generated.template.js +0 -2
  294. package/dist/templates/generated.template.js.map +0 -1
  295. package/dist/templates/generated_http.template.d.ts.map +0 -1
  296. package/dist/templates/generated_http.template.js +0 -2
  297. package/dist/templates/generated_http.template.js.map +0 -1
  298. package/dist/templates/generated_sso.template.d.ts.map +0 -1
  299. package/dist/templates/generated_sso.template.js +0 -2
  300. package/dist/templates/generated_sso.template.js.map +0 -1
  301. package/dist/templates/index.d.ts +0 -2
  302. package/dist/templates/index.d.ts.map +0 -1
  303. package/dist/templates/index.js +0 -2
  304. package/dist/templates/index.js.map +0 -1
  305. package/dist/templates/init_types.template.d.ts.map +0 -1
  306. package/dist/templates/init_types.template.js +0 -2
  307. package/dist/templates/init_types.template.js.map +0 -1
  308. package/dist/templates/model.template.d.ts +0 -17
  309. package/dist/templates/model.template.d.ts.map +0 -1
  310. package/dist/templates/model.template.js +0 -2
  311. package/dist/templates/model.template.js.map +0 -1
  312. package/dist/templates/model_test.template.d.ts.map +0 -1
  313. package/dist/templates/model_test.template.js +0 -2
  314. package/dist/templates/model_test.template.js.map +0 -1
  315. package/dist/templates/service.template.d.ts.map +0 -1
  316. package/dist/templates/service.template.js +0 -2
  317. package/dist/templates/service.template.js.map +0 -1
  318. package/dist/templates/view_enums_buttonset.template.d.ts.map +0 -1
  319. package/dist/templates/view_enums_buttonset.template.js +0 -2
  320. package/dist/templates/view_enums_buttonset.template.js.map +0 -1
  321. package/dist/templates/view_enums_dropdown.template.d.ts.map +0 -1
  322. package/dist/templates/view_enums_dropdown.template.js +0 -2
  323. package/dist/templates/view_enums_dropdown.template.js.map +0 -1
  324. package/dist/templates/view_enums_select.template.d.ts.map +0 -1
  325. package/dist/templates/view_enums_select.template.js +0 -2
  326. package/dist/templates/view_enums_select.template.js.map +0 -1
  327. package/dist/templates/view_form.template.d.ts.map +0 -1
  328. package/dist/templates/view_form.template.js +0 -2
  329. package/dist/templates/view_form.template.js.map +0 -1
  330. package/dist/templates/view_id_all_select.template.d.ts.map +0 -1
  331. package/dist/templates/view_id_all_select.template.js +0 -2
  332. package/dist/templates/view_id_all_select.template.js.map +0 -1
  333. package/dist/templates/view_id_async_select.template.d.ts.map +0 -1
  334. package/dist/templates/view_id_async_select.template.js +0 -2
  335. package/dist/templates/view_id_async_select.template.js.map +0 -1
  336. package/dist/templates/view_list.template.d.ts.map +0 -1
  337. package/dist/templates/view_list.template.js +0 -2
  338. package/dist/templates/view_list.template.js.map +0 -1
  339. package/dist/templates/view_list_columns.template.d.ts.map +0 -1
  340. package/dist/templates/view_list_columns.template.js +0 -2
  341. package/dist/templates/view_list_columns.template.js.map +0 -1
  342. package/dist/templates/view_search_input.template.d.ts.map +0 -1
  343. package/dist/templates/view_search_input.template.js +0 -2
  344. package/dist/templates/view_search_input.template.js.map +0 -1
  345. package/dist/testing/_relation-graph.js.map +0 -1
  346. package/dist/testing/fixture-manager.js.map +0 -1
  347. package/dist/types/types.js.map +0 -1
  348. package/dist/typings/knex.d.js.map +0 -1
  349. package/dist/utils/async-utils.js.map +0 -1
  350. package/dist/utils/controller.js.map +0 -1
  351. package/dist/utils/fs-utils.js.map +0 -1
  352. package/dist/utils/lodash-able.js.map +0 -1
  353. package/dist/utils/model.js.map +0 -1
  354. package/dist/utils/sql-parser.js.map +0 -1
  355. package/dist/utils/utils.js.map +0 -1
  356. package/dist/utils/zod-error.js.map +0 -1
  357. package/src/templates/base-template.ts +0 -19
  358. package/src/templates/index.ts +0 -1
@@ -1,2 +1,132 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"DB",{enumerable:true,get:function(){return DB}});var _knex=/*#__PURE__*/_interop_require_default(require("knex"));var _path=/*#__PURE__*/_interop_require_default(require("path"));var _lodash=/*#__PURE__*/_interop_require_default(require("lodash"));var _api=require("../api");var _soexceptions=require("../exceptions/so-exceptions");var _async_hooks=require("async_hooks");var _transactioncontext=require("./transaction-context");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 _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interop_require_wildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj}}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={__proto__:null};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj.default=obj;if(cache){cache.set(obj,newObj)}return newObj}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 ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})}keys.push.apply(keys,symbols)}return keys}function _object_spread_props(target,source){source=source!=null?source:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source))}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}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}}}var DBClass=/*#__PURE__*/function(){"use strict";function DBClass(){_class_call_check(this,DBClass);_define_property(this,"wdb",void 0);_define_property(this,"rdb",void 0);_define_property(this,"transactionStorage",new _async_hooks.AsyncLocalStorage);_define_property(this,"testTransaction",null)}_create_class(DBClass,[{key:"runWithTransaction",value:function runWithTransaction(callback){return this.transactionStorage.run(new _transactioncontext.TransactionContext,callback)}},{key:"getTransactionContext",value:function getTransactionContext(){var _this_transactionStorage_getStore;return(_this_transactionStorage_getStore=this.transactionStorage.getStore())!==null&&_this_transactionStorage_getStore!==void 0?_this_transactionStorage_getStore:new _transactioncontext.TransactionContext}},{key:"readKnexfile",value:function readKnexfile(){return _async_to_generator(function(){var dbConfigPath,_knexfileModule_default,knexfileModule,_knexfileModule_default_default,_ref,config,e;return _ts_generator(this,function(_state){switch(_state.label){case 0:dbConfigPath=_path.default.join(_api.Sonamu.apiRootPath,"/dist/configs/db.js");_state.label=1;case 1:_state.trys.push([1,3,,4]);return[4,Promise.resolve(dbConfigPath).then(function(p){return /*#__PURE__*/_interop_require_wildcard(require(p))})];case 2:knexfileModule=_state.sent();config=(_ref=(_knexfileModule_default_default=(_knexfileModule_default=knexfileModule.default)===null||_knexfileModule_default===void 0?void 0:_knexfileModule_default.default)!==null&&_knexfileModule_default_default!==void 0?_knexfileModule_default_default:knexfileModule.default)!==null&&_ref!==void 0?_ref:knexfileModule;return[2,this.generateDBConfig(config)];case 3:e=_state.sent();return[3,4];case 4:throw new _soexceptions.ServiceUnavailableException("다음 경로에서 DB설정 파일을 찾을 수 없습니다: ".concat(dbConfigPath,". 먼저 빌드(yarn build)를 수행해주세요."))}})}).call(this)}},{key:"getDB",value:function getDB(which){var dbConfig=_api.Sonamu.dbConfig;if(process.env.NODE_ENV==="test"){if(this.testTransaction){return this.testTransaction}else if(this.wdb){return this.wdb}else{this["wdb"]=(0,_knex.default)(_object_spread_props(_object_spread({},dbConfig["test"]),{pool:{min:1,max:1}}));return this["wdb"]}}var instanceName=which==="w"?"wdb":"rdb";if(!this[instanceName]){var config;var _process_env_NODE_ENV;switch((_process_env_NODE_ENV=process.env.NODE_ENV)!==null&&_process_env_NODE_ENV!==void 0?_process_env_NODE_ENV:"development"){case"development":case"staging":var _dbConfig_development_slave;config=which==="w"?dbConfig["development_master"]:(_dbConfig_development_slave=dbConfig["development_slave"])!==null&&_dbConfig_development_slave!==void 0?_dbConfig_development_slave:dbConfig["development_master"];break;case"production":var _dbConfig_production_slave;config=which==="w"?dbConfig["production_master"]:(_dbConfig_production_slave=dbConfig["production_slave"])!==null&&_dbConfig_production_slave!==void 0?_dbConfig_production_slave:dbConfig["production_master"];break;default:throw new Error("현재 ENV ".concat(process.env.NODE_ENV,"에는 설정 가능한 DB설정이 없습니다."))}this[instanceName]=(0,_knex.default)(config)}return this[instanceName]}},{key:"destroy",value:function destroy(){return _async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:if(!(this.wdb!==undefined))return[3,2];return[4,this.wdb.destroy()];case 1:_state.sent();this.wdb=undefined;_state.label=2;case 2:if(!(this.rdb!==undefined))return[3,4];return[4,this.rdb.destroy()];case 3:_state.sent();this.rdb=undefined;_state.label=4;case 4:return[2]}})}).call(this)}},{key:"generateDBConfig",value:function generateDBConfig(config){var _config_defaultOptions,_config_defaultOptions1,_config_defaultOptions2,_config_environments,_config_environments1,_config_environments2,_config_environments3,_config_environments4;var defaultKnexConfig=_lodash.default.merge({client:"mysql2",pool:{min:1,max:5},migrations:{extension:"js",directory:"./dist/migrations"},connection:_object_spread({database:config.database},(_config_defaultOptions=config.defaultOptions)===null||_config_defaultOptions===void 0?void 0:_config_defaultOptions.connection)},config.defaultOptions);var test=_lodash.default.merge({},defaultKnexConfig,{connection:_object_spread({database:"".concat(config.database,"_test")},(_config_defaultOptions1=config.defaultOptions)===null||_config_defaultOptions1===void 0?void 0:_config_defaultOptions1.connection)});var fixture_local=_lodash.default.merge({},defaultKnexConfig,{connection:_object_spread({database:"".concat(config.database,"_fixture_local")},(_config_defaultOptions2=config.defaultOptions)===null||_config_defaultOptions2===void 0?void 0:_config_defaultOptions2.connection)});var devMasterOptions=(_config_environments=config.environments)===null||_config_environments===void 0?void 0:_config_environments.development;var devSlaveOptions=(_config_environments1=config.environments)===null||_config_environments1===void 0?void 0:_config_environments1.development_slave;var development_master=_lodash.default.merge({},defaultKnexConfig,devMasterOptions);var development_slave=_lodash.default.merge({},defaultKnexConfig,devMasterOptions,devSlaveOptions);var fixture_remote=_lodash.default.merge({},defaultKnexConfig,devMasterOptions,{connection:{database:"".concat(config.database,"_fixture_remote")}},(_config_environments2=config.environments)===null||_config_environments2===void 0?void 0:_config_environments2.remote_fixture);var _config_environments_production;var prodMasterOptions=(_config_environments_production=(_config_environments3=config.environments)===null||_config_environments3===void 0?void 0:_config_environments3.production)!==null&&_config_environments_production!==void 0?_config_environments_production:{};var _config_environments_production_slave;var prodSlaveOptions=(_config_environments_production_slave=(_config_environments4=config.environments)===null||_config_environments4===void 0?void 0:_config_environments4.production_slave)!==null&&_config_environments_production_slave!==void 0?_config_environments_production_slave:{};var production_master=_lodash.default.merge({},defaultKnexConfig,prodMasterOptions);var production_slave=_lodash.default.merge({},defaultKnexConfig,prodMasterOptions,prodSlaveOptions);return{test:test,fixture_local:fixture_local,fixture_remote:fixture_remote,development_master:development_master,development_slave:development_slave,production_master:production_master,production_slave:production_slave}}},{key:"createTestTransaction",value:function createTestTransaction(){return _async_to_generator(function(){var db,_;return _ts_generator(this,function(_state){switch(_state.label){case 0:db=this.getDB("w");_=this;return[4,db.transaction()];case 1:_.testTransaction=_state.sent();return[2,this.testTransaction]}})}).call(this)}},{key:"clearTestTransaction",value:function clearTestTransaction(){return _async_to_generator(function(){var _this_testTransaction;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,(_this_testTransaction=this.testTransaction)===null||_this_testTransaction===void 0?void 0:_this_testTransaction.rollback()];case 1:_state.sent();this.testTransaction=null;return[2]}})}).call(this)}}]);return DBClass}();var DB=new DBClass;
2
- //# sourceMappingURL=db.js.map
1
+ import knex from "knex";
2
+ import * as _ from "lodash-es";
3
+ import { Sonamu } from "../api/index.js";
4
+ import { AsyncLocalStorage } from "async_hooks";
5
+ import { TransactionContext } from "./transaction-context.js";
6
+ class DBClass {
7
+ wdb;
8
+ rdb;
9
+ transactionStorage = new AsyncLocalStorage();
10
+ runWithTransaction(callback) {
11
+ return this.transactionStorage.run(new TransactionContext(), callback);
12
+ }
13
+ getTransactionContext() {
14
+ return this.transactionStorage.getStore() ?? new TransactionContext();
15
+ }
16
+ getDB(which) {
17
+ const dbConfig = Sonamu.dbConfig;
18
+ // 테스트 트랜잭션 격리
19
+ if (process.env.NODE_ENV === "test") {
20
+ if (this.testTransaction) {
21
+ return this.testTransaction;
22
+ } else if (this.wdb) {
23
+ return this.wdb;
24
+ } else {
25
+ this["wdb"] = knex({
26
+ ...dbConfig["test"],
27
+ // 단일 풀
28
+ pool: {
29
+ min: 1,
30
+ max: 1
31
+ }
32
+ });
33
+ return this["wdb"];
34
+ }
35
+ }
36
+ const instanceName = which === "w" ? "wdb" : "rdb";
37
+ if (!this[instanceName]) {
38
+ let config;
39
+ switch(process.env.NODE_ENV ?? "development"){
40
+ case "development":
41
+ case "staging":
42
+ config = which === "w" ? dbConfig["development_master"] : dbConfig["development_slave"] ?? dbConfig["development_master"];
43
+ break;
44
+ case "production":
45
+ config = which === "w" ? dbConfig["production_master"] : dbConfig["production_slave"] ?? dbConfig["production_master"];
46
+ break;
47
+ default:
48
+ throw new Error(`현재 ENV ${process.env.NODE_ENV}에는 설정 가능한 DB설정이 없습니다.`);
49
+ }
50
+ this[instanceName] = knex(config);
51
+ }
52
+ return this[instanceName];
53
+ }
54
+ async destroy() {
55
+ if (this.wdb !== undefined) {
56
+ await this.wdb.destroy();
57
+ this.wdb = undefined;
58
+ }
59
+ if (this.rdb !== undefined) {
60
+ await this.rdb.destroy();
61
+ this.rdb = undefined;
62
+ }
63
+ }
64
+ generateDBConfig(config) {
65
+ const defaultKnexConfig = _.merge({
66
+ client: "mysql2",
67
+ pool: {
68
+ min: 1,
69
+ max: 5
70
+ },
71
+ migrations: {
72
+ directory: "./src/migrations"
73
+ },
74
+ connection: {
75
+ database: config.name,
76
+ ...config.defaultOptions?.connection
77
+ }
78
+ }, config.defaultOptions);
79
+ // 로컬 환경 설정
80
+ const test = _.merge({}, defaultKnexConfig, {
81
+ connection: {
82
+ database: `${config.name}_test`,
83
+ ...config.defaultOptions?.connection
84
+ }
85
+ });
86
+ const fixture_local = _.merge({}, defaultKnexConfig, {
87
+ connection: {
88
+ database: `${config.name}_fixture_local`,
89
+ ...config.defaultOptions?.connection
90
+ }
91
+ });
92
+ // 개발 환경 설정
93
+ const devMasterOptions = config.environments?.development;
94
+ const devSlaveOptions = config.environments?.development_slave;
95
+ const development_master = _.merge({}, defaultKnexConfig, devMasterOptions);
96
+ const development_slave = _.merge({}, defaultKnexConfig, devMasterOptions, devSlaveOptions);
97
+ // NOTE: fixture remote는 default connection의 DB를 override해선 안됨.
98
+ const fixture_remote = _.merge({}, defaultKnexConfig, devMasterOptions, {
99
+ connection: {
100
+ database: `${config.name}_fixture_remote`
101
+ }
102
+ }, config.environments?.remote_fixture);
103
+ // 프로덕션 환경 설정
104
+ const prodMasterOptions = config.environments?.production ?? {};
105
+ const prodSlaveOptions = config.environments?.production_slave ?? {};
106
+ const production_master = _.merge({}, defaultKnexConfig, prodMasterOptions);
107
+ const production_slave = _.merge({}, defaultKnexConfig, prodMasterOptions, prodSlaveOptions);
108
+ return {
109
+ test,
110
+ fixture_local,
111
+ fixture_remote,
112
+ development_master,
113
+ development_slave,
114
+ production_master,
115
+ production_slave
116
+ };
117
+ }
118
+ // Test 환경에서 트랜잭션 사용
119
+ testTransaction = null;
120
+ async createTestTransaction() {
121
+ const db = this.getDB("w");
122
+ this.testTransaction = await db.transaction();
123
+ return this.testTransaction;
124
+ }
125
+ async clearTestTransaction() {
126
+ await this.testTransaction?.rollback();
127
+ this.testTransaction = null;
128
+ }
129
+ }
130
+ export const DB = new DBClass();
131
+
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS9kYi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBEQlByZXNldCA9IFwid1wiIHwgXCJyXCI7XG5pbXBvcnQga25leCwgeyBLbmV4IH0gZnJvbSBcImtuZXhcIjtcbmltcG9ydCAqIGFzIF8gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaVwiO1xuaW1wb3J0IHsgQXN5bmNMb2NhbFN0b3JhZ2UgfSBmcm9tIFwiYXN5bmNfaG9va3NcIjtcbmltcG9ydCB7IFRyYW5zYWN0aW9uQ29udGV4dCB9IGZyb20gXCIuL3RyYW5zYWN0aW9uLWNvbnRleHRcIjtcbmltcG9ydCB7IERhdGFiYXNlQ29uZmlnLCBTb25hbXVDb25maWcgfSBmcm9tIFwiLi4vYXBpL2NvbmZpZ1wiO1xuXG5leHBvcnQgdHlwZSBTb25hbXVEQkNvbmZpZyA9IHtcbiAgZGV2ZWxvcG1lbnRfbWFzdGVyOiBLbmV4LkNvbmZpZztcbiAgZGV2ZWxvcG1lbnRfc2xhdmU6IEtuZXguQ29uZmlnO1xuICB0ZXN0OiBLbmV4LkNvbmZpZztcbiAgZml4dHVyZV9sb2NhbDogS25leC5Db25maWc7XG4gIGZpeHR1cmVfcmVtb3RlOiBLbmV4LkNvbmZpZztcbiAgcHJvZHVjdGlvbl9tYXN0ZXI6IEtuZXguQ29uZmlnO1xuICBwcm9kdWN0aW9uX3NsYXZlOiBLbmV4LkNvbmZpZztcbn07XG5cbmNsYXNzIERCQ2xhc3Mge1xuICBwcml2YXRlIHdkYj86IEtuZXg7XG4gIHByaXZhdGUgcmRiPzogS25leDtcblxuICBwdWJsaWMgdHJhbnNhY3Rpb25TdG9yYWdlID0gbmV3IEFzeW5jTG9jYWxTdG9yYWdlPFRyYW5zYWN0aW9uQ29udGV4dD4oKTtcblxuICBwdWJsaWMgcnVuV2l0aFRyYW5zYWN0aW9uPFQ+KGNhbGxiYWNrOiAoKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb25TdG9yYWdlLnJ1bihuZXcgVHJhbnNhY3Rpb25Db250ZXh0KCksIGNhbGxiYWNrKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUcmFuc2FjdGlvbkNvbnRleHQoKTogVHJhbnNhY3Rpb25Db250ZXh0IHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvblN0b3JhZ2UuZ2V0U3RvcmUoKSA/PyBuZXcgVHJhbnNhY3Rpb25Db250ZXh0KCk7XG4gIH1cblxuICBnZXREQih3aGljaDogREJQcmVzZXQpOiBLbmV4IHtcbiAgICBjb25zdCBkYkNvbmZpZyA9IFNvbmFtdS5kYkNvbmZpZztcblxuICAgIC8vIO2FjOyKpO2KuCDtirjrnpzsnq3shZgg6rKp66asXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInRlc3RcIikge1xuICAgICAgaWYgKHRoaXMudGVzdFRyYW5zYWN0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRlc3RUcmFuc2FjdGlvbjtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy53ZGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2RiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpc1tcIndkYlwiXSA9IGtuZXgoe1xuICAgICAgICAgIC4uLmRiQ29uZmlnW1widGVzdFwiXSxcbiAgICAgICAgICAvLyDri6jsnbwg7ZKAXG4gICAgICAgICAgcG9vbDoge1xuICAgICAgICAgICAgbWluOiAxLFxuICAgICAgICAgICAgbWF4OiAxLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpc1tcIndkYlwiXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBpbnN0YW5jZU5hbWUgPSB3aGljaCA9PT0gXCJ3XCIgPyBcIndkYlwiIDogXCJyZGJcIjtcblxuICAgIGlmICghdGhpc1tpbnN0YW5jZU5hbWVdKSB7XG4gICAgICBsZXQgY29uZmlnOiBLbmV4LkNvbmZpZztcbiAgICAgIHN3aXRjaCAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPz8gXCJkZXZlbG9wbWVudFwiKSB7XG4gICAgICAgIGNhc2UgXCJkZXZlbG9wbWVudFwiOlxuICAgICAgICBjYXNlIFwic3RhZ2luZ1wiOlxuICAgICAgICAgIGNvbmZpZyA9XG4gICAgICAgICAgICB3aGljaCA9PT0gXCJ3XCJcbiAgICAgICAgICAgICAgPyBkYkNvbmZpZ1tcImRldmVsb3BtZW50X21hc3RlclwiXVxuICAgICAgICAgICAgICA6IChkYkNvbmZpZ1tcImRldmVsb3BtZW50X3NsYXZlXCJdID8/XG4gICAgICAgICAgICAgICAgZGJDb25maWdbXCJkZXZlbG9wbWVudF9tYXN0ZXJcIl0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicHJvZHVjdGlvblwiOlxuICAgICAgICAgIGNvbmZpZyA9XG4gICAgICAgICAgICB3aGljaCA9PT0gXCJ3XCJcbiAgICAgICAgICAgICAgPyBkYkNvbmZpZ1tcInByb2R1Y3Rpb25fbWFzdGVyXCJdXG4gICAgICAgICAgICAgIDogKGRiQ29uZmlnW1wicHJvZHVjdGlvbl9zbGF2ZVwiXSA/PyBkYkNvbmZpZ1tcInByb2R1Y3Rpb25fbWFzdGVyXCJdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBg7ZiE7J6sIEVOViAke3Byb2Nlc3MuZW52Lk5PREVfRU5WfeyXkOuKlCDshKTsoJUg6rCA64ql7ZWcIERC7ISk7KCV7J20IOyXhuyKteuLiOuLpC5gXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXNbaW5zdGFuY2VOYW1lXSA9IGtuZXgoY29uZmlnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1tpbnN0YW5jZU5hbWVdITtcbiAgfVxuXG4gIGFzeW5jIGRlc3Ryb3koKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMud2RiICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGF3YWl0IHRoaXMud2RiLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMud2RiID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZGIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXdhaXQgdGhpcy5yZGIuZGVzdHJveSgpO1xuICAgICAgdGhpcy5yZGIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdlbmVyYXRlREJDb25maWcoY29uZmlnOiBTb25hbXVDb25maWdbXCJkYXRhYmFzZVwiXSk6IFNvbmFtdURCQ29uZmlnIHtcbiAgICBjb25zdCBkZWZhdWx0S25leENvbmZpZzogUGFydGlhbDxEYXRhYmFzZUNvbmZpZz4gPSBfLm1lcmdlKFxuICAgICAge1xuICAgICAgICBjbGllbnQ6IFwibXlzcWwyXCIsXG4gICAgICAgIHBvb2w6IHtcbiAgICAgICAgICBtaW46IDEsXG4gICAgICAgICAgbWF4OiA1LFxuICAgICAgICB9LFxuICAgICAgICBtaWdyYXRpb25zOiB7XG4gICAgICAgICAgZGlyZWN0b3J5OiBcIi4vc3JjL21pZ3JhdGlvbnNcIixcbiAgICAgICAgfSxcbiAgICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICAgIGRhdGFiYXNlOiBjb25maWcubmFtZSxcbiAgICAgICAgICAuLi5jb25maWcuZGVmYXVsdE9wdGlvbnM/LmNvbm5lY3Rpb24sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgY29uZmlnLmRlZmF1bHRPcHRpb25zXG4gICAgKTtcblxuICAgIC8vIOuhnOy7rCDtmZjqsr0g7ISk7KCVXG4gICAgY29uc3QgdGVzdDogRGF0YWJhc2VDb25maWcgPSBfLm1lcmdlKHt9LCBkZWZhdWx0S25leENvbmZpZywge1xuICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICBkYXRhYmFzZTogYCR7Y29uZmlnLm5hbWV9X3Rlc3RgLFxuICAgICAgICAuLi5jb25maWcuZGVmYXVsdE9wdGlvbnM/LmNvbm5lY3Rpb24sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgZml4dHVyZV9sb2NhbCA9IF8ubWVyZ2Uoe30sIGRlZmF1bHRLbmV4Q29uZmlnLCB7XG4gICAgICBjb25uZWN0aW9uOiB7XG4gICAgICAgIGRhdGFiYXNlOiBgJHtjb25maWcubmFtZX1fZml4dHVyZV9sb2NhbGAsXG4gICAgICAgIC4uLmNvbmZpZy5kZWZhdWx0T3B0aW9ucz8uY29ubmVjdGlvbixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyDqsJzrsJwg7ZmY6rK9IOyEpOyglVxuICAgIGNvbnN0IGRldk1hc3Rlck9wdGlvbnMgPSBjb25maWcuZW52aXJvbm1lbnRzPy5kZXZlbG9wbWVudDtcbiAgICBjb25zdCBkZXZTbGF2ZU9wdGlvbnMgPSBjb25maWcuZW52aXJvbm1lbnRzPy5kZXZlbG9wbWVudF9zbGF2ZTtcbiAgICBjb25zdCBkZXZlbG9wbWVudF9tYXN0ZXIgPSBfLm1lcmdlKHt9LCBkZWZhdWx0S25leENvbmZpZywgZGV2TWFzdGVyT3B0aW9ucyk7XG4gICAgY29uc3QgZGV2ZWxvcG1lbnRfc2xhdmUgPSBfLm1lcmdlKFxuICAgICAge30sXG4gICAgICBkZWZhdWx0S25leENvbmZpZyxcbiAgICAgIGRldk1hc3Rlck9wdGlvbnMsXG4gICAgICBkZXZTbGF2ZU9wdGlvbnNcbiAgICApO1xuICAgIC8vIE5PVEU6IGZpeHR1cmUgcmVtb3Rl64qUIGRlZmF1bHQgY29ubmVjdGlvbuydmCBEQuulvCBvdmVycmlkZe2VtOyEoCDslYjrkKguXG4gICAgY29uc3QgZml4dHVyZV9yZW1vdGUgPSBfLm1lcmdlKFxuICAgICAge30sXG4gICAgICBkZWZhdWx0S25leENvbmZpZyxcbiAgICAgIGRldk1hc3Rlck9wdGlvbnMsXG4gICAgICB7XG4gICAgICAgIGNvbm5lY3Rpb246IHtcbiAgICAgICAgICBkYXRhYmFzZTogYCR7Y29uZmlnLm5hbWV9X2ZpeHR1cmVfcmVtb3RlYCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBjb25maWcuZW52aXJvbm1lbnRzPy5yZW1vdGVfZml4dHVyZVxuICAgICk7XG5cbiAgICAvLyDtlITroZzrjZXshZgg7ZmY6rK9IOyEpOyglVxuICAgIGNvbnN0IHByb2RNYXN0ZXJPcHRpb25zID0gY29uZmlnLmVudmlyb25tZW50cz8ucHJvZHVjdGlvbiA/PyB7fTtcbiAgICBjb25zdCBwcm9kU2xhdmVPcHRpb25zID0gY29uZmlnLmVudmlyb25tZW50cz8ucHJvZHVjdGlvbl9zbGF2ZSA/PyB7fTtcbiAgICBjb25zdCBwcm9kdWN0aW9uX21hc3RlciA9IF8ubWVyZ2Uoe30sIGRlZmF1bHRLbmV4Q29uZmlnLCBwcm9kTWFzdGVyT3B0aW9ucyk7XG4gICAgY29uc3QgcHJvZHVjdGlvbl9zbGF2ZSA9IF8ubWVyZ2UoXG4gICAgICB7fSxcbiAgICAgIGRlZmF1bHRLbmV4Q29uZmlnLFxuICAgICAgcHJvZE1hc3Rlck9wdGlvbnMsXG4gICAgICBwcm9kU2xhdmVPcHRpb25zXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICB0ZXN0LFxuICAgICAgZml4dHVyZV9sb2NhbCxcbiAgICAgIGZpeHR1cmVfcmVtb3RlLFxuICAgICAgZGV2ZWxvcG1lbnRfbWFzdGVyLFxuICAgICAgZGV2ZWxvcG1lbnRfc2xhdmUsXG4gICAgICBwcm9kdWN0aW9uX21hc3RlcixcbiAgICAgIHByb2R1Y3Rpb25fc2xhdmUsXG4gICAgfTtcbiAgfVxuXG4gIC8vIFRlc3Qg7ZmY6rK97JeQ7IScIO2KuOuenOyereyFmCDsgqzsmqlcbiAgcHVibGljIHRlc3RUcmFuc2FjdGlvbjogS25leC5UcmFuc2FjdGlvbiB8IG51bGwgPSBudWxsO1xuICBhc3luYyBjcmVhdGVUZXN0VHJhbnNhY3Rpb24oKTogUHJvbWlzZTxLbmV4LlRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgZGIgPSB0aGlzLmdldERCKFwid1wiKTtcbiAgICB0aGlzLnRlc3RUcmFuc2FjdGlvbiA9IGF3YWl0IGRiLnRyYW5zYWN0aW9uKCk7XG4gICAgcmV0dXJuIHRoaXMudGVzdFRyYW5zYWN0aW9uO1xuICB9XG4gIGFzeW5jIGNsZWFyVGVzdFRyYW5zYWN0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMudGVzdFRyYW5zYWN0aW9uPy5yb2xsYmFjaygpO1xuICAgIHRoaXMudGVzdFRyYW5zYWN0aW9uID0gbnVsbDtcbiAgfVxufVxuZXhwb3J0IGNvbnN0IERCID0gbmV3IERCQ2xhc3MoKTtcbiJdLCJuYW1lcyI6WyJrbmV4IiwiXyIsIlNvbmFtdSIsIkFzeW5jTG9jYWxTdG9yYWdlIiwiVHJhbnNhY3Rpb25Db250ZXh0IiwiREJDbGFzcyIsIndkYiIsInJkYiIsInRyYW5zYWN0aW9uU3RvcmFnZSIsInJ1bldpdGhUcmFuc2FjdGlvbiIsImNhbGxiYWNrIiwicnVuIiwiZ2V0VHJhbnNhY3Rpb25Db250ZXh0IiwiZ2V0U3RvcmUiLCJnZXREQiIsIndoaWNoIiwiZGJDb25maWciLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJ0ZXN0VHJhbnNhY3Rpb24iLCJwb29sIiwibWluIiwibWF4IiwiaW5zdGFuY2VOYW1lIiwiY29uZmlnIiwiRXJyb3IiLCJkZXN0cm95IiwidW5kZWZpbmVkIiwiZ2VuZXJhdGVEQkNvbmZpZyIsImRlZmF1bHRLbmV4Q29uZmlnIiwibWVyZ2UiLCJjbGllbnQiLCJtaWdyYXRpb25zIiwiZGlyZWN0b3J5IiwiY29ubmVjdGlvbiIsImRhdGFiYXNlIiwibmFtZSIsImRlZmF1bHRPcHRpb25zIiwidGVzdCIsImZpeHR1cmVfbG9jYWwiLCJkZXZNYXN0ZXJPcHRpb25zIiwiZW52aXJvbm1lbnRzIiwiZGV2ZWxvcG1lbnQiLCJkZXZTbGF2ZU9wdGlvbnMiLCJkZXZlbG9wbWVudF9zbGF2ZSIsImRldmVsb3BtZW50X21hc3RlciIsImZpeHR1cmVfcmVtb3RlIiwicmVtb3RlX2ZpeHR1cmUiLCJwcm9kTWFzdGVyT3B0aW9ucyIsInByb2R1Y3Rpb24iLCJwcm9kU2xhdmVPcHRpb25zIiwicHJvZHVjdGlvbl9zbGF2ZSIsInByb2R1Y3Rpb25fbWFzdGVyIiwiY3JlYXRlVGVzdFRyYW5zYWN0aW9uIiwiZGIiLCJ0cmFuc2FjdGlvbiIs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
@@ -1,2 +1,39 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"attachOnDuplicateUpdate",{enumerable:true,get:function(){return attachOnDuplicateUpdate}});var _knex=/*#__PURE__*/_interop_require_default(require("knex"));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_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}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 _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 _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 attachOnDuplicateUpdate(){try{_knex.default.QueryBuilder.extend("onDuplicateUpdate",function(){for(var _len=arguments.length,columns=new Array(_len),_key=0;_key<_len;_key++){columns[_key]=arguments[_key]}if(columns.length===0){var _this_toSQL=this.toSQL(),originalSQL=_this_toSQL.sql,originalBindings=_this_toSQL.bindings;return this.client.raw(originalSQL,originalBindings)}var _columns_reduce=columns.reduce(function(result,column){if(typeof column==="string"){result.placeholders.push("?? = Values(??)");result.bindings.push(column,column)}else if(column&&(typeof column==="undefined"?"undefined":_type_of(column))==="object"){Object.keys(column).forEach(function(key){result.placeholders.push("?? = ?");result.bindings.push(key,column[key])})}else{throw new Error("onDuplicateUpdate error: expected column name to be string or object.")}return result},{placeholders:[],bindings:[]}),placeholders=_columns_reduce.placeholders,bindings=_columns_reduce.bindings;var _this_toSQL1=this.toSQL(),originalSQL1=_this_toSQL1.sql,originalBindings1=_this_toSQL1.bindings;var newBindings=_to_consumable_array(originalBindings1).concat(_to_consumable_array(bindings));return this.client.raw("".concat(originalSQL1," ON DUPLICATE KEY UPDATE ").concat(placeholders.join(", ")),newBindings)})}catch(e){}}
2
- //# sourceMappingURL=knex-on-duplicate-update.js.map
1
+ import knex from "knex";
2
+ export function attachOnDuplicateUpdate() {
3
+ try {
4
+ knex.QueryBuilder.extend("onDuplicateUpdate", function(...columns) {
5
+ if (columns.length === 0) {
6
+ // 업데이트 할 컬럼이 없으면 onDuplicateUpdate 구문 처리 패스
7
+ const { sql: originalSQL, bindings: originalBindings } = this.toSQL();
8
+ return this.client.raw(originalSQL, originalBindings);
9
+ }
10
+ const { placeholders, bindings } = columns.reduce((result, column)=>{
11
+ if (typeof column === "string") {
12
+ result.placeholders.push(`?? = Values(??)`);
13
+ result.bindings.push(column, column);
14
+ } else if (column && typeof column === "object") {
15
+ Object.keys(column).forEach((key)=>{
16
+ result.placeholders.push(`?? = ?`);
17
+ result.bindings.push(key, column[key]);
18
+ });
19
+ } else {
20
+ throw new Error("onDuplicateUpdate error: expected column name to be string or object.");
21
+ }
22
+ return result;
23
+ }, {
24
+ placeholders: [],
25
+ bindings: []
26
+ });
27
+ const { sql: originalSQL, bindings: originalBindings } = this.toSQL();
28
+ const newBindings = [
29
+ ...originalBindings,
30
+ ...bindings
31
+ ];
32
+ return this.client.raw(`${originalSQL} ON DUPLICATE KEY UPDATE ${placeholders.join(", ")}`, newBindings);
33
+ });
34
+ } catch {
35
+ // ignored
36
+ }
37
+ }
38
+
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRhYmFzZS9rbmV4LXBsdWdpbnMva25leC1vbi1kdXBsaWNhdGUtdXBkYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBrbmV4IGZyb20gXCJrbmV4XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hPbkR1cGxpY2F0ZVVwZGF0ZSgpIHtcbiAgdHJ5IHtcbiAgICBrbmV4LlF1ZXJ5QnVpbGRlci5leHRlbmQoXCJvbkR1cGxpY2F0ZVVwZGF0ZVwiLCBmdW5jdGlvbiAoLi4uY29sdW1ucykge1xuICAgICAgaWYgKGNvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIC8vIOyXheuNsOydtO2KuCDtlaAg7Lus65+87J20IOyXhuycvOuptCBvbkR1cGxpY2F0ZVVwZGF0ZSDqtazrrLgg7LKY66asIO2MqOyKpFxuICAgICAgICBjb25zdCB7IHNxbDogb3JpZ2luYWxTUUwsIGJpbmRpbmdzOiBvcmlnaW5hbEJpbmRpbmdzIH0gPSB0aGlzLnRvU1FMKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmNsaWVudC5yYXcob3JpZ2luYWxTUUwsIG9yaWdpbmFsQmluZGluZ3MpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHBsYWNlaG9sZGVycywgYmluZGluZ3MgfSA9IGNvbHVtbnMucmVkdWNlKFxuICAgICAgICAocmVzdWx0LCBjb2x1bW4pID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGNvbHVtbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmVzdWx0LnBsYWNlaG9sZGVycy5wdXNoKGA/PyA9IFZhbHVlcyg/PylgKTtcbiAgICAgICAgICAgIHJlc3VsdC5iaW5kaW5ncy5wdXNoKGNvbHVtbiwgY29sdW1uKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbiAmJiB0eXBlb2YgY29sdW1uID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhjb2x1bW4pLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICByZXN1bHQucGxhY2Vob2xkZXJzLnB1c2goYD8/ID0gP2ApO1xuICAgICAgICAgICAgICByZXN1bHQuYmluZGluZ3MucHVzaChrZXksIGNvbHVtbltrZXldKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIFwib25EdXBsaWNhdGVVcGRhdGUgZXJyb3I6IGV4cGVjdGVkIGNvbHVtbiBuYW1lIHRvIGJlIHN0cmluZyBvciBvYmplY3QuXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcbiAgICAgICAgeyBwbGFjZWhvbGRlcnM6IFtdLCBiaW5kaW5nczogW10gfVxuICAgICAgKTtcblxuICAgICAgY29uc3QgeyBzcWw6IG9yaWdpbmFsU1FMLCBiaW5kaW5nczogb3JpZ2luYWxCaW5kaW5ncyB9ID0gdGhpcy50b1NRTCgpO1xuXG4gICAgICBjb25zdCBuZXdCaW5kaW5ncyA9IFsuLi5vcmlnaW5hbEJpbmRpbmdzLCAuLi5iaW5kaW5nc107XG5cbiAgICAgIHJldHVybiB0aGlzLmNsaWVudC5yYXcoXG4gICAgICAgIGAke29yaWdpbmFsU1FMfSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSAke3BsYWNlaG9sZGVycy5qb2luKFwiLCBcIil9YCxcbiAgICAgICAgbmV3QmluZGluZ3NcbiAgICAgICk7XG4gICAgfSk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIGlnbm9yZWRcbiAgfVxufSJdLCJuYW1lcyI6WyJrbmV4IiwiYXR0YWNoT25EdXBsaWNhdGVVcGRhdGUiLCJRdWVyeUJ1aWxkZXIiLCJleHRlbmQiLCJjb2x1bW5zIiwibGVuZ3RoIiwic3FsIiwib3JpZ2luYWxTUUwiLCJiaW5kaW5ncyIsIm9yaWdpbmFsQmluZGluZ3MiLCJ0b1NRTCIsImNsaWVudCIsInJhdyIsInBsYWNlaG9sZGVycyIsInJlZHVjZSIsInJlc3VsdCIsImNvbHVtbiIsInB1c2giLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsIkVycm9yIiwibmV3QmluZGluZ3MiLCJqb2luIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxVQUFVLE9BQU87QUFFeEIsT0FBTyxTQUFTQztJQUNkLElBQUk7UUFDRkQsS0FBS0UsWUFBWSxDQUFDQyxNQUFNLENBQUMscUJBQXFCLFNBQVUsR0FBR0MsT0FBTztZQUNoRSxJQUFJQSxRQUFRQyxNQUFNLEtBQUssR0FBRztnQkFDeEIsNENBQTRDO2dCQUM1QyxNQUFNLEVBQUVDLEtBQUtDLFdBQVcsRUFBRUMsVUFBVUMsZ0JBQWdCLEVBQUUsR0FBRyxJQUFJLENBQUNDLEtBQUs7Z0JBQ25FLE9BQU8sSUFBSSxDQUFDQyxNQUFNLENBQUNDLEdBQUcsQ0FBQ0wsYUFBYUU7WUFDdEM7WUFFQSxNQUFNLEVBQUVJLFlBQVksRUFBRUwsUUFBUSxFQUFFLEdBQUdKLFFBQVFVLE1BQU0sQ0FDL0MsQ0FBQ0MsUUFBUUM7Z0JBQ1AsSUFBSSxPQUFPQSxXQUFXLFVBQVU7b0JBQzlCRCxPQUFPRixZQUFZLENBQUNJLElBQUksQ0FBQyxDQUFDLGVBQWUsQ0FBQztvQkFDMUNGLE9BQU9QLFFBQVEsQ0FBQ1MsSUFBSSxDQUFDRCxRQUFRQTtnQkFDL0IsT0FBTyxJQUFJQSxVQUFVLE9BQU9BLFdBQVcsVUFBVTtvQkFDL0NFLE9BQU9DLElBQUksQ0FBQ0gsUUFBUUksT0FBTyxDQUFDLENBQUNDO3dCQUMzQk4sT0FBT0YsWUFBWSxDQUFDSSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUM7d0JBQ2pDRixPQUFPUCxRQUFRLENBQUNTLElBQUksQ0FBQ0ksS0FBS0wsTUFBTSxDQUFDSyxJQUFJO29CQUN2QztnQkFDRixPQUFPO29CQUNMLE1BQU0sSUFBSUMsTUFDUjtnQkFFSjtnQkFFQSxPQUFPUDtZQUNULEdBQ0E7Z0JBQUVGLGNBQWMsRUFBRTtnQkFBRUwsVUFBVSxFQUFFO1lBQUM7WUFHbkMsTUFBTSxFQUFFRixLQUFLQyxXQUFXLEVBQUVDLFVBQVVDLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDQyxLQUFLO1lBRW5FLE1BQU1hLGNBQWM7bUJBQUlkO21CQUFxQkQ7YUFBUztZQUV0RCxPQUFPLElBQUksQ0FBQ0csTUFBTSxDQUFDQyxHQUFHLENBQ3BCLEdBQUdMLFlBQVkseUJBQXlCLEVBQUVNLGFBQWFXLElBQUksQ0FBQyxPQUFPLEVBQ25FRDtRQUVKO0lBQ0YsRUFBRSxPQUFNO0lBQ04sVUFBVTtJQUNaO0FBQ0YifQ==
@@ -1,2 +1,109 @@
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 PuriTransactionWrapper(){return PuriTransactionWrapper},get PuriWrapper(){return PuriWrapper}});var _puri=require("./puri");var _chalk=/*#__PURE__*/_interop_require_default(require("chalk"));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 _assert_this_initialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return self}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 _call_super(_this,derived,args){derived=_get_prototype_of(derived);return _possible_constructor_return(_this,_is_native_reflect_construct()?Reflect.construct(derived,args||[],_get_prototype_of(_this).constructor):derived.apply(_this,args))}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 _get_prototype_of(o){_get_prototype_of=Object.setPrototypeOf?Object.getPrototypeOf:function getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o)};return _get_prototype_of(o)}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function")}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});if(superClass)_set_prototype_of(subClass,superClass)}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interop_require_wildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj}}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={__proto__:null};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj.default=obj;if(cache){cache.set(obj,newObj)}return newObj}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 _possible_constructor_return(self,call){if(call&&(_type_of(call)==="object"||typeof call==="function")){return call}return _assert_this_initialized(self)}function _set_prototype_of(o,p){_set_prototype_of=Object.setPrototypeOf||function setPrototypeOf(o,p){o.__proto__=p;return o};return _set_prototype_of(o,p)}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 _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 _is_native_reflect_construct(){try{var result=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(_){}return(_is_native_reflect_construct=function(){return!!result})()}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}}}var PuriWrapper=/*#__PURE__*/function(){"use strict";function PuriWrapper(knex,upsertBuilder){_class_call_check(this,PuriWrapper);_define_property(this,"knex",void 0);_define_property(this,"upsertBuilder",void 0);this.knex=knex;this.upsertBuilder=upsertBuilder}_create_class(PuriWrapper,[{key:"raw",value:function raw(sql){return this.knex.raw(sql)}},{key:"from",value:function from(spec){return new _puri.Puri(this.knex,spec)}},{key:"table",value:function table(spec){return new _puri.Puri(this.knex,spec)}},{key:"transaction",value:function transaction(_0){return _async_to_generator(function(callback){var _this,options,isolation,readOnly,_options_dbPreset,dbPreset,DB,existingContext,startTransaction,existingTrx;var _arguments=arguments;return _ts_generator(this,function(_state){switch(_state.label){case 0:_this=this;options=_arguments.length>1&&_arguments[1]!==void 0?_arguments[1]:{};isolation=options.isolation,readOnly=options.readOnly,_options_dbPreset=options.dbPreset,dbPreset=_options_dbPreset===void 0?"w":_options_dbPreset;return[4,Promise.resolve().then(function(){return /*#__PURE__*/_interop_require_wildcard(require("./db"))})];case 1:DB=_state.sent().DB;existingContext=DB.transactionStorage.getStore();startTransaction=function(knex,upsertBuilder){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,knex.transaction(function(trx){return _async_to_generator(function(){var trxWrapper;return _ts_generator(this,function(_state){switch(_state.label){case 0:trxWrapper=new PuriTransactionWrapper(trx,upsertBuilder);DB.getTransactionContext().setTransaction(dbPreset,trxWrapper);_state.label=1;case 1:_state.trys.push([1,,3,4]);return[4,callback(trxWrapper)];case 2:return[2,_state.sent()];case 3:DB.getTransactionContext().deleteTransaction(dbPreset);return[7];case 4:return[2]}})})()},{isolationLevel:isolation,readOnly:readOnly})]})})()};if(!existingContext){return[2,DB.runWithTransaction(function(){return startTransaction(_this.knex,_this.upsertBuilder)})]}existingTrx=existingContext.getTransaction(dbPreset);if(existingTrx){return[2,startTransaction(existingTrx.trx,existingTrx.upsertBuilder)]}else{return[2,startTransaction(this.knex,this.upsertBuilder)]}return[2]}})}).apply(this,arguments)}},{key:"ubRegister",value:function ubRegister(tableName,row){return this.upsertBuilder.register(tableName,row)}},{key:"ubUpsert",value:function ubUpsert(tableName,chunkSize){return this.upsertBuilder.upsert(this.knex,tableName,chunkSize)}},{key:"ubInsertOnly",value:function ubInsertOnly(tableName,chunkSize){return this.upsertBuilder.insertOnly(this.knex,tableName,chunkSize)}},{key:"ubUpsertOrInsert",value:function ubUpsertOrInsert(tableName,mode,chunkSize){return this.upsertBuilder.upsertOrInsert(this.knex,tableName,mode,chunkSize)}},{key:"ubUpdateBatch",value:function ubUpdateBatch(tableName,options){return this.upsertBuilder.updateBatch(this.knex,tableName,options)}},{key:"debugTransaction",value:function debugTransaction(){return _async_to_generator(function(){var info;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.getTransactionInfo()];case 1:info=_state.sent();console.log("".concat(_chalk.default.cyan("[Puri Transaction]")," ").concat(_chalk.default.magenta(info)));return[2]}})}).call(this)}},{key:"getTransactionInfo",value:function getTransactionInfo(){return _async_to_generator(function(){var _ref,connectionIdRows,connectionId,_ref1,trxRows,trx;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.knex.raw("SELECT CONNECTION_ID() as connection_id")];case 1:_ref=_sliced_to_array.apply(void 0,[_state.sent(),1]),connectionIdRows=_ref[0];connectionId=connectionIdRows[0].connection_id;return[4,this.knex.raw("\n SELECT STATE, ISOLATION_LEVEL, THREAD_ID, EVENT_ID\n FROM performance_schema.events_transactions_current\n WHERE THREAD_ID = \n (SELECT THREAD_ID\n FROM performance_schema.threads \n WHERE PROCESSLIST_ID = CONNECTION_ID())\n ")];case 2:_ref1=_sliced_to_array.apply(void 0,[_state.sent(),1]),trxRows=_ref1[0];if(trxRows.length>0&&trxRows[0].STATE!=="COMMITTED"){trx=trxRows[0];return[2,"In Transaction, ConnID: ".concat(connectionId,", ThreadID: ").concat(trx.THREAD_ID,", EventID: ").concat(trx.EVENT_ID,", InnoDB TRX: ").concat(trx.STATE,"(").concat(trx.ISOLATION_LEVEL,")")]}else{return[2,"Not in Transaction, ConnID: ".concat(connectionId)]}return[2]}})}).call(this)}}]);return PuriWrapper}();var PuriTransactionWrapper=/*#__PURE__*/function(PuriWrapper){"use strict";_inherits(PuriTransactionWrapper,PuriWrapper);function PuriTransactionWrapper(trx,upsertBuilder){_class_call_check(this,PuriTransactionWrapper);var _this;_this=_call_super(this,PuriTransactionWrapper,[trx,upsertBuilder]),_define_property(_this,"trx",void 0),_define_property(_this,"upsertBuilder",void 0),_this.trx=trx,_this.upsertBuilder=upsertBuilder;return _this}_create_class(PuriTransactionWrapper,[{key:"rollback",value:function rollback(){return _async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.trx.rollback()];case 1:_state.sent();return[2]}})}).call(this)}},{key:"commit",value:function commit(){return _async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.trx.commit()];case 1:_state.sent();return[2]}})}).call(this)}}]);return PuriTransactionWrapper}(PuriWrapper);
2
- //# sourceMappingURL=puri-wrapper.js.map
1
+ import { Puri } from "./puri.js";
2
+ import chalk from "chalk";
3
+ export class PuriWrapper {
4
+ knex;
5
+ upsertBuilder;
6
+ constructor(knex, upsertBuilder){
7
+ this.knex = knex;
8
+ this.upsertBuilder = upsertBuilder;
9
+ }
10
+ raw(sql) {
11
+ return this.knex.raw(sql);
12
+ }
13
+ from(spec) {
14
+ return new Puri(this.knex, spec);
15
+ }
16
+ table(spec) {
17
+ return new Puri(this.knex, spec);
18
+ }
19
+ async transaction(callback, options = {}) {
20
+ const { isolation, readOnly, dbPreset = "w" } = options;
21
+ // @transactional 데코레이터와 동일한 로직: 이미 트랜잭션 컨텍스트가 있는지 확인
22
+ const { DB } = await import("./db.js");
23
+ const existingContext = DB.transactionStorage.getStore();
24
+ // AsyncLocalStorage 컨텍스트가 없거나 해당 preset의 트랜잭션이 없으면 새로 시작
25
+ const startTransaction = async (knex, upsertBuilder)=>{
26
+ return knex.transaction(async (trx)=>{
27
+ const trxWrapper = new PuriTransactionWrapper(trx, upsertBuilder);
28
+ // TransactionContext에 트랜잭션 저장
29
+ DB.getTransactionContext().setTransaction(dbPreset, trxWrapper);
30
+ try {
31
+ return await callback(trxWrapper);
32
+ } finally{
33
+ // 트랜잭션 제거
34
+ DB.getTransactionContext().deleteTransaction(dbPreset);
35
+ }
36
+ }, {
37
+ isolationLevel: isolation,
38
+ readOnly
39
+ });
40
+ };
41
+ // AsyncLocalStorage 컨텍스트가 없으면 새로 생성
42
+ if (!existingContext) {
43
+ return DB.runWithTransaction(()=>startTransaction(this.knex, this.upsertBuilder));
44
+ }
45
+ // 해당 preset의 트랜잭션이 이미 있으면 SAVEPOINT로 중첩 트랜잭션 생성
46
+ const existingTrx = existingContext.getTransaction(dbPreset);
47
+ if (existingTrx) {
48
+ return startTransaction(existingTrx.trx, existingTrx.upsertBuilder);
49
+ } else {
50
+ // 컨텍스트는 있지만 이 preset의 트랜잭션은 없는 경우 (같은 컨텍스트 내에서 실행)
51
+ return startTransaction(this.knex, this.upsertBuilder);
52
+ }
53
+ }
54
+ ubRegister(tableName, row) {
55
+ return this.upsertBuilder.register(tableName, row);
56
+ }
57
+ ubUpsert(tableName, chunkSize) {
58
+ return this.upsertBuilder.upsert(this.knex, tableName, chunkSize);
59
+ }
60
+ ubInsertOnly(tableName, chunkSize) {
61
+ return this.upsertBuilder.insertOnly(this.knex, tableName, chunkSize);
62
+ }
63
+ ubUpsertOrInsert(tableName, mode, chunkSize) {
64
+ return this.upsertBuilder.upsertOrInsert(this.knex, tableName, mode, chunkSize);
65
+ }
66
+ ubUpdateBatch(tableName, options) {
67
+ return this.upsertBuilder.updateBatch(this.knex, tableName, options);
68
+ }
69
+ // 트랜잭션 연결 테스트용
70
+ async debugTransaction() {
71
+ const info = await this.getTransactionInfo();
72
+ console.log(`${chalk.cyan("[Puri Transaction]")} ${chalk.magenta(info)}`);
73
+ }
74
+ async getTransactionInfo() {
75
+ // 연결 ID 조회
76
+ const [connectionIdRows] = await this.knex.raw(`SELECT CONNECTION_ID() as connection_id`);
77
+ const connectionId = connectionIdRows[0].connection_id;
78
+ // 트랜잭션 정보 조회
79
+ const [trxRows] = await this.knex.raw(`
80
+ SELECT STATE, ISOLATION_LEVEL, THREAD_ID, EVENT_ID
81
+ FROM performance_schema.events_transactions_current
82
+ WHERE THREAD_ID =
83
+ (SELECT THREAD_ID
84
+ FROM performance_schema.threads
85
+ WHERE PROCESSLIST_ID = CONNECTION_ID())
86
+ `);
87
+ if (trxRows.length > 0 && trxRows[0].STATE !== "COMMITTED") {
88
+ const trx = trxRows[0];
89
+ return `In Transaction, ConnID: ${connectionId}, ThreadID: ${trx.THREAD_ID}, EventID: ${trx.EVENT_ID}, InnoDB TRX: ${trx.STATE}(${trx.ISOLATION_LEVEL})`;
90
+ } else {
91
+ return `Not in Transaction, ConnID: ${connectionId}`;
92
+ }
93
+ }
94
+ }
95
+ export class PuriTransactionWrapper extends PuriWrapper {
96
+ trx;
97
+ upsertBuilder;
98
+ constructor(trx, upsertBuilder){
99
+ super(trx, upsertBuilder), this.trx = trx, this.upsertBuilder = upsertBuilder;
100
+ }
101
+ async rollback() {
102
+ await this.trx.rollback();
103
+ }
104
+ async commit() {
105
+ await this.trx.commit();
106
+ }
107
+ }
108
+
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS9wdXJpLXdyYXBwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS25leCB9IGZyb20gXCJrbmV4XCI7XG5pbXBvcnQgeyBQdXJpIH0gZnJvbSBcIi4vcHVyaVwiO1xuaW1wb3J0IHsgVUJSZWYsIFVwc2VydEJ1aWxkZXIgfSBmcm9tIFwiLi91cHNlcnQtYnVpbGRlclwiO1xuaW1wb3J0IHsgRGF0YWJhc2VTY2hlbWFFeHRlbmQgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7IERCUHJlc2V0IH0gZnJvbSBcIi4vZGJcIjtcblxudHlwZSBUYWJsZU5hbWU8VFNjaGVtYSBleHRlbmRzIERhdGFiYXNlU2NoZW1hRXh0ZW5kPiA9IEV4dHJhY3Q8XG4gIGtleW9mIFRTY2hlbWEsXG4gIHN0cmluZ1xuPjtcblxuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25hbE9wdGlvbnMgPSB7XG4gIGlzb2xhdGlvbj86IEV4Y2x1ZGU8S25leC5Jc29sYXRpb25MZXZlbHMsIFwic25hcHNob3RcIj47IC8vIHNuYXBzaG90OiBtc3NxbCBvbmx5XG4gIGRiUHJlc2V0PzogREJQcmVzZXQ7XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjbGFzcyBQdXJpV3JhcHBlcjxcbiAgVFNjaGVtYSBleHRlbmRzIERhdGFiYXNlU2NoZW1hRXh0ZW5kID0gRGF0YWJhc2VTY2hlbWFFeHRlbmQsXG4+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGtuZXg6IEtuZXgsXG4gICAgcHVibGljIHVwc2VydEJ1aWxkZXI6IFVwc2VydEJ1aWxkZXJcbiAgKSB7fVxuXG4gIHJhdyhzcWw6IHN0cmluZyk6IEtuZXguUmF3IHtcbiAgICByZXR1cm4gdGhpcy5rbmV4LnJhdyhzcWwpO1xuICB9XG5cbiAgLy8g7YWM7J2067iU66qF7Jy866GcIOyLnOyekVxuICBmcm9tPFRUYWJsZSBleHRlbmRzIGtleW9mIFRTY2hlbWE+KFxuICAgIHRhYmxlTmFtZTogVFRhYmxlXG4gICk6IFB1cmk8XG4gICAgVFNjaGVtYSxcbiAgICBSZWNvcmQ8VFRhYmxlLCBUU2NoZW1hW1RUYWJsZV0+LFxuICAgIE9taXQ8VFNjaGVtYVtUVGFibGVdLCBcIl9fZnVsbHRleHRfX1wiPlxuICA+O1xuICAvLyDthYzsnbTruJTrqoUgKyBBbGlhc+uhnCDsi5zsnpFcbiAgZnJvbTxUVGFibGUgZXh0ZW5kcyBrZXlvZiBUU2NoZW1hLCBUQWxpYXMgZXh0ZW5kcyBzdHJpbmc+KHNwZWM6IHtcbiAgICBbSyBpbiBUQWxpYXNdOiBUVGFibGU7XG4gIH0pOiBQdXJpPFxuICAgIFRTY2hlbWEsXG4gICAgUmVjb3JkPFRBbGlhcywgVFNjaGVtYVtUVGFibGVdPixcbiAgICBPbWl0PFRTY2hlbWFbVFRhYmxlXSwgXCJfX2Z1bGx0ZXh0X19cIj5cbiAgPjtcbiAgLy8g7ISc67iM7L+866as66GcIOyLnOyekVxuICBmcm9tPFRBbGlhcyBleHRlbmRzIHN0cmluZywgVFN1YlJlc3VsdD4oc3BlYzoge1xuICAgIFtLIGluIFRBbGlhc106IFB1cmk8VFNjaGVtYSwgYW55LCBUU3ViUmVzdWx0PjtcbiAgfSk6IFB1cmk8XG4gICAgVFNjaGVtYSxcbiAgICBSZWNvcmQ8VEFsaWFzLCBUU3ViUmVzdWx0PixcbiAgICBPbWl0PFRTdWJSZXN1bHQsIFwiX19mdWxsdGV4dF9fXCI+XG4gID47XG4gIGZyb20oc3BlYzogYW55KTogYW55IHtcbiAgICByZXR1cm4gbmV3IFB1cmkodGhpcy5rbmV4LCBzcGVjKTtcbiAgfVxuXG4gIC8vIO2FjOydtOu4lOuqheycvOuhnCDsi5zsnpFcbiAgdGFibGU8VFRhYmxlIGV4dGVuZHMga2V5b2YgVFNjaGVtYT4oXG4gICAgdGFibGVOYW1lOiBUVGFibGVcbiAgKTogUHVyaTxcbiAgICBUU2NoZW1hLFxuICAgIFJlY29yZDxUVGFibGUsIFRTY2hlbWFbVFRhYmxlXT4sXG4gICAgT21pdDxUU2NoZW1hW1RUYWJsZV0sIFwiX19mdWxsdGV4dF9fXCI+XG4gID47XG4gIC8vIO2FjOydtOu4lOuqhSArIEFsaWFz66GcIOyLnOyekVxuICB0YWJsZTxUVGFibGUgZXh0ZW5kcyBrZXlvZiBUU2NoZW1hLCBUQWxpYXMgZXh0ZW5kcyBzdHJpbmc+KHNwZWM6IHtcbiAgICBbSyBpbiBUQWxpYXNdOiBUVGFibGU7XG4gIH0pOiBQdXJpPFxuICAgIFRTY2hlbWEsXG4gICAgUmVjb3JkPFRBbGlhcywgVFNjaGVtYVtUVGFibGVdPixcbiAgICBPbWl0PFRTY2hlbWFbVFRhYmxlXSwgXCJfX2Z1bGx0ZXh0X19cIj5cbiAgPjtcbiAgLy8g7ISc67iM7L+866as66GcIOyLnOyekVxuICB0YWJsZTxUQWxpYXMgZXh0ZW5kcyBzdHJpbmcsIFRTdWJSZXN1bHQ+KHNwZWM6IHtcbiAgICBbSyBpbiBUQWxpYXNdOiBQdXJpPFRTY2hlbWEsIGFueSwgVFN1YlJlc3VsdD47XG4gIH0pOiBQdXJpPFxuICAgIFRTY2hlbWEsXG4gICAgUmVjb3JkPFRBbGlhcywgVFN1YlJlc3VsdD4sXG4gICAgT21pdDxUU3ViUmVzdWx0LCBcIl9fZnVsbHRleHRfX1wiPlxuICA+O1xuICB0YWJsZShzcGVjOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBuZXcgUHVyaSh0aGlzLmtuZXgsIHNwZWMpO1xuICB9XG5cbiAgYXN5bmMgdHJhbnNhY3Rpb248VD4oXG4gICAgY2FsbGJhY2s6ICh0cng6IFB1cmlUcmFuc2FjdGlvbldyYXBwZXIpID0+IFByb21pc2U8VD4sXG4gICAgb3B0aW9uczogVHJhbnNhY3Rpb25hbE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCB7IGlzb2xhdGlvbiwgcmVhZE9ubHksIGRiUHJlc2V0ID0gXCJ3XCIgfSA9IG9wdGlvbnM7XG5cbiAgICAvLyBAdHJhbnNhY3Rpb25hbCDrjbDsvZTroIjsnbTthLDsmYAg64+Z7J287ZWcIOuhnOyngTog7J2066+4IO2KuOuenOyereyFmCDsu6jthY3siqTtirjqsIAg7J6I64qU7KeAIO2ZleyduFxuICAgIGNvbnN0IHsgREIgfSA9IGF3YWl0IGltcG9ydChcIi4vZGJcIik7XG4gICAgY29uc3QgZXhpc3RpbmdDb250ZXh0ID0gREIudHJhbnNhY3Rpb25TdG9yYWdlLmdldFN0b3JlKCk7XG5cbiAgICAvLyBBc3luY0xvY2FsU3RvcmFnZSDsu6jthY3siqTtirjqsIAg7JeG6rGw64KYIO2VtOuLuSBwcmVzZXTsnZgg7Yq4656c7J6t7IWY7J20IOyXhuycvOuptCDsg4jroZwg7Iuc7J6RXG4gICAgY29uc3Qgc3RhcnRUcmFuc2FjdGlvbiA9IGFzeW5jIChcbiAgICAgIGtuZXg6IEtuZXggfCBLbmV4LlRyYW5zYWN0aW9uLFxuICAgICAgdXBzZXJ0QnVpbGRlcjogVXBzZXJ0QnVpbGRlclxuICAgICkgPT4ge1xuICAgICAgcmV0dXJuIGtuZXgudHJhbnNhY3Rpb24oXG4gICAgICAgIGFzeW5jICh0cngpID0+IHtcbiAgICAgICAgICBjb25zdCB0cnhXcmFwcGVyID0gbmV3IFB1cmlUcmFuc2FjdGlvbldyYXBwZXIodHJ4LCB1cHNlcnRCdWlsZGVyKTtcblxuICAgICAgICAgIC8vIFRyYW5zYWN0aW9uQ29udGV4dOyXkCDtirjrnpzsnq3shZgg7KCA7J6lXG4gICAgICAgICAgREIuZ2V0VHJhbnNhY3Rpb25Db250ZXh0KCkuc2V0VHJhbnNhY3Rpb24oZGJQcmVzZXQsIHRyeFdyYXBwZXIpO1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBjYWxsYmFjayh0cnhXcmFwcGVyKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgLy8g7Yq4656c7J6t7IWYIOygnOqxsFxuICAgICAgICAgICAgREIuZ2V0VHJhbnNhY3Rpb25Db250ZXh0KCkuZGVsZXRlVHJhbnNhY3Rpb24oZGJQcmVzZXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgeyBpc29sYXRpb25MZXZlbDogaXNvbGF0aW9uLCByZWFkT25seSB9XG4gICAgICApO1xuICAgIH07XG5cbiAgICAvLyBBc3luY0xvY2FsU3RvcmFnZSDsu6jthY3siqTtirjqsIAg7JeG7Jy866m0IOyDiOuhnCDsg53shLFcbiAgICBpZiAoIWV4aXN0aW5nQ29udGV4dCkge1xuICAgICAgcmV0dXJuIERCLnJ1bldpdGhUcmFuc2FjdGlvbigoKSA9PlxuICAgICAgICBzdGFydFRyYW5zYWN0aW9uKHRoaXMua25leCwgdGhpcy51cHNlcnRCdWlsZGVyKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyDtlbTri7kgcHJlc2V07J2YIO2KuOuenOyereyFmOydtCDsnbTrr7gg7J6I7Jy866m0IFNBVkVQT0lOVOuhnCDspJHssqkg7Yq4656c7J6t7IWYIOyDneyEsVxuICAgIGNvbnN0IGV4aXN0aW5nVHJ4ID0gZXhpc3RpbmdDb250ZXh0LmdldFRyYW5zYWN0aW9uKGRiUHJlc2V0KTtcbiAgICBpZiAoZXhpc3RpbmdUcngpIHtcbiAgICAgIHJldHVybiBzdGFydFRyYW5zYWN0aW9uKGV4aXN0aW5nVHJ4LnRyeCwgZXhpc3RpbmdUcngudXBzZXJ0QnVpbGRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIOy7qO2FjeyKpO2KuOuKlCDsnojsp4Drp4wg7J20IHByZXNldOydmCDtirjrnpzsnq3shZjsnYAg7JeG64qUIOqyveyasCAo6rCZ7J2AIOy7qO2FjeyKpO2KuCDrgrTsl5DshJwg7Iuk7ZaJKVxuICAgICAgcmV0dXJuIHN0YXJ0VHJhbnNhY3Rpb24odGhpcy5rbmV4LCB0aGlzLnVwc2VydEJ1aWxkZXIpO1xuICAgIH1cbiAgfVxuXG4gIHViUmVnaXN0ZXI8VFRhYmxlIGV4dGVuZHMgVGFibGVOYW1lPFRTY2hlbWE+PihcbiAgICB0YWJsZU5hbWU6IFRUYWJsZSxcbiAgICByb3c6IFBhcnRpYWw8e1xuICAgICAgW0sgaW4ga2V5b2YgVFNjaGVtYVtUVGFibGVdXTogVFNjaGVtYVtUVGFibGVdW0tdIHwgVUJSZWY7XG4gICAgfT5cbiAgKTogVUJSZWYge1xuICAgIHJldHVybiB0aGlzLnVwc2VydEJ1aWxkZXIucmVnaXN0ZXIodGFibGVOYW1lLCByb3cpO1xuICB9XG5cbiAgdWJVcHNlcnQoXG4gICAgdGFibGVOYW1lOiBUYWJsZU5hbWU8VFNjaGVtYT4sXG4gICAgY2h1bmtTaXplPzogbnVtYmVyXG4gICk6IFByb21pc2U8bnVtYmVyW10+IHtcbiAgICByZXR1cm4gdGhpcy51cHNlcnRCdWlsZGVyLnVwc2VydCh0aGlzLmtuZXgsIHRhYmxlTmFtZSwgY2h1bmtTaXplKTtcbiAgfVxuXG4gIHViSW5zZXJ0T25seShcbiAgICB0YWJsZU5hbWU6IFRhYmxlTmFtZTxUU2NoZW1hPixcbiAgICBjaHVua1NpemU/OiBudW1iZXJcbiAgKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLnVwc2VydEJ1aWxkZXIuaW5zZXJ0T25seSh0aGlzLmtuZXgsIHRhYmxlTmFtZSwgY2h1bmtTaXplKTtcbiAgfVxuXG4gIHViVXBzZXJ0T3JJbnNlcnQoXG4gICAgdGFibGVOYW1lOiBUYWJsZU5hbWU8VFNjaGVtYT4sXG4gICAgbW9kZTogXCJ1cHNlcnRcIiB8IFwiaW5zZXJ0XCIsXG4gICAgY2h1bmtTaXplPzogbnVtYmVyXG4gICk6IFByb21pc2U8bnVtYmVyW10+IHtcbiAgICByZXR1cm4gdGhpcy51cHNlcnRCdWlsZGVyLnVwc2VydE9ySW5zZXJ0KFxuICAgICAgdGhpcy5rbmV4LFxuICAgICAgdGFibGVOYW1lLFxuICAgICAgbW9kZSxcbiAgICAgIGNodW5rU2l6ZVxuICAgICk7XG4gIH1cblxuICB1YlVwZGF0ZUJhdGNoKFxuICAgIHRhYmxlTmFtZTogVGFibGVOYW1lPFRTY2hlbWE+LFxuICAgIG9wdGlvbnM/OiB7IGNodW5rU2l6ZT86IG51bWJlcjsgd2hlcmU/OiBzdHJpbmcgfCBzdHJpbmdbXSB9XG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnVwc2VydEJ1aWxkZXIudXBkYXRlQmF0Y2godGhpcy5rbmV4LCB0YWJsZU5hbWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgLy8g7Yq4656c7J6t7IWYIOyXsOqysCDthYzsiqTtirjsmqlcbiAgYXN5bmMgZGVidWdUcmFuc2FjdGlvbigpIHtcbiAgICBjb25zdCBpbmZvID0gYXdhaXQgdGhpcy5nZXRUcmFuc2FjdGlvbkluZm8oKTtcbiAgICBjb25zb2xlLmxvZyhgJHtjaGFsay5jeWFuKFwiW1B1cmkgVHJhbnNhY3Rpb25dXCIpfSAke2NoYWxrLm1hZ2VudGEoaW5mbyl9YCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFRyYW5zYWN0aW9uSW5mbygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIC8vIOyXsOqysCBJRCDsobDtmoxcbiAgICBjb25zdCBbY29ubmVjdGlvbklkUm93c10gPSBhd2FpdCB0aGlzLmtuZXgucmF3KFxuICAgICAgYFNFTEVDVCBDT05ORUNUSU9OX0lEKCkgYXMgY29ubmVjdGlvbl9pZGBcbiAgICApO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25JZCA9IGNvbm5lY3Rpb25JZFJvd3NbMF0uY29ubmVjdGlvbl9pZDtcblxuICAgIC8vIO2KuOuenOyereyFmCDsoJXrs7Qg7KGw7ZqMXG4gICAgY29uc3QgW3RyeFJvd3NdID0gYXdhaXQgdGhpcy5rbmV4LnJhdyhgXG4gICAgICAgIFNFTEVDVCBTVEFURSwgSVNPTEFUSU9OX0xFVkVMLCBUSFJFQURfSUQsIEVWRU5UX0lEXG4gICAgICAgIEZST00gcGVyZm9ybWFuY2Vfc2NoZW1hLmV2ZW50c190cmFuc2FjdGlvbnNfY3VycmVudFxuICAgICAgICBXSEVSRSBUSFJFQURfSUQgPSBcbiAgICAgICAgICAoU0VMRUNUIFRIUkVBRF9JRFxuICAgICAgICAgIEZST00gcGVyZm9ybWFuY2Vfc2NoZW1hLnRocmVhZHMgXG4gICAgICAgICAgV0hFUkUgUFJPQ0VTU0xJU1RfSUQgPSBDT05ORUNUSU9OX0lEKCkpXG4gICAgICBgKTtcblxuICAgIGlmICh0cnhSb3dzLmxlbmd0aCA+IDAgJiYgdHJ4Um93c1swXS5TVEFURSAhPT0gXCJDT01NSVRURURcIikge1xuICAgICAgY29uc3QgdHJ4ID0gdHJ4Um93c1swXTtcbiAgICAgIHJldHVybiBgSW4gVHJhbnNhY3Rpb24sIENvbm5JRDogJHtjb25uZWN0aW9uSWR9LCBUaHJlYWRJRDogJHt0cnguVEhSRUFEX0lEfSwgRXZlbnRJRDogJHt0cnguRVZFTlRfSUR9LCBJbm5vREIgVFJYOiAke3RyeC5TVEFURX0oJHt0cnguSVNPTEFUSU9OX0xFVkVMfSlgO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYE5vdCBpbiBUcmFuc2FjdGlvbiwgQ29ubklEOiAke2Nvbm5lY3Rpb25JZH1gO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHVyaVRyYW5zYWN0aW9uV3JhcHBlciBleHRlbmRzIFB1cmlXcmFwcGVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRyeDogS25leC5UcmFuc2FjdGlvbixcbiAgICBwdWJsaWMgdXBzZXJ0QnVpbGRlcjogVXBzZXJ0QnVpbGRlclxuICApIHtcbiAgICBzdXBlcih0cngsIHVwc2VydEJ1aWxkZXIpO1xuICB9XG5cbiAgYXN5bmMgcm9sbGJhY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy50cngucm9sbGJhY2soKTtcbiAgfVxuXG4gIGFzeW5jIGNvbW1pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnRyeC5jb21taXQoKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlB1cmkiLCJjaGFsayIsIlB1cmlXcmFwcGVyIiwia25leCIsInVwc2VydEJ1aWxkZXIiLCJyYXciLCJzcWwiLCJmcm9tIiwic3BlYyIsInRhYmxlIiwidHJhbnNhY3Rpb24iLCJjYWxsYmFjayIsIm9wdGlvbnMiLCJpc29sYXRpb24iLCJyZWFkT25seSIsImRiUHJlc2V0IiwiREIiLCJleGlzdGluZ0NvbnRleHQiLCJ0cmFuc2FjdGlvblN0b3JhZ2UiLCJnZXRTdG9yZSIsInN0YXJ0VHJhbnNhY3Rpb24iLCJ0cngiLCJ0cnhXcmFwcGVyIiwiUHVyaVRyYW5zYWN0aW9uV3JhcHBlciIsImdldFRyYW5zYWN0aW9uQ29udGV4dCIsInNldFRyYW5zYWN0aW9uIiwiZGVsZXRlVHJhbnNhY3Rpb24iLCJpc29sYXRpb25MZXZlbCIsInJ1bldpdGhUcmFuc2FjdGlvbiIsImV4aXN0aW5nVHJ4IiwiZ2V0VHJhbnNhY3Rpb24iLCJ1YlJlZ2lzdGVyIiwidGFibGVOYW1lIiwicm93IiwicmVnaXN0ZXIiLCJ1YlVwc2VydCIsImNodW5rU2l6ZSIsInVwc2VydCIsInViSW5zZXJ0T25seSIsImluc2VydE9ubHkiLCJ1YlVwc2VydE9ySW5zZXJ0IiwibW9kZSIsInVwc2VydE9ySW5zZXJ0IiwidWJVcGRhdGVCYXRjaCIsInVwZGF0ZUJhdGNoIiwiZGVidWdUcmFuc2FjdGlvbiIsImluZm8iLCJnZXRUcmFuc2FjdGlvbkluZm8iLCJjb25zb2xlIiwibG9nIiwiY3lhbiIsIm1hZ2VudGEiLCJjb25uZWN0aW9uSWRSb3dzIiwiY29ubmVjdGlvbklkIiwiY29ubmVjdGlvbl9pZCIsInRyeFJvd3MiLCJsZW5ndGgiLCJTVEFURSIsIlRIUkVBRF9JRCIsIkVWRU5UX0lEIiwiSVNPTEFUSU9OX0xFVkVMIiwicm9sbGJhY2siLCJjb21taXQiXSwibWFwcGluZ3MiOiJBQUNBLFNBQVNBLElBQUksUUFBUSxZQUFTO0FBRzlCLE9BQU9DLFdBQVcsUUFBUTtBQWMxQixPQUFPLE1BQU1DOzs7SUFHWCxZQUNFLEFBQU9DLElBQVUsRUFDakIsQUFBT0MsYUFBNEIsQ0FDbkM7YUFGT0QsT0FBQUE7YUFDQUMsZ0JBQUFBO0lBQ047SUFFSEMsSUFBSUMsR0FBVyxFQUFZO1FBQ3pCLE9BQU8sSUFBSSxDQUFDSCxJQUFJLENBQUNFLEdBQUcsQ0FBQ0M7SUFDdkI7SUEwQkFDLEtBQUtDLElBQVMsRUFBTztRQUNuQixPQUFPLElBQUlSLEtBQUssSUFBSSxDQUFDRyxJQUFJLEVBQUVLO0lBQzdCO0lBMEJBQyxNQUFNRCxJQUFTLEVBQU87UUFDcEIsT0FBTyxJQUFJUixL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
@@ -1,7 +1,7 @@
1
1
  import type { Knex } from "knex";
2
2
  import type { AvailableColumns, SelectObject, ParseSelectObject, WhereCondition, ComparisonOperator, ExtractColumnType, SqlExpression, Expand, FulltextColumns, ResultAvailableColumns, InsertData, SingleTableValue } from "./puri.types";
3
- export declare class Puri<TSchema, TTables extends Record<string, any>, TResult, TResolved = Expand<TResult>[]> {
4
- private knex;
3
+ export declare class Puri<TSchema, TTables extends Record<string, any>, TResult> {
4
+ knex: Knex;
5
5
  private knexQuery;
6
6
  constructor(knex: Knex, tableName: string);
7
7
  constructor(knex: Knex, tableSpec: Record<string, string | Puri<TSchema, any, any>>);
@@ -18,6 +18,7 @@ export declare class Puri<TSchema, TTables extends Record<string, any>, TResult,
18
18
  static rawBoolean(sql: string): SqlExpression<"boolean">;
19
19
  static rawDate(sql: string): SqlExpression<"date">;
20
20
  select<TSelect extends SelectObject<TTables>>(selectObj: TSelect): Puri<TSchema, TTables, ParseSelectObject<TTables, TSelect>>;
21
+ appendSelect<TSelect extends SelectObject<TTables>>(selectObj: TSelect): Puri<TSchema, TTables, TResult & ParseSelectObject<TTables, TSelect>>;
21
22
  selectAll(): this;
22
23
  join<TJoinAlias extends string, TSubResult>(tableSpec: {
23
24
  [K in TJoinAlias]: Puri<TSchema, any, TSubResult>;
@@ -56,7 +57,7 @@ export declare class Puri<TSchema, TTables extends Record<string, any>, TResult,
56
57
  __commonJoin(joinType: "join" | "leftJoin", tableNameOrSpec: any, ...args: any[]): this;
57
58
  where(conditions: WhereCondition<TTables>): this;
58
59
  where<TColumn extends AvailableColumns<TTables>>(column: TColumn, value: ExtractColumnType<TTables, TColumn & string>): this;
59
- where<TColumn extends AvailableColumns<TTables>>(column: TColumn, operator: ComparisonOperator, value: ExtractColumnType<TTables, TColumn & string>): this;
60
+ where<TColumn extends AvailableColumns<TTables>>(column: TColumn, operator: ComparisonOperator | "like" | "not like", value: ExtractColumnType<TTables, TColumn & string>): this;
60
61
  whereIn<TColumn extends AvailableColumns<TTables>>(column: TColumn, values: ExtractColumnType<TTables, TColumn & string>[]): Puri<TSchema, TTables, TResult>;
61
62
  whereNotIn<TColumn extends AvailableColumns<TTables>>(column: TColumn, values: ExtractColumnType<TTables, TColumn & string>[]): Puri<TSchema, TTables, TResult>;
62
63
  whereMatch<TColumn extends FulltextColumns<TTables>>(column: TColumn, value: string): this;
@@ -68,19 +69,16 @@ export declare class Puri<TSchema, TTables extends Record<string, any>, TResult,
68
69
  groupBy<TColumns extends ResultAvailableColumns<TTables, TResult>>(...columns: TColumns[]): this;
69
70
  having(condition: string): this;
70
71
  having<TColumn extends ResultAvailableColumns<TTables, TResult>>(column: TColumn, operator: ComparisonOperator, value: any): this;
71
- then<TResult1 = TResolved, TResult2 = never>(onfulfilled?: ((value: TResolved) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
72
- catch<TResult2 = never>(onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<Expand<TResult> | TResult2>;
73
- finally(onfinally?: (() => void) | null): Promise<Expand<TResult>>;
74
- first(): Promise<Expand<TResult> | undefined>;
75
- firstOrFail(): Promise<TResult>;
76
- at(index: number): Promise<Expand<TResult> | undefined>;
77
- assertAt(index: number): Promise<Expand<TResult>>;
78
- pluck<TColumn extends ResultAvailableColumns<TTables, TResult>>(column: TColumn): Promise<ExtractColumnType<TTables, TColumn & string>[]>;
79
- insert(data: InsertData<SingleTableValue<TTables>>): Puri<TSchema, {}, number, number[]>;
80
- update(data: WhereCondition<TTables>): Puri<TSchema, {}, number, number>;
81
- increment<TColumn extends AvailableColumns<TTables>>(column: TColumn, value: number): this;
82
- decrement<TColumn extends AvailableColumns<TTables>>(column: TColumn, value: number): this;
83
- delete(): Puri<TSchema, {}, number, number>;
72
+ then<TResult1 = Expand<TResult>[], TResult2 = never>(onfulfilled?: ((value: Expand<TResult>[]) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
73
+ catch<TResult2 = never>(onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult | TResult2>;
74
+ finally(onfinally?: (() => void) | null): Promise<TResult>;
75
+ first(): ResolvedPuri<Expand<TResult>, never>;
76
+ pluck<TColumn extends keyof TResult | ResultAvailableColumns<TTables, TResult>>(column: TColumn): ResolvedPuri<TColumn extends keyof TResult ? TResult[TColumn][] : ExtractColumnType<TTables, TColumn & string>[], never>;
77
+ insert(data: InsertData<SingleTableValue<TTables>>): ResolvedPuri<[number], never>;
78
+ update(data: WhereCondition<TTables>): ResolvedPuri<TResult, number>;
79
+ increment<TColumn extends AvailableColumns<TTables>>(column: TColumn, value: number): ResolvedPuri<number, never>;
80
+ decrement<TColumn extends AvailableColumns<TTables>>(column: TColumn, value: number): ResolvedPuri<number, never>;
81
+ delete(): ResolvedPuri<number, never>;
84
82
  toQuery(): string;
85
83
  debug(): this;
86
84
  formatSQL(unformatted: string): string;
@@ -108,4 +106,13 @@ export declare class JoinClauseGroup<TLeft extends Record<string, any>, TRight e
108
106
  orOn(left: AvailableColumns<TLeft>, operator: ComparisonOperator, right: AvailableColumns<TRight>): this;
109
107
  orOn(callback: (nested: JoinClauseGroup<TLeft, TRight>) => void): this;
110
108
  }
109
+ export declare class ResolvedPuri<TResolved, _TReturning> {
110
+ knexQuery: Knex.QueryBuilder;
111
+ constructor(knexQuery: Knex.QueryBuilder);
112
+ toQuery(): string;
113
+ debug(): this;
114
+ then<TResult1 = TResolved, TResult2 = never>(onfulfilled?: ((value: TResolved) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
115
+ catch<TResult2 = never>(onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResolved | TResult2>;
116
+ finally(onfinally?: (() => void) | null): Promise<TResolved>;
117
+ }
111
118
  //# sourceMappingURL=puri.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"puri.d.ts","sourceRoot":"","sources":["../../src/database/puri.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"puri.d.ts","sourceRoot":"","sources":["../../src/database/puri.ts"],"names":[],"mappings":"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"}