sonamu 0.5.7 → 0.7.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 (529) hide show
  1. package/.swcrc.project-default +18 -0
  2. package/bin/cli.js +24 -0
  3. package/dist/ai/agents/agent.d.ts +11 -0
  4. package/dist/ai/agents/agent.d.ts.map +1 -0
  5. package/dist/ai/agents/agent.js +65 -0
  6. package/dist/ai/agents/index.d.ts +3 -0
  7. package/dist/ai/agents/index.d.ts.map +1 -0
  8. package/dist/ai/agents/index.js +4 -0
  9. package/dist/ai/agents/types.d.ts +43 -0
  10. package/dist/ai/agents/types.d.ts.map +1 -0
  11. package/dist/ai/agents/types.js +3 -0
  12. package/dist/ai/index.d.ts +2 -0
  13. package/dist/ai/index.d.ts.map +1 -0
  14. package/dist/ai/index.js +3 -0
  15. package/dist/ai/providers/rtzr/api.d.ts +22 -0
  16. package/dist/ai/providers/rtzr/api.d.ts.map +1 -0
  17. package/dist/ai/providers/rtzr/api.js +28 -0
  18. package/dist/ai/providers/rtzr/error.d.ts +18 -0
  19. package/dist/ai/providers/rtzr/error.d.ts.map +1 -0
  20. package/dist/ai/providers/rtzr/error.js +29 -0
  21. package/dist/ai/providers/rtzr/index.d.ts +5 -0
  22. package/dist/ai/providers/rtzr/index.d.ts.map +1 -0
  23. package/dist/ai/providers/rtzr/index.js +6 -0
  24. package/dist/ai/providers/rtzr/model.d.ts +52 -0
  25. package/dist/ai/providers/rtzr/model.d.ts.map +1 -0
  26. package/dist/ai/providers/rtzr/model.js +137 -0
  27. package/dist/ai/providers/rtzr/options.d.ts +7 -0
  28. package/dist/ai/providers/rtzr/options.d.ts.map +1 -0
  29. package/dist/ai/providers/rtzr/options.js +47 -0
  30. package/dist/ai/providers/rtzr/provider.d.ts +18 -0
  31. package/dist/ai/providers/rtzr/provider.d.ts.map +1 -0
  32. package/dist/ai/providers/rtzr/provider.js +54 -0
  33. package/dist/ai/providers/rtzr/utils.d.ts +19 -0
  34. package/dist/ai/providers/rtzr/utils.d.ts.map +1 -0
  35. package/dist/ai/providers/rtzr/utils.js +88 -0
  36. package/dist/api/base-frame.d.ts +2 -2
  37. package/dist/api/base-frame.d.ts.map +1 -1
  38. package/dist/api/base-frame.js +13 -2
  39. package/dist/api/caster.d.ts.map +1 -1
  40. package/dist/api/caster.js +71 -2
  41. package/dist/api/code-converters.d.ts +58 -14
  42. package/dist/api/code-converters.d.ts.map +1 -1
  43. package/dist/api/code-converters.js +258 -2
  44. package/dist/api/config.d.ts +90 -0
  45. package/dist/api/config.d.ts.map +1 -0
  46. package/dist/api/config.js +25 -0
  47. package/dist/api/context.d.ts +4 -2
  48. package/dist/api/context.d.ts.map +1 -1
  49. package/dist/api/context.js +3 -2
  50. package/dist/api/decorators.d.ts +20 -6
  51. package/dist/api/decorators.d.ts.map +1 -1
  52. package/dist/api/decorators.js +235 -2
  53. package/dist/api/index.d.ts +2 -2
  54. package/dist/api/index.d.ts.map +1 -1
  55. package/dist/api/index.js +9 -2
  56. package/dist/api/sonamu.d.ts +10 -24
  57. package/dist/api/sonamu.d.ts.map +1 -1
  58. package/dist/api/sonamu.js +514 -2
  59. package/dist/api/validator.d.ts +6 -0
  60. package/dist/api/validator.d.ts.map +1 -0
  61. package/dist/api/validator.js +81 -0
  62. package/dist/bin/build-config.d.ts +6 -1
  63. package/dist/bin/build-config.d.ts.map +1 -1
  64. package/dist/bin/build-config.js +15 -2
  65. package/dist/bin/cli.js +519 -2
  66. package/dist/bin/hot-hook-register.d.ts +11 -0
  67. package/dist/bin/hot-hook-register.d.ts.map +1 -0
  68. package/dist/bin/hot-hook-register.js +21 -0
  69. package/dist/bin/loader-register.d.ts +2 -0
  70. package/dist/bin/loader-register.d.ts.map +1 -0
  71. package/dist/bin/loader-register.js +34 -0
  72. package/dist/database/_batch_update.d.ts +5 -3
  73. package/dist/database/_batch_update.d.ts.map +1 -1
  74. package/dist/database/_batch_update.js +95 -2
  75. package/dist/database/base-model.d.ts +96 -10
  76. package/dist/database/base-model.d.ts.map +1 -1
  77. package/dist/database/base-model.js +390 -2
  78. package/dist/database/base-model.types.d.ts +93 -0
  79. package/dist/database/base-model.types.d.ts.map +1 -0
  80. package/dist/database/base-model.types.js +10 -0
  81. package/dist/database/code-generator.d.ts +1 -1
  82. package/dist/database/code-generator.d.ts.map +1 -1
  83. package/dist/database/code-generator.js +54 -2
  84. package/dist/database/db.d.ts +6 -21
  85. package/dist/database/db.d.ts.map +1 -1
  86. package/dist/database/db.js +129 -2
  87. package/dist/database/puri-subset.test-d.js +81 -0
  88. package/dist/database/puri-subset.types.d.ts +123 -0
  89. package/dist/database/puri-subset.types.d.ts.map +1 -0
  90. package/dist/database/puri-subset.types.js +16 -0
  91. package/dist/database/puri-wrapper.d.ts +13 -11
  92. package/dist/database/puri-wrapper.d.ts.map +1 -1
  93. package/dist/database/puri-wrapper.js +109 -2
  94. package/dist/database/puri.d.ts +41 -23
  95. package/dist/database/puri.d.ts.map +1 -1
  96. package/dist/database/puri.js +601 -2
  97. package/dist/database/puri.types.d.ts +25 -6
  98. package/dist/database/puri.types.d.ts.map +1 -1
  99. package/dist/database/puri.types.js +6 -2
  100. package/dist/database/transaction-context.d.ts +1 -1
  101. package/dist/database/transaction-context.d.ts.map +1 -1
  102. package/dist/database/transaction-context.js +14 -2
  103. package/dist/database/upsert-builder.d.ts +9 -3
  104. package/dist/database/upsert-builder.d.ts.map +1 -1
  105. package/dist/database/upsert-builder.js +365 -2
  106. package/dist/entity/entity-manager.d.ts +167 -2
  107. package/dist/entity/entity-manager.d.ts.map +1 -1
  108. package/dist/entity/entity-manager.js +130 -2
  109. package/dist/entity/entity.d.ts +5 -3
  110. package/dist/entity/entity.d.ts.map +1 -1
  111. package/dist/entity/entity.js +750 -2
  112. package/dist/exceptions/error-handler.d.ts +1 -1
  113. package/dist/exceptions/error-handler.d.ts.map +1 -1
  114. package/dist/exceptions/error-handler.js +29 -2
  115. package/dist/exceptions/so-exceptions.d.ts +1 -1
  116. package/dist/exceptions/so-exceptions.d.ts.map +1 -1
  117. package/dist/exceptions/so-exceptions.js +85 -2
  118. package/dist/file-storage/driver.d.ts +1 -1
  119. package/dist/file-storage/driver.d.ts.map +1 -1
  120. package/dist/file-storage/driver.js +79 -2
  121. package/dist/file-storage/file-storage.js +75 -2
  122. package/dist/index.d.ts +18 -9
  123. package/dist/index.d.ts.map +1 -1
  124. package/dist/index.js +34 -2
  125. package/dist/migration/code-generation.d.ts +1 -1
  126. package/dist/migration/code-generation.d.ts.map +1 -1
  127. package/dist/migration/code-generation.js +614 -2
  128. package/dist/migration/migration-set.d.ts +2 -10
  129. package/dist/migration/migration-set.d.ts.map +1 -1
  130. package/dist/migration/migration-set.js +213 -2
  131. package/dist/migration/migrator.d.ts +24 -82
  132. package/dist/migration/migrator.d.ts.map +1 -1
  133. package/dist/migration/migrator.js +330 -2
  134. package/dist/migration/postgresql-schema-reader.d.ts +51 -0
  135. package/dist/migration/postgresql-schema-reader.d.ts.map +1 -0
  136. package/dist/migration/postgresql-schema-reader.js +245 -0
  137. package/dist/migration/types.d.ts +6 -38
  138. package/dist/migration/types.d.ts.map +1 -1
  139. package/dist/migration/types.js +3 -2
  140. package/dist/naite/messaging-types.d.ts +43 -0
  141. package/dist/naite/messaging-types.d.ts.map +1 -0
  142. package/dist/naite/messaging-types.js +7 -0
  143. package/dist/naite/naite-reporter.d.ts +41 -0
  144. package/dist/naite/naite-reporter.d.ts.map +1 -0
  145. package/dist/naite/naite-reporter.js +102 -0
  146. package/dist/naite/naite.d.ts +95 -0
  147. package/dist/naite/naite.d.ts.map +1 -0
  148. package/dist/naite/naite.js +316 -0
  149. package/dist/stream/index.js +3 -2
  150. package/dist/stream/sse.d.ts +2 -2
  151. package/dist/stream/sse.d.ts.map +1 -1
  152. package/dist/stream/sse.js +38 -2
  153. package/dist/syncer/api-parser.d.ts +10 -0
  154. package/dist/syncer/api-parser.d.ts.map +1 -0
  155. package/dist/syncer/api-parser.js +240 -0
  156. package/dist/syncer/checksum.d.ts +21 -0
  157. package/dist/syncer/checksum.d.ts.map +1 -0
  158. package/dist/syncer/checksum.js +98 -0
  159. package/dist/syncer/code-generator.d.ts +20 -0
  160. package/dist/syncer/code-generator.d.ts.map +1 -0
  161. package/dist/syncer/code-generator.js +161 -0
  162. package/dist/syncer/entity-operations.d.ts +17 -0
  163. package/dist/syncer/entity-operations.d.ts.map +1 -0
  164. package/dist/syncer/entity-operations.js +59 -0
  165. package/dist/syncer/file-patterns.d.ts +29 -0
  166. package/dist/syncer/file-patterns.d.ts.map +1 -0
  167. package/dist/syncer/file-patterns.js +38 -0
  168. package/dist/syncer/index.d.ts +6 -0
  169. package/dist/syncer/index.d.ts.map +1 -1
  170. package/dist/syncer/index.js +9 -2
  171. package/dist/syncer/module-loader.d.ts +35 -0
  172. package/dist/syncer/module-loader.d.ts.map +1 -0
  173. package/dist/syncer/module-loader.js +87 -0
  174. package/dist/syncer/syncer.d.ts +98 -106
  175. package/dist/syncer/syncer.d.ts.map +1 -1
  176. package/dist/syncer/syncer.js +422 -2
  177. package/dist/template/entity-converter.d.ts +14 -0
  178. package/dist/template/entity-converter.d.ts.map +1 -0
  179. package/dist/template/entity-converter.js +108 -0
  180. package/dist/template/helpers.d.ts +23 -0
  181. package/dist/template/helpers.d.ts.map +1 -0
  182. package/dist/template/helpers.js +64 -0
  183. package/dist/{templates → template/implementations}/entity.template.d.ts +3 -3
  184. package/dist/template/implementations/entity.template.d.ts.map +1 -0
  185. package/dist/template/implementations/entity.template.js +86 -0
  186. package/dist/{templates → template/implementations}/generated.template.d.ts +3 -4
  187. package/dist/template/implementations/generated.template.d.ts.map +1 -0
  188. package/dist/template/implementations/generated.template.js +249 -0
  189. package/dist/{templates → template/implementations}/generated_http.template.d.ts +3 -4
  190. package/dist/template/implementations/generated_http.template.d.ts.map +1 -0
  191. package/dist/template/implementations/generated_http.template.js +131 -0
  192. package/dist/{templates → template/implementations}/generated_sso.template.d.ts +4 -5
  193. package/dist/template/implementations/generated_sso.template.d.ts.map +1 -0
  194. package/dist/template/implementations/generated_sso.template.js +134 -0
  195. package/dist/{templates → template/implementations}/init_types.template.d.ts +3 -3
  196. package/dist/template/implementations/init_types.template.d.ts.map +1 -0
  197. package/dist/template/implementations/init_types.template.js +38 -0
  198. package/dist/template/implementations/model.template.d.ts +17 -0
  199. package/dist/template/implementations/model.template.d.ts.map +1 -0
  200. package/dist/template/implementations/model.template.js +181 -0
  201. package/dist/{templates → template/implementations}/model_test.template.d.ts +3 -3
  202. package/dist/template/implementations/model_test.template.d.ts.map +1 -0
  203. package/dist/template/implementations/model_test.template.js +35 -0
  204. package/dist/{templates → template/implementations}/service.template.d.ts +6 -6
  205. package/dist/template/implementations/service.template.d.ts.map +1 -0
  206. package/dist/template/implementations/service.template.js +201 -0
  207. package/dist/{templates → template/implementations}/view_enums_buttonset.template.d.ts +3 -3
  208. package/dist/template/implementations/view_enums_buttonset.template.d.ts.map +1 -0
  209. package/dist/template/implementations/view_enums_buttonset.template.js +31 -0
  210. package/dist/{templates → template/implementations}/view_enums_dropdown.template.d.ts +3 -4
  211. package/dist/template/implementations/view_enums_dropdown.template.d.ts.map +1 -0
  212. package/dist/template/implementations/view_enums_dropdown.template.js +50 -0
  213. package/dist/{templates → template/implementations}/view_enums_select.template.d.ts +3 -3
  214. package/dist/template/implementations/view_enums_select.template.d.ts.map +1 -0
  215. package/dist/template/implementations/view_enums_select.template.js +55 -0
  216. package/dist/{templates → template/implementations}/view_form.template.d.ts +5 -5
  217. package/dist/template/implementations/view_form.template.d.ts.map +1 -0
  218. package/dist/template/implementations/view_form.template.js +337 -0
  219. package/dist/{templates → template/implementations}/view_id_all_select.template.d.ts +3 -3
  220. package/dist/template/implementations/view_id_all_select.template.d.ts.map +1 -0
  221. package/dist/template/implementations/view_id_all_select.template.js +31 -0
  222. package/dist/{templates → template/implementations}/view_id_async_select.template.d.ts +3 -3
  223. package/dist/template/implementations/view_id_async_select.template.d.ts.map +1 -0
  224. package/dist/template/implementations/view_id_async_select.template.js +105 -0
  225. package/dist/{templates → template/implementations}/view_list.template.d.ts +5 -13
  226. package/dist/template/implementations/view_list.template.d.ts.map +1 -0
  227. package/dist/template/implementations/view_list.template.js +475 -0
  228. package/dist/template/implementations/view_list_columns.template.d.ts +17 -0
  229. package/dist/template/implementations/view_list_columns.template.d.ts.map +1 -0
  230. package/dist/template/implementations/view_list_columns.template.js +49 -0
  231. package/dist/{templates → template/implementations}/view_search_input.template.d.ts +3 -3
  232. package/dist/template/implementations/view_search_input.template.d.ts.map +1 -0
  233. package/dist/template/implementations/view_search_input.template.js +64 -0
  234. package/dist/template/index.d.ts +7 -0
  235. package/dist/template/index.d.ts.map +1 -0
  236. package/dist/template/index.js +8 -0
  237. package/dist/template/template-manager.d.ts +56 -0
  238. package/dist/template/template-manager.d.ts.map +1 -0
  239. package/dist/template/template-manager.js +125 -0
  240. package/dist/template/template-types.d.ts +16 -0
  241. package/dist/template/template-types.d.ts.map +1 -0
  242. package/dist/template/template-types.js +7 -0
  243. package/dist/template/template.d.ts +49 -0
  244. package/dist/template/template.d.ts.map +1 -0
  245. package/dist/template/template.js +60 -0
  246. package/dist/template/zod-converter.d.ts +51 -0
  247. package/dist/template/zod-converter.d.ts.map +1 -0
  248. package/dist/template/zod-converter.js +449 -0
  249. package/dist/testing/_relation-graph.d.ts +1 -1
  250. package/dist/testing/_relation-graph.d.ts.map +1 -1
  251. package/dist/testing/_relation-graph.js +89 -2
  252. package/dist/testing/fixture-manager.d.ts +42 -11
  253. package/dist/testing/fixture-manager.d.ts.map +1 -1
  254. package/dist/testing/fixture-manager.js +623 -2
  255. package/dist/types/types.d.ts +747 -143
  256. package/dist/types/types.d.ts.map +1 -1
  257. package/dist/types/types.js +546 -2
  258. package/dist/typings/knex.d.js +3 -2
  259. package/dist/utils/async-utils.d.ts +7 -0
  260. package/dist/utils/async-utils.d.ts.map +1 -1
  261. package/dist/utils/async-utils.js +57 -2
  262. package/dist/utils/console-util.d.ts +2 -0
  263. package/dist/utils/console-util.d.ts.map +1 -0
  264. package/dist/utils/console-util.js +6 -0
  265. package/dist/utils/controller.d.ts +1 -0
  266. package/dist/utils/controller.d.ts.map +1 -1
  267. package/dist/utils/controller.js +29 -2
  268. package/dist/utils/esm-utils.d.ts +39 -0
  269. package/dist/utils/esm-utils.d.ts.map +1 -0
  270. package/dist/utils/esm-utils.js +49 -0
  271. package/dist/utils/formatter.d.ts +3 -0
  272. package/dist/utils/formatter.d.ts.map +1 -0
  273. package/dist/utils/formatter.js +110 -0
  274. package/dist/utils/fs-utils.d.ts +1 -1
  275. package/dist/utils/fs-utils.d.ts.map +1 -1
  276. package/dist/utils/fs-utils.js +17 -2
  277. package/dist/utils/lodash-able.d.ts.map +1 -1
  278. package/dist/utils/lodash-able.js +6 -2
  279. package/dist/utils/model.js +22 -2
  280. package/dist/utils/object-utils.d.ts +44 -0
  281. package/dist/utils/object-utils.d.ts.map +1 -0
  282. package/dist/utils/object-utils.js +191 -0
  283. package/dist/utils/path-utils.d.ts +89 -0
  284. package/dist/utils/path-utils.d.ts.map +1 -0
  285. package/dist/utils/path-utils.js +60 -0
  286. package/dist/utils/process-utils.d.ts +13 -0
  287. package/dist/utils/process-utils.d.ts.map +1 -0
  288. package/dist/utils/process-utils.js +36 -0
  289. package/dist/utils/sql-parser.d.ts +5 -1
  290. package/dist/utils/sql-parser.d.ts.map +1 -1
  291. package/dist/utils/sql-parser.js +46 -2
  292. package/dist/utils/type-utils.d.ts +23 -0
  293. package/dist/utils/type-utils.d.ts.map +1 -0
  294. package/dist/utils/type-utils.js +45 -0
  295. package/dist/utils/utils.d.ts +10 -7
  296. package/dist/utils/utils.d.ts.map +1 -1
  297. package/dist/utils/utils.js +72 -2
  298. package/dist/utils/zod-error.d.ts +1 -1
  299. package/dist/utils/zod-error.d.ts.map +1 -1
  300. package/dist/utils/zod-error.js +19 -2
  301. package/package.json +65 -27
  302. package/src/ai/agents/agent.ts +87 -0
  303. package/src/ai/agents/index.ts +2 -0
  304. package/src/ai/agents/types.ts +47 -0
  305. package/src/ai/index.ts +1 -0
  306. package/src/ai/providers/rtzr/api.ts +37 -0
  307. package/src/ai/providers/rtzr/error.ts +34 -0
  308. package/src/ai/providers/rtzr/index.ts +4 -0
  309. package/src/ai/providers/rtzr/model.ts +201 -0
  310. package/src/ai/providers/rtzr/options.ts +49 -0
  311. package/src/ai/providers/rtzr/provider.ts +91 -0
  312. package/src/ai/providers/rtzr/utils.ts +127 -0
  313. package/src/api/base-frame.ts +4 -2
  314. package/src/api/caster.ts +17 -23
  315. package/src/api/code-converters.ts +178 -535
  316. package/src/api/config.ts +125 -0
  317. package/src/api/context.ts +7 -17
  318. package/src/api/decorators.ts +176 -46
  319. package/src/api/index.ts +2 -2
  320. package/src/api/sonamu.ts +190 -167
  321. package/src/api/validator.ts +83 -0
  322. package/src/bin/build-config.ts +8 -1
  323. package/src/bin/cli.ts +258 -124
  324. package/src/bin/hot-hook-register.ts +22 -0
  325. package/src/bin/loader-register.ts +38 -0
  326. package/src/database/_batch_update.ts +46 -31
  327. package/src/database/base-model.ts +390 -182
  328. package/src/database/base-model.types.ts +155 -0
  329. package/src/database/code-generator.ts +13 -32
  330. package/src/database/db.ts +40 -96
  331. package/src/database/puri-subset.test-d.ts +471 -0
  332. package/src/database/puri-subset.types.ts +195 -0
  333. package/src/database/puri-wrapper.ts +58 -67
  334. package/src/database/puri.ts +229 -148
  335. package/src/database/puri.types.ts +76 -30
  336. package/src/database/transaction-context.ts +1 -1
  337. package/src/database/upsert-builder.ts +262 -132
  338. package/src/entity/entity-manager.ts +48 -36
  339. package/src/entity/entity.ts +330 -248
  340. package/src/exceptions/error-handler.ts +3 -3
  341. package/src/exceptions/so-exceptions.ts +11 -11
  342. package/src/file-storage/driver.ts +5 -5
  343. package/src/file-storage/file-storage.ts +2 -2
  344. package/src/index.ts +18 -10
  345. package/src/migration/code-generation.ts +185 -172
  346. package/src/migration/migration-set.ts +80 -293
  347. package/src/migration/migrator.ts +199 -571
  348. package/src/migration/mysql-schema-reader.ts.txt +272 -0
  349. package/src/migration/postgresql-schema-reader.ts +310 -0
  350. package/src/migration/types.ts +6 -39
  351. package/src/naite/messaging-types.ts +51 -0
  352. package/src/naite/naite-reporter.ts +128 -0
  353. package/src/naite/naite.ts +415 -0
  354. package/src/shared/web.shared.ts.txt +20 -24
  355. package/src/stream/sse.ts +5 -5
  356. package/src/syncer/api-parser.ts +282 -0
  357. package/src/syncer/checksum.ts +140 -0
  358. package/src/syncer/code-generator.ts +198 -0
  359. package/src/syncer/entity-operations.ts +65 -0
  360. package/src/syncer/file-patterns.ts +56 -0
  361. package/src/syncer/index.ts +6 -0
  362. package/src/syncer/module-loader.ts +128 -0
  363. package/src/syncer/syncer.ts +389 -1453
  364. package/src/template/entity-converter.ts +114 -0
  365. package/src/template/helpers.ts +81 -0
  366. package/src/{templates → template/implementations}/entity.template.ts +7 -7
  367. package/src/{templates → template/implementations}/generated.template.ts +101 -101
  368. package/src/{templates → template/implementations}/generated_http.template.ts +27 -57
  369. package/src/template/implementations/generated_sso.template.ts +151 -0
  370. package/src/{templates → template/implementations}/init_types.template.ts +5 -7
  371. package/src/{templates → template/implementations}/model.template.ts +52 -43
  372. package/src/{templates → template/implementations}/model_test.template.ts +5 -5
  373. package/src/{templates → template/implementations}/service.template.ts +66 -82
  374. package/src/{templates → template/implementations}/view_enums_buttonset.template.ts +3 -3
  375. package/src/{templates → template/implementations}/view_enums_dropdown.template.ts +4 -20
  376. package/src/{templates → template/implementations}/view_enums_select.template.ts +4 -4
  377. package/src/{templates → template/implementations}/view_form.template.ts +40 -83
  378. package/src/{templates → template/implementations}/view_id_all_select.template.ts +3 -3
  379. package/src/{templates → template/implementations}/view_id_async_select.template.ts +10 -24
  380. package/src/{templates → template/implementations}/view_list.template.ts +60 -152
  381. package/src/{templates → template/implementations}/view_list_columns.template.ts +5 -11
  382. package/src/{templates → template/implementations}/view_search_input.template.ts +3 -3
  383. package/src/template/index.ts +6 -0
  384. package/src/template/template-manager.ts +166 -0
  385. package/src/template/template-types.ts +16 -0
  386. package/src/template/template.ts +105 -0
  387. package/src/template/zod-converter.ts +525 -0
  388. package/src/testing/_relation-graph.ts +18 -11
  389. package/src/testing/fixture-manager.ts +472 -359
  390. package/src/types/types.ts +553 -308
  391. package/src/typings/knex.d.ts +7 -9
  392. package/src/utils/async-utils.ts +23 -10
  393. package/src/utils/console-util.ts +4 -0
  394. package/src/utils/controller.ts +3 -0
  395. package/src/utils/esm-utils.ts +59 -0
  396. package/src/utils/formatter.ts +109 -0
  397. package/src/utils/fs-utils.ts +1 -1
  398. package/src/utils/lodash-able.ts +1 -4
  399. package/src/utils/object-utils.ts +217 -0
  400. package/src/utils/path-utils.ts +99 -0
  401. package/src/utils/process-utils.ts +46 -0
  402. package/src/utils/sql-parser.ts +23 -5
  403. package/src/utils/type-utils.ts +83 -0
  404. package/src/utils/utils.ts +66 -43
  405. package/src/utils/zod-error.ts +3 -4
  406. package/dist/api/base-frame.js.map +0 -1
  407. package/dist/api/caster.js.map +0 -1
  408. package/dist/api/code-converters.js.map +0 -1
  409. package/dist/api/context.js.map +0 -1
  410. package/dist/api/decorators.js.map +0 -1
  411. package/dist/api/index.js.map +0 -1
  412. package/dist/api/sonamu.js.map +0 -1
  413. package/dist/bin/build-config.js.map +0 -1
  414. package/dist/bin/cli-wrapper.d.ts +0 -3
  415. package/dist/bin/cli-wrapper.d.ts.map +0 -1
  416. package/dist/bin/cli-wrapper.js +0 -3
  417. package/dist/bin/cli-wrapper.js.map +0 -1
  418. package/dist/bin/cli.js.map +0 -1
  419. package/dist/database/_batch_update.js.map +0 -1
  420. package/dist/database/base-model.js.map +0 -1
  421. package/dist/database/code-generator.js.map +0 -1
  422. package/dist/database/db.js.map +0 -1
  423. package/dist/database/knex-plugins/knex-on-duplicate-update.d.ts +0 -2
  424. package/dist/database/knex-plugins/knex-on-duplicate-update.d.ts.map +0 -1
  425. package/dist/database/knex-plugins/knex-on-duplicate-update.js +0 -2
  426. package/dist/database/knex-plugins/knex-on-duplicate-update.js.map +0 -1
  427. package/dist/database/puri-wrapper.js.map +0 -1
  428. package/dist/database/puri.js.map +0 -1
  429. package/dist/database/puri.types.js.map +0 -1
  430. package/dist/database/transaction-context.js.map +0 -1
  431. package/dist/database/upsert-builder.js.map +0 -1
  432. package/dist/entity/entity-manager.js.map +0 -1
  433. package/dist/entity/entity-utils.d.ts +0 -61
  434. package/dist/entity/entity-utils.d.ts.map +0 -1
  435. package/dist/entity/entity-utils.js +0 -2
  436. package/dist/entity/entity-utils.js.map +0 -1
  437. package/dist/entity/entity.js.map +0 -1
  438. package/dist/exceptions/error-handler.js.map +0 -1
  439. package/dist/exceptions/so-exceptions.js.map +0 -1
  440. package/dist/file-storage/driver.js.map +0 -1
  441. package/dist/file-storage/file-storage.js.map +0 -1
  442. package/dist/index.js.map +0 -1
  443. package/dist/migration/code-generation.js.map +0 -1
  444. package/dist/migration/migration-set.js.map +0 -1
  445. package/dist/migration/migrator.js.map +0 -1
  446. package/dist/migration/types.js.map +0 -1
  447. package/dist/stream/index.js.map +0 -1
  448. package/dist/stream/sse.js.map +0 -1
  449. package/dist/syncer/index.js.map +0 -1
  450. package/dist/syncer/syncer.js.map +0 -1
  451. package/dist/templates/base-template.d.ts +0 -13
  452. package/dist/templates/base-template.d.ts.map +0 -1
  453. package/dist/templates/base-template.js +0 -2
  454. package/dist/templates/base-template.js.map +0 -1
  455. package/dist/templates/entity.template.d.ts.map +0 -1
  456. package/dist/templates/entity.template.js +0 -2
  457. package/dist/templates/entity.template.js.map +0 -1
  458. package/dist/templates/generated.template.d.ts.map +0 -1
  459. package/dist/templates/generated.template.js +0 -2
  460. package/dist/templates/generated.template.js.map +0 -1
  461. package/dist/templates/generated_http.template.d.ts.map +0 -1
  462. package/dist/templates/generated_http.template.js +0 -2
  463. package/dist/templates/generated_http.template.js.map +0 -1
  464. package/dist/templates/generated_sso.template.d.ts.map +0 -1
  465. package/dist/templates/generated_sso.template.js +0 -2
  466. package/dist/templates/generated_sso.template.js.map +0 -1
  467. package/dist/templates/index.d.ts +0 -2
  468. package/dist/templates/index.d.ts.map +0 -1
  469. package/dist/templates/index.js +0 -2
  470. package/dist/templates/index.js.map +0 -1
  471. package/dist/templates/init_types.template.d.ts.map +0 -1
  472. package/dist/templates/init_types.template.js +0 -2
  473. package/dist/templates/init_types.template.js.map +0 -1
  474. package/dist/templates/model.template.d.ts +0 -17
  475. package/dist/templates/model.template.d.ts.map +0 -1
  476. package/dist/templates/model.template.js +0 -2
  477. package/dist/templates/model.template.js.map +0 -1
  478. package/dist/templates/model_test.template.d.ts.map +0 -1
  479. package/dist/templates/model_test.template.js +0 -2
  480. package/dist/templates/model_test.template.js.map +0 -1
  481. package/dist/templates/service.template.d.ts.map +0 -1
  482. package/dist/templates/service.template.js +0 -2
  483. package/dist/templates/service.template.js.map +0 -1
  484. package/dist/templates/view_enums_buttonset.template.d.ts.map +0 -1
  485. package/dist/templates/view_enums_buttonset.template.js +0 -2
  486. package/dist/templates/view_enums_buttonset.template.js.map +0 -1
  487. package/dist/templates/view_enums_dropdown.template.d.ts.map +0 -1
  488. package/dist/templates/view_enums_dropdown.template.js +0 -2
  489. package/dist/templates/view_enums_dropdown.template.js.map +0 -1
  490. package/dist/templates/view_enums_select.template.d.ts.map +0 -1
  491. package/dist/templates/view_enums_select.template.js +0 -2
  492. package/dist/templates/view_enums_select.template.js.map +0 -1
  493. package/dist/templates/view_form.template.d.ts.map +0 -1
  494. package/dist/templates/view_form.template.js +0 -2
  495. package/dist/templates/view_form.template.js.map +0 -1
  496. package/dist/templates/view_id_all_select.template.d.ts.map +0 -1
  497. package/dist/templates/view_id_all_select.template.js +0 -2
  498. package/dist/templates/view_id_all_select.template.js.map +0 -1
  499. package/dist/templates/view_id_async_select.template.d.ts.map +0 -1
  500. package/dist/templates/view_id_async_select.template.js +0 -2
  501. package/dist/templates/view_id_async_select.template.js.map +0 -1
  502. package/dist/templates/view_list.template.d.ts.map +0 -1
  503. package/dist/templates/view_list.template.js +0 -2
  504. package/dist/templates/view_list.template.js.map +0 -1
  505. package/dist/templates/view_list_columns.template.d.ts +0 -17
  506. package/dist/templates/view_list_columns.template.d.ts.map +0 -1
  507. package/dist/templates/view_list_columns.template.js +0 -2
  508. package/dist/templates/view_list_columns.template.js.map +0 -1
  509. package/dist/templates/view_search_input.template.d.ts.map +0 -1
  510. package/dist/templates/view_search_input.template.js +0 -2
  511. package/dist/templates/view_search_input.template.js.map +0 -1
  512. package/dist/testing/_relation-graph.js.map +0 -1
  513. package/dist/testing/fixture-manager.js.map +0 -1
  514. package/dist/types/types.js.map +0 -1
  515. package/dist/typings/knex.d.js.map +0 -1
  516. package/dist/utils/async-utils.js.map +0 -1
  517. package/dist/utils/controller.js.map +0 -1
  518. package/dist/utils/fs-utils.js.map +0 -1
  519. package/dist/utils/lodash-able.js.map +0 -1
  520. package/dist/utils/model.js.map +0 -1
  521. package/dist/utils/sql-parser.js.map +0 -1
  522. package/dist/utils/utils.js.map +0 -1
  523. package/dist/utils/zod-error.js.map +0 -1
  524. package/src/bin/cli-wrapper.ts +0 -75
  525. package/src/database/knex-plugins/knex-on-duplicate-update.ts +0 -45
  526. package/src/entity/entity-utils.ts +0 -291
  527. package/src/templates/base-template.ts +0 -19
  528. package/src/templates/generated_sso.template.ts +0 -138
  529. package/src/templates/index.ts +0 -1
@@ -0,0 +1,134 @@
1
+ import assert from "assert";
2
+ import inflection from "inflection";
3
+ import { unique } from "radashi";
4
+ import { Sonamu } from "../../api/index.js";
5
+ import { EntityManager } from "../../entity/entity-manager.js";
6
+ import { isManyToManyRelationProp } from "../../types/types.js";
7
+ import { Template } from "../template.js";
8
+ export class Template__generated_sso extends Template {
9
+ constructor(){
10
+ super("generated_sso");
11
+ }
12
+ getTargetAndPath() {
13
+ const { dir } = Sonamu.config.api;
14
+ return {
15
+ target: `${dir}/src/application`,
16
+ path: `sonamu.generated.sso.ts`
17
+ };
18
+ }
19
+ render() {
20
+ const entityIds = EntityManager.getAllIds();
21
+ const entities = entityIds.map((id)=>EntityManager.get(id));
22
+ // SubsetQueries 생성 대상: 부모 엔티티가 없고 서브셋이 존재
23
+ const targetEntities = entities.filter((entity)=>entity.parentId === undefined && Object.keys(entity.subsets).length > 0);
24
+ // SubsetQueries 생성
25
+ const sourceCodes = targetEntities.flatMap((entity)=>{
26
+ const subsetKeys = Object.keys(entity.subsets);
27
+ const subsetKeyTypeName = `${entity.names.module}SubsetKey`;
28
+ const entityCamelName = inflection.camelize(entity.id, true);
29
+ // Puri 기반 SubsetQuery
30
+ const puriSubsetQuery = {
31
+ label: `SubsetQuery: ${entity.id}`,
32
+ lines: [
33
+ `export const ${entityCamelName}SubsetQueries = {`,
34
+ ...subsetKeys.map((subsetKey)=>`${subsetKey}: (qbWrapper: PuriWrapper<DatabaseSchemaExtend>) => {
35
+ ${entity.getPuriSubsetQuery(subsetKey)};
36
+ },`),
37
+ `};`,
38
+ ""
39
+ ],
40
+ importKeys: []
41
+ };
42
+ // Puri 기반 SubsetLoadersQuery
43
+ const puriLoaderQuery = {
44
+ label: `LoaderQuery: ${entity.id}`,
45
+ lines: [
46
+ `export const ${entityCamelName}LoaderQueries = {`,
47
+ ...subsetKeys.map((subsetKey)=>{
48
+ return `${subsetKey}: ${entity.getPuriLoaderQuery(subsetKey)},`;
49
+ }),
50
+ `} as const satisfies PuriLoaderQueries<${subsetKeyTypeName}>;`,
51
+ ""
52
+ ],
53
+ importKeys: [
54
+ subsetKeyTypeName
55
+ ]
56
+ };
57
+ return [
58
+ puriSubsetQuery,
59
+ puriLoaderQuery
60
+ ];
61
+ });
62
+ // DatabaseSchema 생성
63
+ const dbSchemaSourceCode = this.getDatabaseSchemaSourceCode(entities);
64
+ if (dbSchemaSourceCode) {
65
+ sourceCodes.push(dbSchemaSourceCode);
66
+ }
67
+ const sourceCode = sourceCodes.reduce((result, ts)=>{
68
+ if (ts === null) {
69
+ return result;
70
+ }
71
+ assert(result);
72
+ return {
73
+ lines: [
74
+ ...result.lines,
75
+ `// ${ts.label}`,
76
+ ...ts.lines,
77
+ ""
78
+ ],
79
+ importKeys: unique([
80
+ ...result.importKeys,
81
+ ...ts.importKeys
82
+ ])
83
+ };
84
+ }, {
85
+ lines: [],
86
+ importKeys: []
87
+ });
88
+ const body = sourceCode.lines.join("\n");
89
+ const isUsingManyToManyBaseSchema = body.includes("ManyToManyBaseSchema");
90
+ const sonamuImports = [
91
+ "PuriWrapper",
92
+ "DatabaseSchemaExtend",
93
+ "PuriLoaderQueries",
94
+ isUsingManyToManyBaseSchema ? "ManyToManyBaseSchema" : ""
95
+ ].filter(Boolean).join(", ");
96
+ return {
97
+ ...this.getTargetAndPath(),
98
+ body: sourceCode.lines.join("\n"),
99
+ importKeys: sourceCode.importKeys,
100
+ customHeaders: [
101
+ `import { ${sonamuImports} } from "sonamu";`
102
+ ]
103
+ };
104
+ }
105
+ getDatabaseSchemaSourceCode(entities) {
106
+ if (entities.length === 0) {
107
+ return null;
108
+ }
109
+ const entitySchemaLines = entities.map((entity)=>`${entity.table}: ${entity.id}BaseSchema;`);
110
+ const joinTables = unique(entities.flatMap((entity)=>entity.props.filter(isManyToManyRelationProp).map((prop)=>{
111
+ const fromTableKey = inflection.singularize(entity.table);
112
+ const toTableKey = inflection.singularize(EntityManager.get(prop.with).table);
113
+ return {
114
+ table: prop.joinTable,
115
+ fromTableKey,
116
+ toTableKey
117
+ };
118
+ })), (joinTable)=>joinTable.table);
119
+ return {
120
+ label: `DatabaseSchema`,
121
+ lines: [
122
+ `declare module "sonamu" {`,
123
+ ` export interface DatabaseSchemaExtend {`,
124
+ ...entitySchemaLines,
125
+ ...joinTables.map((joinTable)=>`${joinTable.table}: ManyToManyBaseSchema<"${joinTable.fromTableKey}", "${joinTable.toTableKey}">;`),
126
+ ` }`,
127
+ `}`
128
+ ],
129
+ importKeys: entities.map((entity)=>`${entity.id}BaseSchema`)
130
+ };
131
+ }
132
+ }
133
+
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvZ2VuZXJhdGVkX3Nzby50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5pbXBvcnQgeyB1bmlxdWUgfSBmcm9tIFwicmFkYXNoaVwiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uLy4uL2FwaVwiO1xuaW1wb3J0IHR5cGUgeyBFbnRpdHkgfSBmcm9tIFwiLi4vLi4vZW50aXR5L2VudGl0eVwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IGlzTWFueVRvTWFueVJlbGF0aW9uUHJvcCB9IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcbmltcG9ydCB0eXBlIHsgU291cmNlQ29kZSB9IGZyb20gXCIuL2dlbmVyYXRlZC50ZW1wbGF0ZVwiO1xuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVfX2dlbmVyYXRlZF9zc28gZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiZ2VuZXJhdGVkX3Nzb1wiKTtcbiAgfVxuXG4gIGdldFRhcmdldEFuZFBhdGgoKSB7XG4gICAgY29uc3QgeyBkaXIgfSA9IFNvbmFtdS5jb25maWcuYXBpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRhcmdldDogYCR7ZGlyfS9zcmMvYXBwbGljYXRpb25gLFxuICAgICAgcGF0aDogYHNvbmFtdS5nZW5lcmF0ZWQuc3NvLnRzYCxcbiAgICB9O1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IGVudGl0eUlkcyA9IEVudGl0eU1hbmFnZXIuZ2V0QWxsSWRzKCk7XG4gICAgY29uc3QgZW50aXRpZXMgPSBlbnRpdHlJZHMubWFwKChpZCkgPT4gRW50aXR5TWFuYWdlci5nZXQoaWQpKTtcblxuICAgIC8vIFN1YnNldFF1ZXJpZXMg7IOd7ISxIOuMgOyDgTog67aA66qoIOyXlO2LsO2LsOqwgCDsl4bqs6Ag7ISc67iM7IWL7J20IOyhtOyerFxuICAgIGNvbnN0IHRhcmdldEVudGl0aWVzID0gZW50aXRpZXMuZmlsdGVyKFxuICAgICAgKGVudGl0eSkgPT4gZW50aXR5LnBhcmVudElkID09PSB1bmRlZmluZWQgJiYgT2JqZWN0LmtleXMoZW50aXR5LnN1YnNldHMpLmxlbmd0aCA+IDAsXG4gICAgKTtcblxuICAgIC8vIFN1YnNldFF1ZXJpZXMg7IOd7ISxXG4gICAgY29uc3Qgc291cmNlQ29kZXM6IFNvdXJjZUNvZGVbXSA9IHRhcmdldEVudGl0aWVzLmZsYXRNYXAoKGVudGl0eSkgPT4ge1xuICAgICAgY29uc3Qgc3Vic2V0S2V5cyA9IE9iamVjdC5rZXlzKGVudGl0eS5zdWJzZXRzKTtcblxuICAgICAgY29uc3Qgc3Vic2V0S2V5VHlwZU5hbWUgPSBgJHtlbnRpdHkubmFtZXMubW9kdWxlfVN1YnNldEtleWA7XG4gICAgICBjb25zdCBlbnRpdHlDYW1lbE5hbWUgPSBpbmZsZWN0aW9uLmNhbWVsaXplKGVudGl0eS5pZCwgdHJ1ZSk7XG5cbiAgICAgIC8vIFB1cmkg6riw67CYIFN1YnNldFF1ZXJ5XG4gICAgICBjb25zdCBwdXJpU3Vic2V0UXVlcnk6IFNvdXJjZUNvZGUgPSB7XG4gICAgICAgIGxhYmVsOiBgU3Vic2V0UXVlcnk6ICR7ZW50aXR5LmlkfWAsXG4gICAgICAgIGxpbmVzOiBbXG4gICAgICAgICAgYGV4cG9ydCBjb25zdCAke2VudGl0eUNhbWVsTmFtZX1TdWJzZXRRdWVyaWVzID0ge2AsXG4gICAgICAgICAgLi4uc3Vic2V0S2V5cy5tYXAoXG4gICAgICAgICAgICAoc3Vic2V0S2V5KSA9PiBgJHtzdWJzZXRLZXl9OiAocWJXcmFwcGVyOiBQdXJpV3JhcHBlcjxEYXRhYmFzZVNjaGVtYUV4dGVuZD4pID0+IHtcbiAgICAgICAgICAgICR7ZW50aXR5LmdldFB1cmlTdWJzZXRRdWVyeShzdWJzZXRLZXkpfTtcbiAgICAgICAgICB9LGAsXG4gICAgICAgICAgKSxcbiAgICAgICAgICBgfTtgLFxuICAgICAgICAgIFwiXCIsXG4gICAgICAgIF0sXG4gICAgICAgIGltcG9ydEtleXM6IFtdLFxuICAgICAgfTtcblxuICAgICAgLy8gUHVyaSDquLDrsJggU3Vic2V0TG9hZGVyc1F1ZXJ5XG4gICAgICBjb25zdCBwdXJpTG9hZGVyUXVlcnk6IFNvdXJjZUNvZGUgPSB7XG4gICAgICAgIGxhYmVsOiBgTG9hZGVyUXVlcnk6ICR7ZW50aXR5LmlkfWAsXG4gICAgICAgIGxpbmVzOiBbXG4gICAgICAgICAgYGV4cG9ydCBjb25zdCAke2VudGl0eUNhbWVsTmFtZX1Mb2FkZXJRdWVyaWVzID0ge2AsXG4gICAgICAgICAgLi4uc3Vic2V0S2V5cy5tYXAoKHN1YnNldEtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGAke3N1YnNldEtleX06ICR7ZW50aXR5LmdldFB1cmlMb2FkZXJRdWVyeShzdWJzZXRLZXkpfSxgO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGB9IGFzIGNvbnN0IHNhdGlzZmllcyBQdXJpTG9hZGVyUXVlcmllczwke3N1YnNldEtleVR5cGVOYW1lfT47YCxcbiAgICAgICAgICBcIlwiLFxuICAgICAgICBdLFxuICAgICAgICBpbXBvcnRLZXlzOiBbc3Vic2V0S2V5VHlwZU5hbWVdLFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIFtwdXJpU3Vic2V0UXVlcnksIHB1cmlMb2FkZXJRdWVyeV07XG4gICAgfSk7XG5cbiAgICAvLyBEYXRhYmFzZVNjaGVtYSDsg53shLFcbiAgICBjb25zdCBkYlNjaGVtYVNvdXJjZUNvZGUgPSB0aGlzLmdldERhdGFiYXNlU2NoZW1hU291cmNlQ29kZShlbnRpdGllcyk7XG4gICAgaWYgKGRiU2NoZW1hU291cmNlQ29kZSkge1xuICAgICAgc291cmNlQ29kZXMucHVzaChkYlNjaGVtYVNvdXJjZUNvZGUpO1xuICAgIH1cblxuICAgIGNvbnN0IHNvdXJjZUNvZGUgPSBzb3VyY2VDb2Rlcy5yZWR1Y2UoXG4gICAgICAocmVzdWx0LCB0cykgPT4ge1xuICAgICAgICBpZiAodHMgPT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIGFzc2VydChyZXN1bHQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpbmVzOiBbLi4ucmVzdWx0LmxpbmVzLCBgLy8gJHt0cy5sYWJlbH1gLCAuLi50cy5saW5lcywgXCJcIl0sXG4gICAgICAgICAgaW1wb3J0S2V5czogdW5pcXVlKFsuLi5yZXN1bHQuaW1wb3J0S2V5cywgLi4udHMuaW1wb3J0S2V5c10pLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGluZXM6IFtdLFxuICAgICAgICBpbXBvcnRLZXlzOiBbXSxcbiAgICAgIH0gYXMgT21pdDxTb3VyY2VDb2RlLCBcImxhYmVsXCI+LFxuICAgICk7XG5cbiAgICBjb25zdCBib2R5ID0gc291cmNlQ29kZS5saW5lcy5qb2luKFwiXFxuXCIpO1xuICAgIGNvbnN0IGlzVXNpbmdNYW55VG9NYW55QmFzZVNjaGVtYSA9IGJvZHkuaW5jbHVkZXMoXCJNYW55VG9NYW55QmFzZVNjaGVtYVwiKTtcblxuICAgIGNvbnN0IHNvbmFtdUltcG9ydHMgPSBbXG4gICAgICBcIlB1cmlXcmFwcGVyXCIsXG4gICAgICBcIkRhdGFiYXNlU2NoZW1hRXh0ZW5kXCIsXG4gICAgICBcIlB1cmlMb2FkZXJRdWVyaWVzXCIsXG4gICAgICBpc1VzaW5nTWFueVRvTWFueUJhc2VTY2hlbWEgPyBcIk1hbnlUb01hbnlCYXNlU2NoZW1hXCIgOiBcIlwiLFxuICAgIF1cbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5qb2luKFwiLCBcIik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKCksXG4gICAgICBib2R5OiBzb3VyY2VDb2RlLmxpbmVzLmpvaW4oXCJcXG5cIiksXG4gICAgICBpbXBvcnRLZXlzOiBzb3VyY2VDb2RlLmltcG9ydEtleXMsXG4gICAgICBjdXN0b21IZWFkZXJzOiBbYGltcG9ydCB7ICR7c29uYW11SW1wb3J0c30gfSBmcm9tIFwic29uYW11XCI7YF0sXG4gICAgfTtcbiAgfVxuXG4gIGdldERhdGFiYXNlU2NoZW1hU291cmNlQ29kZShlbnRpdGllczogRW50aXR5W10pOiBTb3VyY2VDb2RlIHwgbnVsbCB7XG4gICAgaWYgKGVudGl0aWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgZW50aXR5U2NoZW1hTGluZXMgPSBlbnRpdGllcy5tYXAoKGVudGl0eSkgPT4gYCR7ZW50aXR5LnRhYmxlfTogJHtlbnRpdHkuaWR9QmFzZVNjaGVtYTtgKTtcblxuICAgIGNvbnN0IGpvaW5UYWJsZXMgPSB1bmlxdWUoXG4gICAgICBlbnRpdGllcy5mbGF0TWFwKChlbnRpdHkpID0+XG4gICAgICAgIGVudGl0eS5wcm9wcy5maWx0ZXIoaXNNYW55VG9NYW55UmVsYXRpb25Qcm9wKS5tYXAoKHByb3ApID0+IHtcbiAgICAgICAgICBjb25zdCBmcm9tVGFibGVLZXkgPSBpbmZsZWN0aW9uLnNpbmd1bGFyaXplKGVudGl0eS50YWJsZSk7XG4gICAgICAgICAgY29uc3QgdG9UYWJsZUtleSA9IGluZmxlY3Rpb24uc2luZ3VsYXJpemUoRW50aXR5TWFuYWdlci5nZXQocHJvcC53aXRoKS50YWJsZSk7XG4gICAgICAgICAgcmV0dXJuIHsgdGFibGU6IHByb3Auam9pblRhYmxlLCBmcm9tVGFibGVLZXksIHRvVGFibGVLZXkgfTtcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICAgKGpvaW5UYWJsZSkgPT4gam9pblRhYmxlLnRhYmxlLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IGBEYXRhYmFzZVNjaGVtYWAsXG4gICAgICBsaW5lczogW1xuICAgICAgICBgZGVjbGFyZSBtb2R1bGUgXCJzb25hbXVcIiB7YCxcbiAgICAgICAgYCAgZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZVNjaGVtYUV4dGVuZCB7YCxcbiAgICAgICAgLi4uZW50aXR5U2NoZW1hTGluZXMsXG4gICAgICAgIC4uLmpvaW5UYWJsZXMubWFwKFxuICAgICAgICAgIChqb2luVGFibGUpID0+XG4gICAgICAgICAgICBgJHtqb2luVGFibGUudGFibGV9OiBNYW55VG9NYW55QmFzZVNjaGVtYTxcIiR7am9pblRhYmxlLmZyb21UYWJsZUtleX1cIiwgXCIke2pvaW5UYWJsZS50b1RhYmxlS2V5fVwiPjtgLFxuICAgICAgICApLFxuICAgICAgICBgICB9YCxcbiAgICAgICAgYH1gLFxuICAgICAgXSxcbiAgICAgIGltcG9ydEtleXM6IGVudGl0aWVzLm1hcCgoZW50aXR5KSA9PiBgJHtlbnRpdHkuaWR9QmFzZVNjaGVtYWApLFxuICAgIH07XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJhc3NlcnQiLCJpbmZsZWN0aW9uIiwidW5pcXVlIiwiU29uYW11IiwiRW50aXR5TWFuYWdlciIsImlzTWFueVRvTWFueVJlbGF0aW9uUHJvcCIsIlRlbXBsYXRlIiwiVGVtcGxhdGVfX2dlbmVyYXRlZF9zc28iLCJnZXRUYXJnZXRBbmRQYXRoIiwiZGlyIiwiY29uZmlnIiwiYXBpIiwidGFyZ2V0IiwicGF0aCIsInJlbmRlciIsImVudGl0eUlkcyIsImdldEFsbElkcyIsImVudGl0aWVzIiwibWFwIiwiaWQiLCJnZXQiLCJ0YXJnZXRFbnRpdGllcyIsImZpbHRlciIsImVudGl0eSIsInBhcmVudElkIiwidW5kZWZpbmVkIiwiT2JqZWN0Iiwia2V5cyIsInN1YnNldHMiLCJsZW5ndGgiLCJzb3VyY2VDb2RlcyIsImZsYXRNYXAiLCJzdWJzZXRLZXlzIiwic3Vic2V0S2V5VHlwZU5hbWUiLCJuYW1lcyIsIm1vZHVsZSIsImVudGl0eUNhbWVsTmFtZSIsImNhbWVsaXplIiwicHVyaVN1YnNldFF1ZXJ5IiwibGFiZWwiLCJsaW5lcyIsInN1YnNldEtleSIsImdldFB1cmlTdWJzZXRRdWVyeSIsImltcG9ydEtleXMiLCJwdXJpTG9hZGVyUXVlcnkiLCJnZXRQdXJpTG9hZGVyUXVlcnkiLCJkYlNjaGVtYVNvdXJjZUNvZGUiLCJnZXREYXRhYmFzZVNjaGVtYVNvdXJjZUNvZGUiLCJwdXNoIiwic291cmNlQ29kZSIsInJlZHVjZSIsInJlc3VsdCIsInRzIiwiYm9keSIsImpvaW4iLCJpc1VzaW5nTWFueVRvTWFueUJhc2VTY2hlbWEiLCJpbmNsdWRlcyIsInNvbmFtdUltcG9ydHMiLCJCb29sZWFuIiwiY3VzdG9tSGVhZGVycyIsImVudGl0eVNjaGVtYUxpbmVzIiwidGFibGUiLCJqb2luVGFibGVzIiwicHJvcHMiLCJwcm9wIiwiZnJvbVRhYmxlS2V5Iiwic2luZ3VsYXJpemUiLCJ0b1RhYmxlS2V5Iiwid2l0aCIsImpvaW5UYWJsZSJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsWUFBWSxTQUFTO0FBQzVCLE9BQU9DLGdCQUFnQixhQUFhO0FBQ3BDLFNBQVNDLE1BQU0sUUFBUSxVQUFVO0FBQ2pDLFNBQVNDLE1BQU0sUUFBUSxxQkFBWTtBQUVuQyxTQUFTQyxhQUFhLFFBQVEsaUNBQThCO0FBQzVELFNBQVNDLHdCQUF3QixRQUFRLHVCQUFvQjtBQUM3RCxTQUFTQyxRQUFRLFFBQVEsaUJBQWM7QUFHdkMsT0FBTyxNQUFNQyxnQ0FBZ0NEO0lBQzNDLGFBQWM7UUFDWixLQUFLLENBQUM7SUFDUjtJQUVBRSxtQkFBbUI7UUFDakIsTUFBTSxFQUFFQyxHQUFHLEVBQUUsR0FBR04sT0FBT08sTUFBTSxDQUFDQyxHQUFHO1FBRWpDLE9BQU87WUFDTEMsUUFBUSxHQUFHSCxJQUFJLGdCQUFnQixDQUFDO1lBQ2hDSSxNQUFNLENBQUMsdUJBQXVCLENBQUM7UUFDakM7SUFDRjtJQUVBQyxTQUFTO1FBQ1AsTUFBTUMsWUFBWVgsY0FB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
@@ -1,6 +1,6 @@
1
- import { TemplateOptions } from "../types/types";
2
- import { EntityNamesRecord } from "../entity/entity-manager";
3
- import { Template } from "./base-template";
1
+ import { type EntityNamesRecord } from "../../entity/entity-manager";
2
+ import type { TemplateOptions } from "../../types/types";
3
+ import { Template } from "../template";
4
4
  export declare class Template__init_types extends Template {
5
5
  constructor();
6
6
  getTargetAndPath(names: EntityNamesRecord): {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init_types.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/init_types.template.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,oBAAqB,SAAQ,QAAQ;;IAKhD,gBAAgB,CAAC,KAAK,EAAE,iBAAiB;;;;IASzC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,CAAC,YAAY,CAAC;;;;;;CA0BnD"}
@@ -0,0 +1,38 @@
1
+ import { Sonamu } from "../../api/index.js";
2
+ import { EntityManager } from "../../entity/entity-manager.js";
3
+ import { Template } from "../template.js";
4
+ export class Template__init_types extends Template {
5
+ constructor(){
6
+ super("init_types");
7
+ }
8
+ getTargetAndPath(names) {
9
+ const { dir } = Sonamu.config.api;
10
+ return {
11
+ target: `${dir}/src/application`,
12
+ path: `${names.fs}/${names.fs}.types.ts`
13
+ };
14
+ }
15
+ render({ entityId }) {
16
+ const names = EntityManager.getNamesFromId(entityId);
17
+ const hasCreatedAt = EntityManager.get(entityId).props.find((prop)=>prop.name === "created_at") !== undefined;
18
+ return {
19
+ ...this.getTargetAndPath(names),
20
+ body: `
21
+ import { z } from "zod";
22
+ import { ${entityId}BaseSchema, ${entityId}BaseListParams } from "../sonamu.generated";
23
+
24
+ // ${entityId} - ListParams
25
+ export const ${entityId}ListParams = ${entityId}BaseListParams;
26
+ export type ${entityId}ListParams = z.infer<typeof ${entityId}ListParams>;
27
+
28
+ // ${entityId} - SaveParams
29
+ export const ${entityId}SaveParams = ${entityId}BaseSchema.partial({ id: true${hasCreatedAt ? ", created_at: true" : ""} });
30
+ export type ${entityId}SaveParams = z.infer<typeof ${entityId}SaveParams>;
31
+
32
+ `.trim(),
33
+ importKeys: []
34
+ };
35
+ }
36
+ }
37
+
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvaW5pdF90eXBlcy50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vLi4vYXBpXCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyLCB0eXBlIEVudGl0eU5hbWVzUmVjb3JkIH0gZnJvbSBcIi4uLy4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgeyBUZW1wbGF0ZU9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSBcIi4uL3RlbXBsYXRlXCI7XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9faW5pdF90eXBlcyBleHRlbmRzIFRlbXBsYXRlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJpbml0X3R5cGVzXCIpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0QW5kUGF0aChuYW1lczogRW50aXR5TmFtZXNSZWNvcmQpIHtcbiAgICBjb25zdCB7IGRpciB9ID0gU29uYW11LmNvbmZpZy5hcGk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGFyZ2V0OiBgJHtkaXJ9L3NyYy9hcHBsaWNhdGlvbmAsXG4gICAgICBwYXRoOiBgJHtuYW1lcy5mc30vJHtuYW1lcy5mc30udHlwZXMudHNgLFxuICAgIH07XG4gIH1cblxuICByZW5kZXIoeyBlbnRpdHlJZCB9OiBUZW1wbGF0ZU9wdGlvbnNbXCJpbml0X3R5cGVzXCJdKSB7XG4gICAgY29uc3QgbmFtZXMgPSBFbnRpdHlNYW5hZ2VyLmdldE5hbWVzRnJvbUlkKGVudGl0eUlkKTtcblxuICAgIGNvbnN0IGhhc0NyZWF0ZWRBdCA9XG4gICAgICBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlJZCkucHJvcHMuZmluZCgocHJvcCkgPT4gcHJvcC5uYW1lID09PSBcImNyZWF0ZWRfYXRcIikgIT09IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmdldFRhcmdldEFuZFBhdGgobmFtZXMpLFxuICAgICAgYm9keTogYFxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7ICR7ZW50aXR5SWR9QmFzZVNjaGVtYSwgJHtlbnRpdHlJZH1CYXNlTGlzdFBhcmFtcyB9IGZyb20gXCIuLi9zb25hbXUuZ2VuZXJhdGVkXCI7XG5cbi8vICR7ZW50aXR5SWR9IC0gTGlzdFBhcmFtc1xuZXhwb3J0IGNvbnN0ICR7ZW50aXR5SWR9TGlzdFBhcmFtcyA9ICR7ZW50aXR5SWR9QmFzZUxpc3RQYXJhbXM7XG5leHBvcnQgdHlwZSAke2VudGl0eUlkfUxpc3RQYXJhbXMgPSB6LmluZmVyPHR5cGVvZiAke2VudGl0eUlkfUxpc3RQYXJhbXM+O1xuXG4vLyAke2VudGl0eUlkfSAtIFNhdmVQYXJhbXNcbmV4cG9ydCBjb25zdCAke2VudGl0eUlkfVNhdmVQYXJhbXMgPSAke2VudGl0eUlkfUJhc2VTY2hlbWEucGFydGlhbCh7IGlkOiB0cnVlJHtcbiAgICAgICAgaGFzQ3JlYXRlZEF0ID8gXCIsIGNyZWF0ZWRfYXQ6IHRydWVcIiA6IFwiXCJcbiAgICAgIH0gfSk7XG5leHBvcnQgdHlwZSAke2VudGl0eUlkfVNhdmVQYXJhbXMgPSB6LmluZmVyPHR5cGVvZiAke2VudGl0eUlkfVNhdmVQYXJhbXM+O1xuXG4gICAgICBgLnRyaW0oKSxcbiAgICAgIGltcG9ydEtleXM6IFtdLFxuICAgIH07XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJTb25hbXUiLCJFbnRpdHlNYW5hZ2VyIiwiVGVtcGxhdGUiLCJUZW1wbGF0ZV9faW5pdF90eXBlcyIsImdldFRhcmdldEFuZFBhdGgiLCJuYW1lcyIsImRpciIsImNvbmZpZyIsImFwaSIsInRhcmdldCIsInBhdGgiLCJmcyIsInJlbmRlciIsImVudGl0eUlkIiwiZ2V0TmFtZXNGcm9tSWQiLCJoYXNDcmVhdGVkQXQiLCJnZXQiLCJwcm9wcyIsImZpbmQiLCJwcm9wIiwibmFtZSIsInVuZGVmaW5lZCIsImJvZHkiLCJ0cmltIiwiaW1wb3J0S2V5cyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsTUFBTSxRQUFRLHFCQUFZO0FBQ25DLFNBQVNDLGFBQWEsUUFBZ0MsaUNBQThCO0FBRXBGLFNBQVNDLFFBQVEsUUFBUSxpQkFBYztBQUV2QyxPQUFPLE1BQU1DLDZCQUE2QkQ7SUFDeEMsYUFBYztRQUNaLEtBQUssQ0FBQztJQUNSO0lBRUFFLGlCQUFpQkMsS0FBd0IsRUFBRTtRQUN6QyxNQUFNLEVBQUVDLEdBQUcsRUFBRSxHQUFHTixPQUFPTyxNQUFNLENBQUNDLEdBQUc7UUFFakMsT0FBTztZQUNMQyxRQUFRLEdBQUdILElBQUksZ0JBQWdCLENBQUM7WUFDaENJLE1BQU0sR0FBR0wsTUFBTU0sRUFBRSxDQUFDLENBQUMsRUFBRU4sTUFBTU0sRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUMxQztJQUNGO0lBRUFDLE9BQU8sRUFBRUMsUUFBUSxFQUFpQyxFQUFFO1FBQ2xELE1BQU1SLFFBQVFKLGNBQWNhLGNBQWMsQ0FBQ0Q7UUFFM0MsTUFBTUUsZUFDSmQsY0FBY2UsR0FBRyxDQUFDSCxVQUFVSSxLQUFLLENBQUNDLElBQUksQ0FBQyxDQUFDQyxPQUFTQSxLQUFLQyxJQUFJLEtBQUssa0JBQWtCQztRQUVuRixPQUFPO1lBQ0wsR0FBRyxJQUFJLENBQUNqQixnQkFBZ0IsQ0FBQ0MsTUFBTTtZQUMvQmlCLE1BQU0sQ0FBQzs7U0FFSixFQUFFVCxTQUFTLFlBQVksRUFBRUEsU0FBUzs7R0FFeEMsRUFBRUEsU0FBUzthQUNELEVBQUVBLFNBQVMsYUFBYSxFQUFFQSxTQUFTO1lBQ3BDLEVBQUVBLFNBQVMsNEJBQTRCLEVBQUVBLFNBQVM7O0dBRTNELEVBQUVBLFNBQVM7YUFDRCxFQUFFQSxTQUFTLGFBQWEsRUFBRUEsU0FBUyw2QkFBNkIsRUFDckVFLGVBQWUsdUJBQXVCLEdBQ3ZDO1lBQ0ssRUFBRUYsU0FBUyw0QkFBNEIsRUFBRUEsU0FBUzs7TUFFeEQsQ0FBQyxDQUFDVSxJQUFJO1lBQ05DLFlBQVksRUFBRTtRQUNoQjtJQUNGO0FBQ0YifQ==
@@ -0,0 +1,17 @@
1
+ import { type EntityNamesRecord } from "../../entity/entity-manager";
2
+ import type { TemplateOptions } from "../../types/types";
3
+ import { Template } from "../template";
4
+ export declare class Template__model extends Template {
5
+ constructor();
6
+ getTargetAndPath(names: EntityNamesRecord): {
7
+ target: string;
8
+ path: string;
9
+ };
10
+ render({ entityId }: TemplateOptions["model"]): Promise<{
11
+ body: string;
12
+ importKeys: never[];
13
+ target: string;
14
+ path: string;
15
+ }>;
16
+ }
17
+ //# sourceMappingURL=model.template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/model.template.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIvC,qBAAa,eAAgB,SAAQ,QAAQ;;IAK3C,gBAAgB,CAAC,KAAK,EAAE,iBAAiB;;;;IASnC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,CAAC,OAAO,CAAC;;;;;;CAmKpD"}
@@ -0,0 +1,181 @@
1
+ import { Sonamu } from "../../api/index.js";
2
+ import { EntityManager } from "../../entity/entity-manager.js";
3
+ import { Naite } from "../../naite/naite.js";
4
+ import { Template } from "../template.js";
5
+ import { getZodTypeById, zodTypeToRenderingNode } from "../zod-converter.js";
6
+ import { Template__view_list } from "./view_list.template.js";
7
+ export class Template__model extends Template {
8
+ constructor(){
9
+ super("model");
10
+ }
11
+ getTargetAndPath(names) {
12
+ const { dir } = Sonamu.config.api;
13
+ return {
14
+ target: `${dir}/src/application`,
15
+ path: `${names.fs}/${names.fs}.model.ts`
16
+ };
17
+ }
18
+ async render({ entityId }) {
19
+ Naite.t("render", {
20
+ entityId
21
+ });
22
+ const listParamsZodType = await getZodTypeById(`${entityId}ListParams`);
23
+ const listParamsNode = zodTypeToRenderingNode(listParamsZodType);
24
+ const names = EntityManager.getNamesFromId(entityId);
25
+ const entity = EntityManager.get(entityId);
26
+ const vlTpl = new Template__view_list();
27
+ if (listParamsNode?.children === undefined) {
28
+ throw new Error(`listParamsNode가 없습니다. ${entityId}`);
29
+ }
30
+ const def = vlTpl.getDefault(listParamsNode.children);
31
+ return {
32
+ ...this.getTargetAndPath(names),
33
+ body: `
34
+ import { BaseModelClass, type ListResult, asArray, NotFoundException, BadRequestException, api, exhaustive } from 'sonamu';
35
+ import {
36
+ ${entityId}SubsetKey,
37
+ ${entityId}SubsetMapping,
38
+ } from "../sonamu.generated";
39
+ import {
40
+ ${names.camel}SubsetQueries,
41
+ ${names.camel}LoaderQueries,
42
+ } from "../sonamu.generated.sso";
43
+ import { ${entityId}ListParams, ${entityId}SaveParams } from "./${names.fs}.types";
44
+
45
+ /*
46
+ ${entityId} Model
47
+ */
48
+ class ${entityId}ModelClass extends BaseModelClass<
49
+ ${entityId}SubsetKey,
50
+ ${entityId}SubsetMapping,
51
+ typeof ${names.camel}SubsetQueries,
52
+ typeof ${names.camel}LoaderQueries
53
+ > {
54
+ modelName = "${entityId}";
55
+
56
+ @api({ httpMethod: "GET", clients: ["axios", "swr"], resourceName: "${entityId}" })
57
+ async findById<T extends ${entityId}SubsetKey>(
58
+ subset: T,
59
+ id: number
60
+ ): Promise<${entityId}SubsetMapping[T]> {
61
+ const { rows } = await this.findMany(subset, {
62
+ id,
63
+ num: 1,
64
+ page: 1,
65
+ });
66
+ if (!rows[0]) {
67
+ throw new NotFoundException(\`존재하지 않는 ${names.capital} ID \${id}\`);
68
+ }
69
+
70
+ return rows[0];
71
+ }
72
+
73
+ async findOne<T extends ${entityId}SubsetKey>(
74
+ subset: T,
75
+ listParams: ${entityId}ListParams
76
+ ): Promise<${entityId}SubsetMapping[T] | null> {
77
+ const { rows } = await this.findMany(subset, {
78
+ ...listParams,
79
+ num: 1,
80
+ page: 1,
81
+ });
82
+
83
+ return rows[0] ?? null;
84
+ }
85
+
86
+ @api({ httpMethod: "GET", clients: ["axios", "swr"], resourceName: "${names.capitalPlural}" })
87
+ async findMany<T extends ${entityId}SubsetKey>(
88
+ subset: T,
89
+ params: ${entityId}ListParams = {}
90
+ ): Promise<ListResult<${entityId}SubsetMapping[T]>> {
91
+ // params with defaults
92
+ params = {
93
+ num: 24,
94
+ page: 1,
95
+ search: "${def.search}",
96
+ orderBy: "${def.orderBy}",
97
+ ...params,
98
+ };
99
+
100
+ // build queries
101
+ const { qb, onSubset: _ } = this.getSubsetQueries(subset);
102
+
103
+ // id
104
+ if (params.id) {
105
+ qb.whereIn("${entity.table}.id", asArray(params.id));
106
+ }
107
+
108
+ // search-keyword
109
+ if (params.search && params.keyword && params.keyword.length > 0) {
110
+ if (params.search === "id") {
111
+ qb.where("${entity.table}.id", Number(params.keyword));
112
+ // } else if (params.search === "field") {
113
+ // qb.where("${entity.table}.field", "like", \`%\${params.keyword}%\`);
114
+ } else {
115
+ throw new BadRequestException(\`구현되지 않은 검색 필드 \${params.search}\`);
116
+ }
117
+ }
118
+
119
+ // orderBy
120
+ if (params.orderBy) {
121
+ // default orderBy
122
+ if (params.orderBy === "id-desc") {
123
+ qb.orderBy("${entity.table}.id", "desc");
124
+ } else {
125
+ exhaustive(params.orderBy);
126
+ }
127
+ }
128
+
129
+ const { rows, total } = await this.executeSubsetQuery({
130
+ subset,
131
+ qb,
132
+ params,
133
+ debug: false,
134
+ });
135
+
136
+ return {
137
+ rows,
138
+ total,
139
+ };
140
+ }
141
+
142
+ @api({ httpMethod: "POST" })
143
+ async save(
144
+ spa: ${entityId}SaveParams[]
145
+ ): Promise<number[]> {
146
+ const wdb = this.getPuri("w");
147
+
148
+ // register
149
+ spa.forEach((sp) => {
150
+ wdb.ubRegister("${entity.table}", sp);
151
+ });
152
+
153
+ // transaction
154
+ return wdb.transaction(async (trx) => {
155
+ const ids = await trx.ubUpsert("${entity.table}");
156
+
157
+ return ids;
158
+ });
159
+ }
160
+
161
+ @api({ httpMethod: "POST", guards: [ "admin" ] })
162
+ async del(ids: number[]): Promise<number> {
163
+ const wdb = this.getPuri("w");
164
+
165
+ // transaction
166
+ await wdb.transaction(async (trx) => {
167
+ return trx.table("${entity.table}").whereIn("${entity.table}.id", ids).delete();
168
+ });
169
+
170
+ return ids.length;
171
+ }
172
+ }
173
+
174
+ export const ${entityId}Model = new ${entityId}ModelClass(${names.camel}SubsetQueries, ${names.camel}LoaderQueries);
175
+ `.trim(),
176
+ importKeys: []
177
+ };
178
+ }
179
+ }
180
+
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvbW9kZWwudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uLy4uL2FwaVwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciwgdHlwZSBFbnRpdHlOYW1lc1JlY29yZCB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IE5haXRlIH0gZnJvbSBcIi4uLy4uL25haXRlL25haXRlXCI7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlT3B0aW9ucyB9IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcbmltcG9ydCB7IGdldFpvZFR5cGVCeUlkLCB6b2RUeXBlVG9SZW5kZXJpbmdOb2RlIH0gZnJvbSBcIi4uL3pvZC1jb252ZXJ0ZXJcIjtcbmltcG9ydCB7IFRlbXBsYXRlX192aWV3X2xpc3QgfSBmcm9tIFwiLi92aWV3X2xpc3QudGVtcGxhdGVcIjtcblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlX19tb2RlbCBleHRlbmRzIFRlbXBsYXRlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJtb2RlbFwiKTtcbiAgfVxuXG4gIGdldFRhcmdldEFuZFBhdGgobmFtZXM6IEVudGl0eU5hbWVzUmVjb3JkKSB7XG4gICAgY29uc3QgeyBkaXIgfSA9IFNvbmFtdS5jb25maWcuYXBpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRhcmdldDogYCR7ZGlyfS9zcmMvYXBwbGljYXRpb25gLFxuICAgICAgcGF0aDogYCR7bmFtZXMuZnN9LyR7bmFtZXMuZnN9Lm1vZGVsLnRzYCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgcmVuZGVyKHsgZW50aXR5SWQgfTogVGVtcGxhdGVPcHRpb25zW1wibW9kZWxcIl0pIHtcbiAgICBOYWl0ZS50KFwicmVuZGVyXCIsIHsgZW50aXR5SWQgfSk7XG5cbiAgICBjb25zdCBsaXN0UGFyYW1zWm9kVHlwZSA9IGF3YWl0IGdldFpvZFR5cGVCeUlkKGAke2VudGl0eUlkfUxpc3RQYXJhbXNgKTtcbiAgICBjb25zdCBsaXN0UGFyYW1zTm9kZSA9IHpvZFR5cGVUb1JlbmRlcmluZ05vZGUobGlzdFBhcmFtc1pvZFR5cGUpO1xuXG4gICAgY29uc3QgbmFtZXMgPSBFbnRpdHlNYW5hZ2VyLmdldE5hbWVzRnJvbUlkKGVudGl0eUlkKTtcbiAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlJZCk7XG5cbiAgICBjb25zdCB2bFRwbCA9IG5ldyBUZW1wbGF0ZV9fdmlld19saXN0KCk7XG4gICAgaWYgKGxpc3RQYXJhbXNOb2RlPy5jaGlsZHJlbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGxpc3RQYXJhbXNOb2Rl6rCAIOyXhuyKteuLiOuLpC4gJHtlbnRpdHlJZH1gKTtcbiAgICB9XG4gICAgY29uc3QgZGVmID0gdmxUcGwuZ2V0RGVmYXVsdChsaXN0UGFyYW1zTm9kZS5jaGlsZHJlbik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKG5hbWVzKSxcbiAgICAgIGJvZHk6IGBcbmltcG9ydCB7IEJhc2VNb2RlbENsYXNzLCB0eXBlIExpc3RSZXN1bHQsIGFzQXJyYXksIE5vdEZvdW5kRXhjZXB0aW9uLCBCYWRSZXF1ZXN0RXhjZXB0aW9uLCBhcGksIGV4aGF1c3RpdmUgfSBmcm9tICdzb25hbXUnO1xuaW1wb3J0IHtcbiAgJHtlbnRpdHlJZH1TdWJzZXRLZXksXG4gICR7ZW50aXR5SWR9U3Vic2V0TWFwcGluZyxcbn0gZnJvbSBcIi4uL3NvbmFtdS5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7XG4gICR7bmFtZXMuY2FtZWx9U3Vic2V0UXVlcmllcyxcbiAgJHtuYW1lcy5jYW1lbH1Mb2FkZXJRdWVyaWVzLFxufSBmcm9tIFwiLi4vc29uYW11LmdlbmVyYXRlZC5zc29cIjtcbmltcG9ydCB7ICR7ZW50aXR5SWR9TGlzdFBhcmFtcywgJHtlbnRpdHlJZH1TYXZlUGFyYW1zIH0gZnJvbSBcIi4vJHtuYW1lcy5mc30udHlwZXNcIjtcblxuLypcbiAgJHtlbnRpdHlJZH0gTW9kZWxcbiovXG5jbGFzcyAke2VudGl0eUlkfU1vZGVsQ2xhc3MgZXh0ZW5kcyBCYXNlTW9kZWxDbGFzczxcbiAgJHtlbnRpdHlJZH1TdWJzZXRLZXksXG4gICR7ZW50aXR5SWR9U3Vic2V0TWFwcGluZyxcbiAgdHlwZW9mICR7bmFtZXMuY2FtZWx9U3Vic2V0UXVlcmllcyxcbiAgdHlwZW9mICR7bmFtZXMuY2FtZWx9TG9hZGVyUXVlcmllc1xuPiB7XG4gIG1vZGVsTmFtZSA9IFwiJHtlbnRpdHlJZH1cIjtcblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJHRVRcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJzd3JcIl0sIHJlc291cmNlTmFtZTogXCIke2VudGl0eUlkfVwiIH0pXG4gIGFzeW5jIGZpbmRCeUlkPFQgZXh0ZW5kcyAke2VudGl0eUlkfVN1YnNldEtleT4oXG4gICAgc3Vic2V0OiBULFxuICAgIGlkOiBudW1iZXJcbiAgKTogUHJvbWlzZTwke2VudGl0eUlkfVN1YnNldE1hcHBpbmdbVF0+IHtcbiAgICBjb25zdCB7IHJvd3MgfSA9IGF3YWl0IHRoaXMuZmluZE1hbnkoc3Vic2V0LCB7XG4gICAgICBpZCxcbiAgICAgIG51bTogMSxcbiAgICAgIHBhZ2U6IDEsXG4gICAgfSk7XG4gICAgaWYgKCFyb3dzWzBdKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb24oXFxg7KG07J6s7ZWY7KeAIOyViuuKlCAke25hbWVzLmNhcGl0YWx9IElEIFxcJHtpZH1cXGApO1xuICAgIH1cblxuICAgIHJldHVybiByb3dzWzBdO1xuICB9XG5cbiAgYXN5bmMgZmluZE9uZTxUIGV4dGVuZHMgJHtlbnRpdHlJZH1TdWJzZXRLZXk+KFxuICAgIHN1YnNldDogVCxcbiAgICBsaXN0UGFyYW1zOiAke2VudGl0eUlkfUxpc3RQYXJhbXNcbiAgKTogUHJvbWlzZTwke2VudGl0eUlkfVN1YnNldE1hcHBpbmdbVF0gfCBudWxsPiB7XG4gICAgY29uc3QgeyByb3dzIH0gPSBhd2FpdCB0aGlzLmZpbmRNYW55KHN1YnNldCwge1xuICAgICAgLi4ubGlzdFBhcmFtcyxcbiAgICAgIG51bTogMSxcbiAgICAgIHBhZ2U6IDEsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcm93c1swXSA/PyBudWxsO1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiR0VUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwic3dyXCJdLCByZXNvdXJjZU5hbWU6IFwiJHtuYW1lcy5jYXBpdGFsUGx1cmFsfVwiIH0pXG4gIGFzeW5jIGZpbmRNYW55PFQgZXh0ZW5kcyAke2VudGl0eUlkfVN1YnNldEtleT4oXG4gICAgc3Vic2V0OiBULFxuICAgIHBhcmFtczogJHtlbnRpdHlJZH1MaXN0UGFyYW1zID0ge31cbiAgKTogUHJvbWlzZTxMaXN0UmVzdWx0PCR7ZW50aXR5SWR9U3Vic2V0TWFwcGluZ1tUXT4+IHtcbiAgICAvLyBwYXJhbXMgd2l0aCBkZWZhdWx0c1xuICAgIHBhcmFtcyA9IHtcbiAgICAgIG51bTogMjQsXG4gICAgICBwYWdlOiAxLFxuICAgICAgc2VhcmNoOiBcIiR7ZGVmLnNlYXJjaH1cIixcbiAgICAgIG9yZGVyQnk6IFwiJHtkZWYub3JkZXJCeX1cIixcbiAgICAgIC4uLnBhcmFtcyxcbiAgICB9O1xuXG4gICAgLy8gYnVpbGQgcXVlcmllc1xuICAgIGNvbnN0IHsgcWIsIG9uU3Vic2V0OiBfIH0gPSB0aGlzLmdldFN1YnNldFF1ZXJpZXMoc3Vic2V0KTtcbiAgICBcbiAgICAvLyBpZFxuICAgIGlmIChwYXJhbXMuaWQpIHtcbiAgICAgIHFiLndoZXJlSW4oXCIke2VudGl0eS50YWJsZX0uaWRcIiwgYXNBcnJheShwYXJhbXMuaWQpKTtcbiAgICB9XG5cbiAgICAvLyBzZWFyY2gta2V5d29yZFxuICAgIGlmIChwYXJhbXMuc2VhcmNoICYmIHBhcmFtcy5rZXl3b3JkICYmIHBhcmFtcy5rZXl3b3JkLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmIChwYXJhbXMuc2VhcmNoID09PSBcImlkXCIpIHtcbiAgICAgICAgcWIud2hlcmUoXCIke2VudGl0eS50YWJsZX0uaWRcIiwgTnVtYmVyKHBhcmFtcy5rZXl3b3JkKSk7XG4gICAgICAgIC8vIH0gZWxzZSBpZiAocGFyYW1zLnNlYXJjaCA9PT0gXCJmaWVsZFwiKSB7XG4gICAgICAgIC8vICAgcWIud2hlcmUoXCIke2VudGl0eS50YWJsZX0uZmllbGRcIiwgXCJsaWtlXCIsIFxcYCVcXCR7cGFyYW1zLmtleXdvcmR9JVxcYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgQmFkUmVxdWVzdEV4Y2VwdGlvbihcXGDqtaztmITrkJjsp4Ag7JWK7J2AIOqygOyDiSDtlYTrk5wgXFwke3BhcmFtcy5zZWFyY2h9XFxgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgICBcbiAgICAvLyBvcmRlckJ5XG4gICAgaWYgKHBhcmFtcy5vcmRlckJ5KSB7XG4gICAgICAvLyBkZWZhdWx0IG9yZGVyQnlcbiAgICAgIGlmIChwYXJhbXMub3JkZXJCeSA9PT0gXCJpZC1kZXNjXCIpIHtcbiAgICAgICAgcWIub3JkZXJCeShcIiR7ZW50aXR5LnRhYmxlfS5pZFwiLCBcImRlc2NcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleGhhdXN0aXZlKHBhcmFtcy5vcmRlckJ5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgY29uc3QgeyByb3dzLCB0b3RhbCB9ID0gYXdhaXQgdGhpcy5leGVjdXRlU3Vic2V0UXVlcnkoe1xuICAgICAgc3Vic2V0LFxuICAgICAgcWIsXG4gICAgICBwYXJhbXMsXG4gICAgICBkZWJ1ZzogZmFsc2UsXG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcm93cyxcbiAgICAgIHRvdGFsLFxuICAgIH07XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIgfSlcbiAgYXN5bmMgc2F2ZShcbiAgICBzcGE6ICR7ZW50aXR5SWR9U2F2ZVBhcmFtc1tdXG4gICk6IFByb21pc2U8bnVtYmVyW10+IHtcbiAgICBjb25zdCB3ZGIgPSB0aGlzLmdldFB1cmkoXCJ3XCIpO1xuXG4gICAgLy8gcmVnaXN0ZXJcbiAgICBzcGEuZm9yRWFjaCgoc3ApID0+IHtcbiAgICAgIHdkYi51YlJlZ2lzdGVyKFwiJHtlbnRpdHkudGFibGV9XCIsIHNwKTtcbiAgICB9KTtcblxuICAgIC8vIHRyYW5zYWN0aW9uXG4gICAgcmV0dXJuIHdkYi50cmFuc2FjdGlvbihhc3luYyAodHJ4KSA9PiB7XG4gICAgICBjb25zdCBpZHMgPSBhd2FpdCB0cngudWJVcHNlcnQoXCIke2VudGl0eS50YWJsZX1cIik7XG5cbiAgICAgIHJldHVybiBpZHM7XG4gICAgfSk7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGd1YXJkczogWyBcImFkbWluXCIgXSB9KVxuICBhc3luYyBkZWwoaWRzOiBudW1iZXJbXSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3Qgd2RiID0gdGhpcy5nZXRQdXJpKFwid1wiKTtcblxuICAgIC8vIHRyYW5zYWN0aW9uXG4gICAgYXdhaXQgd2RiLnRyYW5zYWN0aW9uKGFzeW5jICh0cngpID0+IHtcbiAgICAgIHJldHVybiB0cngudGFibGUoXCIke2VudGl0eS50YWJsZX1cIikud2hlcmVJbihcIiR7ZW50aXR5LnRhYmxlfS5pZFwiLCBpZHMpLmRlbGV0ZSgpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGlkcy5sZW5ndGg7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0ICR7ZW50aXR5SWR9TW9kZWwgPSBuZXcgJHtlbnRpdHlJZH1Nb2RlbENsYXNzKCR7bmFtZXMuY2FtZWx9U3Vic2V0UXVlcmllcywgJHtuYW1lcy5jYW1lbH1Mb2FkZXJRdWVyaWVzKTtcbiAgICAgIGAudHJpbSgpLFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgfTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlNvbmFtdSIsIkVudGl0eU1hbmFnZXIiLCJOYWl0ZSIsIlRlbXBsYXRlIiwiZ2V0Wm9kVHlwZUJ5SWQiLCJ6b2RUeXBlVG9SZW5kZXJpbmdOb2RlIiwiVGVtcGxhdGVfX3ZpZXdfbGlzdCIsIlRlbXBsYXRlX19tb2RlbCIsImdldFRhcmdldEFuZFBhdGgiLCJuYW1lcyIsImRpciIsImNvbmZpZyIsImFwaSIsInRhcmdldCIsInBhdGgiLCJmcyIsInJlbmRlciIsImVudGl0eUlkIiwidCIsImxpc3RQYXJhbXNab2RUeXBlIiwibGlzdFBhcmFtc05vZGUiLCJnZXROYW1lc0Zyb21JZCIsImVudGl0eSIsImdldCIsInZsVHBsIiwiY2hpbGRyZW4iLCJ1bmRlZmluZWQiLCJFcnJvciIsImRlZiIsImdldERlZmF1bHQiLCJib2R5IiwiY2FtZWwiLCJjYXBpdGFsIiwiY2FwaXRhbFBsdXJhbCIsInNlYXJjaCIsIm9yZGVyQnkiLCJ0YWJsZSIsInRyaW0iLCJpbXBvcnRLZXlzIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxNQUFNLFFBQVEscUJBQVk7QUFDbkMsU0FBU0MsYUFBYSxRQUFnQyxpQ0FBOEI7QUFDcEYsU0FBU0MsS0FBSyxRQUFRLHVCQUFvQjtBQUUxQyxTQUFTQyxRQUFRLFFBQVEsaUJBQWM7QUFDdkMsU0FBU0MsY0FBYyxFQUFFQyxzQkFBc0IsUUFBUSxzQkFBbUI7QUFDMUUsU0FBU0MsbUJBQW1CLFFBQVEsMEJBQXVCO0FBRTNELE9BQU8sTUFBTUMsd0JBQXdCSjtJQUNuQyxhQUFjO1FBQ1osS0FBSyxDQUFDO0lBQ1I7SUFFQUssaUJBQWlCQyxLQUF3QixFQUFFO1FBQ3pDLE1BQU0sRUFBRUMsR0FBRyxFQUFFLEdBQUdWLE9BQU9XLE1BQU0sQ0FBQ0MsR0FBRztRQUVqQyxPQUFPO1lBQ0xDLFFBQVEsR0FBR0gsSUFBSSxnQkFBZ0IsQ0FBQztZQUNoQ0ksTUFBTSxHQUFHTCxNQUFN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
@@ -1,6 +1,6 @@
1
- import { TemplateOptions } from "../types/types";
2
- import { EntityNamesRecord } from "../entity/entity-manager";
3
- import { Template } from "./base-template";
1
+ import { type EntityNamesRecord } from "../../entity/entity-manager";
2
+ import type { TemplateOptions } from "../../types/types";
3
+ import { Template } from "../template";
4
4
  export declare class Template__model_test extends Template {
5
5
  constructor();
6
6
  getTargetAndPath(names: EntityNamesRecord): {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model_test.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/model_test.template.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,oBAAqB,SAAQ,QAAQ;;IAKhD,gBAAgB,CAAC,KAAK,EAAE,iBAAiB;;;;IASzC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,CAAC,YAAY,CAAC;;;;;;CAmBnD"}
@@ -0,0 +1,35 @@
1
+ import { Sonamu } from "../../api/index.js";
2
+ import { EntityManager } from "../../entity/entity-manager.js";
3
+ import { Template } from "../template.js";
4
+ export class Template__model_test extends Template {
5
+ constructor(){
6
+ super("model_test");
7
+ }
8
+ getTargetAndPath(names) {
9
+ const { dir } = Sonamu.config.api;
10
+ return {
11
+ target: `${dir}/src/application`,
12
+ path: `${names.fs}/${names.fs}.model.test.ts`
13
+ };
14
+ }
15
+ render({ entityId }) {
16
+ const names = EntityManager.getNamesFromId(entityId);
17
+ return {
18
+ ...this.getTargetAndPath(names),
19
+ body: `
20
+ import { describe, test, expect } from "vitest";
21
+ import { bootstrap } from '../../testing/bootstrap';
22
+
23
+ bootstrap();
24
+ describe.skip("${entityId}ModelTest", () => {
25
+ test("Query", async () => {
26
+ expect(true).toBe(true);
27
+ });
28
+ });
29
+ `.trim(),
30
+ importKeys: []
31
+ };
32
+ }
33
+ }
34
+
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvbW9kZWxfdGVzdC50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vLi4vYXBpXCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyLCB0eXBlIEVudGl0eU5hbWVzUmVjb3JkIH0gZnJvbSBcIi4uLy4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgeyBUZW1wbGF0ZU9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSBcIi4uL3RlbXBsYXRlXCI7XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9fbW9kZWxfdGVzdCBleHRlbmRzIFRlbXBsYXRlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJtb2RlbF90ZXN0XCIpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0QW5kUGF0aChuYW1lczogRW50aXR5TmFtZXNSZWNvcmQpIHtcbiAgICBjb25zdCB7IGRpciB9ID0gU29uYW11LmNvbmZpZy5hcGk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGFyZ2V0OiBgJHtkaXJ9L3NyYy9hcHBsaWNhdGlvbmAsXG4gICAgICBwYXRoOiBgJHtuYW1lcy5mc30vJHtuYW1lcy5mc30ubW9kZWwudGVzdC50c2AsXG4gICAgfTtcbiAgfVxuXG4gIHJlbmRlcih7IGVudGl0eUlkIH06IFRlbXBsYXRlT3B0aW9uc1tcIm1vZGVsX3Rlc3RcIl0pIHtcbiAgICBjb25zdCBuYW1lcyA9IEVudGl0eU1hbmFnZXIuZ2V0TmFtZXNGcm9tSWQoZW50aXR5SWQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuZ2V0VGFyZ2V0QW5kUGF0aChuYW1lcyksXG4gICAgICBib2R5OiBgXG5pbXBvcnQgeyBkZXNjcmliZSwgdGVzdCwgZXhwZWN0IH0gZnJvbSBcInZpdGVzdFwiO1xuaW1wb3J0IHsgYm9vdHN0cmFwIH0gZnJvbSAnLi4vLi4vdGVzdGluZy9ib290c3RyYXAnO1xuXG5ib290c3RyYXAoKTtcbmRlc2NyaWJlLnNraXAoXCIke2VudGl0eUlkfU1vZGVsVGVzdFwiLCAoKSA9PiB7XG4gIHRlc3QoXCJRdWVyeVwiLCBhc3luYyAoKSA9PiB7XG4gICAgZXhwZWN0KHRydWUpLnRvQmUodHJ1ZSk7XG4gIH0pO1xufSk7XG4gICAgICBgLnRyaW0oKSxcbiAgICAgIGltcG9ydEtleXM6IFtdLFxuICAgIH07XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJTb25hbXUiLCJFbnRpdHlNYW5hZ2VyIiwiVGVtcGxhdGUiLCJUZW1wbGF0ZV9fbW9kZWxfdGVzdCIsImdldFRhcmdldEFuZFBhdGgiLCJuYW1lcyIsImRpciIsImNvbmZpZyIsImFwaSIsInRhcmdldCIsInBhdGgiLCJmcyIsInJlbmRlciIsImVudGl0eUlkIiwiZ2V0TmFtZXNGcm9tSWQiLCJib2R5IiwidHJpbSIsImltcG9ydEtleXMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLE1BQU0sUUFBUSxxQkFBWTtBQUNuQyxTQUFTQyxhQUFhLFFBQWdDLGlDQUE4QjtBQUVwRixTQUFTQyxRQUFRLFFBQVEsaUJBQWM7QUFFdkMsT0FBTyxNQUFNQyw2QkFBNkJEO0lBQ3hDLGFBQWM7UUFDWixLQUFLLENBQUM7SUFDUjtJQUVBRSxpQkFBaUJDLEtBQXdCLEVBQUU7UUFDekMsTUFBTSxFQUFFQyxHQUFHLEVBQUUsR0FBR04sT0FBT08sTUFBTSxDQUFDQyxHQUFHO1FBRWpDLE9BQU87WUFDTEMsUUFBUSxHQUFHSCxJQUFJLGdCQUFnQixDQUFDO1lBQ2hDSSxNQUFNLEdBQUdMLE1BQU1NLEVBQUUsQ0FBQyxDQUFDLEVBQUVOLE1BQU1NLEVBQUUsQ0FBQyxjQUFjLENBQUM7UUFDL0M7SUFDRjtJQUVBQyxPQUFPLEVBQUVDLFFBQVEsRUFBaUMsRUFBRTtRQUNsRCxNQUFNUixRQUFRSixjQUFjYSxjQUFjLENBQUNEO1FBRTNDLE9BQU87WUFDTCxHQUFHLElBQUksQ0FBQ1QsZ0JBQWdCLENBQUNDLE1BQU07WUFDL0JVLE1BQU0sQ0FBQzs7Ozs7ZUFLRSxFQUFFRixTQUFTOzs7OztNQUtwQixDQUFDLENBQUNHLElBQUk7WUFDTkMsWUFBWSxFQUFFO1FBQ2hCO0lBQ0Y7QUFDRiJ9
@@ -1,15 +1,15 @@
1
- import { TemplateOptions } from "../types/types";
2
- import { EntityNamesRecord } from "../entity/entity-manager";
3
- import { ApiParam } from "../types/types";
4
- import { ExtendedApi } from "../api/decorators";
5
- import { Template } from "./base-template";
1
+ import type { ExtendedApi } from "../../api/decorators";
2
+ import type { EntityNamesRecord } from "../../entity/entity-manager";
3
+ import type { TemplateOptions } from "../../types/types";
4
+ import { type ApiParam } from "../../types/types";
5
+ import { Template } from "../template";
6
6
  export declare class Template__service extends Template {
7
7
  constructor();
8
8
  getTargetAndPath(names: EntityNamesRecord): {
9
9
  target: string;
10
10
  path: string;
11
11
  };
12
- render({ namesRecord }: TemplateOptions["service"], apis: ExtendedApi[]): {
12
+ render({ namesRecord }: TemplateOptions["service"]): {
13
13
  body: string;
14
14
  importKeys: string[];
15
15
  customHeaders: string[];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/service.template.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,KAAK,QAAQ,EAAgB,MAAM,mBAAmB,CAAC;AAEhE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,qBAAa,iBAAkB,SAAQ,QAAQ;;IAK7C,gBAAgB,CAAC,KAAK,EAAE,iBAAiB;;;;IAOzC,MAAM,CAAC,EAAE,WAAW,EAAE,EAAE,eAAe,CAAC,SAAS,CAAC;;;;;;;IA+BlD,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG;QAClC,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB;IA+GD,WAAW,CACT,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM;IA8BpB,oBAAoB,CAClB,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,oBAAoB,EAAE,QAAQ,EAAE;IA2ClC,SAAS,CACP,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM;IAoBpB,iBAAiB,CACf,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM;IAWpB,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM;CAmB7E"}