vona-module-a-orm 5.0.96 → 5.1.2

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 (367) hide show
  1. package/LICENSE +0 -0
  2. package/cli/entity/metadata/generate.ts +2 -1
  3. package/cli/model/metadata/generate.ts +6 -2
  4. package/cli/model/metadata/magic.ts +15 -6
  5. package/dist/.metadata/index.d.ts +1 -0
  6. package/dist/.metadata/index.d.ts.map +1 -0
  7. package/dist/.metadata/locales.d.ts +1 -0
  8. package/dist/.metadata/locales.d.ts.map +1 -0
  9. package/dist/.metadata/this.d.ts +1 -0
  10. package/dist/.metadata/this.d.ts.map +1 -0
  11. package/dist/bean/aopMethod.transaction.d.ts +2 -1
  12. package/dist/bean/aopMethod.transaction.d.ts.map +1 -0
  13. package/dist/bean/bean.database.d.ts +2 -1
  14. package/dist/bean/bean.database.d.ts.map +1 -0
  15. package/dist/bean/bean.databaseDialectBase.d.ts +2 -1
  16. package/dist/bean/bean.databaseDialectBase.d.ts.map +1 -0
  17. package/dist/bean/bean.model/bean.model_cache.d.ts +5 -1
  18. package/dist/bean/bean.model/bean.model_cache.d.ts.map +1 -0
  19. package/dist/bean/bean.model/bean.model_crud.d.ts +1 -0
  20. package/dist/bean/bean.model/bean.model_crud.d.ts.map +1 -0
  21. package/dist/bean/bean.model/bean.model_crud_inner.d.ts +3 -1
  22. package/dist/bean/bean.model/bean.model_crud_inner.d.ts.map +1 -0
  23. package/dist/bean/bean.model/bean.model_crud_table.d.ts +1 -0
  24. package/dist/bean/bean.model/bean.model_crud_table.d.ts.map +1 -0
  25. package/dist/bean/bean.model/bean.model_knex.d.ts +1 -0
  26. package/dist/bean/bean.model/bean.model_knex.d.ts.map +1 -0
  27. package/dist/bean/bean.model/bean.model_meta.d.ts +3 -2
  28. package/dist/bean/bean.model/bean.model_meta.d.ts.map +1 -0
  29. package/dist/bean/bean.model/bean.model_utils.d.ts +5 -3
  30. package/dist/bean/bean.model/bean.model_utils.d.ts.map +1 -0
  31. package/dist/bean/bean.model/bean.model_view.d.ts +1 -0
  32. package/dist/bean/bean.model/bean.model_view.d.ts.map +1 -0
  33. package/dist/bean/bean.model.d.ts +1 -0
  34. package/dist/bean/bean.model.d.ts.map +1 -0
  35. package/dist/bean/bean.modelBase.d.ts +1 -0
  36. package/dist/bean/bean.modelBase.d.ts.map +1 -0
  37. package/dist/bean/broadcast.columnsClear.d.ts +2 -1
  38. package/dist/bean/broadcast.columnsClear.d.ts.map +1 -0
  39. package/dist/bean/event.clientNameReal.d.ts +2 -1
  40. package/dist/bean/event.clientNameReal.d.ts.map +1 -0
  41. package/dist/bean/event.columnsClear.d.ts +2 -1
  42. package/dist/bean/event.columnsClear.d.ts.map +1 -0
  43. package/dist/bean/hmr.entity.d.ts +1 -0
  44. package/dist/bean/hmr.entity.d.ts.map +1 -0
  45. package/dist/bean/hmr.model.d.ts +1 -0
  46. package/dist/bean/hmr.model.d.ts.map +1 -0
  47. package/dist/bean/queue.doubleDelete.d.ts +2 -1
  48. package/dist/bean/queue.doubleDelete.d.ts.map +1 -0
  49. package/dist/bean/schedule.softDeletionPrune.d.ts +1 -0
  50. package/dist/bean/schedule.softDeletionPrune.d.ts.map +1 -0
  51. package/dist/common/buildWhere.d.ts +1 -0
  52. package/dist/common/buildWhere.d.ts.map +1 -0
  53. package/dist/common/checkWhere.d.ts +1 -0
  54. package/dist/common/checkWhere.d.ts.map +1 -0
  55. package/dist/common/index.d.ts +1 -0
  56. package/dist/common/index.d.ts.map +1 -0
  57. package/dist/common/utils.d.ts +2 -1
  58. package/dist/common/utils.d.ts.map +1 -0
  59. package/dist/config/config.d.ts +1 -0
  60. package/dist/config/config.d.ts.map +1 -0
  61. package/dist/config/errors.d.ts +1 -0
  62. package/dist/config/errors.d.ts.map +1 -0
  63. package/dist/config/locale/en-us.d.ts +1 -0
  64. package/dist/config/locale/en-us.d.ts.map +1 -0
  65. package/dist/config/locale/zh-cn.d.ts +1 -0
  66. package/dist/config/locale/zh-cn.d.ts.map +1 -0
  67. package/dist/extend/index.d.ts +1 -0
  68. package/dist/extend/index.d.ts.map +1 -0
  69. package/dist/extend/schemaBuilder.d.ts +1 -0
  70. package/dist/extend/schemaBuilder.d.ts.map +1 -0
  71. package/dist/extend/tableBuilder.d.ts +1 -0
  72. package/dist/extend/tableBuilder.d.ts.map +1 -0
  73. package/dist/index.d.ts +1 -0
  74. package/dist/index.d.ts.map +1 -0
  75. package/dist/index.js +94 -15
  76. package/dist/index.js.map +1 -0
  77. package/dist/lib/const.d.ts +1 -0
  78. package/dist/lib/const.d.ts.map +1 -0
  79. package/dist/lib/databaseDialect.d.ts +1 -0
  80. package/dist/lib/databaseDialect.d.ts.map +1 -0
  81. package/dist/lib/dto/dto.d.ts +3 -0
  82. package/dist/lib/dto/dto.d.ts.map +1 -0
  83. package/dist/lib/dto/dtoAggregate.d.ts +3 -2
  84. package/dist/lib/dto/dtoAggregate.d.ts.map +1 -0
  85. package/dist/lib/dto/dtoCreate.d.ts +2 -1
  86. package/dist/lib/dto/dtoCreate.d.ts.map +1 -0
  87. package/dist/lib/dto/dtoGet.d.ts +2 -1
  88. package/dist/lib/dto/dtoGet.d.ts.map +1 -0
  89. package/dist/lib/dto/dtoGroup.d.ts +2 -1
  90. package/dist/lib/dto/dtoGroup.d.ts.map +1 -0
  91. package/dist/lib/dto/dtoListAndCount.d.ts +4 -0
  92. package/dist/lib/dto/dtoListAndCount.d.ts.map +1 -0
  93. package/dist/lib/dto/dtoMutate.d.ts +3 -2
  94. package/dist/lib/dto/dtoMutate.d.ts.map +1 -0
  95. package/dist/lib/dto/dtoQuery.d.ts +1 -0
  96. package/dist/lib/dto/dtoQuery.d.ts.map +1 -0
  97. package/dist/lib/dto/dtoQueryPage.d.ts +1 -0
  98. package/dist/lib/dto/dtoQueryPage.d.ts.map +1 -0
  99. package/dist/lib/dto/dtoSelectAndCount.d.ts +2 -1
  100. package/dist/lib/dto/dtoSelectAndCount.d.ts.map +1 -0
  101. package/dist/lib/dto/dtoUpdate.d.ts +2 -1
  102. package/dist/lib/dto/dtoUpdate.d.ts.map +1 -0
  103. package/dist/lib/dto/index.d.ts +1 -0
  104. package/dist/lib/dto/index.d.ts.map +1 -0
  105. package/dist/lib/entity.d.ts +1 -0
  106. package/dist/lib/entity.d.ts.map +1 -0
  107. package/dist/lib/index.d.ts +1 -0
  108. package/dist/lib/index.d.ts.map +1 -0
  109. package/dist/lib/model.d.ts +1 -0
  110. package/dist/lib/model.d.ts.map +1 -0
  111. package/dist/lib/modelCacheBase.d.ts +2 -1
  112. package/dist/lib/modelCacheBase.d.ts.map +1 -0
  113. package/dist/lib/relations.d.ts +5 -4
  114. package/dist/lib/relations.d.ts.map +1 -0
  115. package/dist/lib/relationsDynamic.d.ts +5 -4
  116. package/dist/lib/relationsDynamic.d.ts.map +1 -0
  117. package/dist/lib/relationsMutate.d.ts +4 -3
  118. package/dist/lib/relationsMutate.d.ts.map +1 -0
  119. package/dist/lib/relationsStatic.d.ts +1 -0
  120. package/dist/lib/relationsStatic.d.ts.map +1 -0
  121. package/dist/lib/utils.d.ts +1 -0
  122. package/dist/lib/utils.d.ts.map +1 -0
  123. package/dist/main.d.ts +2 -1
  124. package/dist/main.d.ts.map +1 -0
  125. package/dist/service/cacheEntity_.d.ts +1 -0
  126. package/dist/service/cacheEntity_.d.ts.map +1 -0
  127. package/dist/service/cacheQuery_.d.ts +1 -0
  128. package/dist/service/cacheQuery_.d.ts.map +1 -0
  129. package/dist/service/columnsCache_.d.ts +2 -1
  130. package/dist/service/columnsCache_.d.ts.map +1 -0
  131. package/dist/service/columns_.d.ts +2 -1
  132. package/dist/service/columns_.d.ts.map +1 -0
  133. package/dist/service/database.d.ts +2 -1
  134. package/dist/service/database.d.ts.map +1 -0
  135. package/dist/service/databaseAsyncLocalStorage_.d.ts +1 -0
  136. package/dist/service/databaseAsyncLocalStorage_.d.ts.map +1 -0
  137. package/dist/service/databaseClient_.d.ts +2 -1
  138. package/dist/service/databaseClient_.d.ts.map +1 -0
  139. package/dist/service/db_.d.ts +2 -1
  140. package/dist/service/db_.d.ts.map +1 -0
  141. package/dist/service/entityResolver_.d.ts +1 -0
  142. package/dist/service/entityResolver_.d.ts.map +1 -0
  143. package/dist/service/modelResolver_.d.ts +1 -0
  144. package/dist/service/modelResolver_.d.ts.map +1 -0
  145. package/dist/service/relations_.d.ts +2 -1
  146. package/dist/service/relations_.d.ts.map +1 -0
  147. package/dist/service/transactionAsyncLocalStorage_.d.ts +1 -0
  148. package/dist/service/transactionAsyncLocalStorage_.d.ts.map +1 -0
  149. package/dist/service/transactionConsistency/342/200/214_.d.ts +1 -0
  150. package/dist/service/transactionConsistency/342/200/214_.d.ts.map +1 -0
  151. package/dist/service/transactionFiber_.d.ts +1 -0
  152. package/dist/service/transactionFiber_.d.ts.map +1 -0
  153. package/dist/service/transactionState_.d.ts +2 -1
  154. package/dist/service/transactionState_.d.ts.map +1 -0
  155. package/dist/service/transaction_.d.ts +2 -1
  156. package/dist/service/transaction_.d.ts.map +1 -0
  157. package/dist/types/columns.d.ts +1 -0
  158. package/dist/types/columns.d.ts.map +1 -0
  159. package/dist/types/config.d.ts +1 -0
  160. package/dist/types/config.d.ts.map +1 -0
  161. package/dist/types/database.d.ts +1 -0
  162. package/dist/types/database.d.ts.map +1 -0
  163. package/dist/types/depth.d.ts +1 -0
  164. package/dist/types/depth.d.ts.map +1 -0
  165. package/dist/types/dialect.d.ts +1 -0
  166. package/dist/types/dialect.d.ts.map +1 -0
  167. package/dist/types/dto/dtoAggregate.d.ts +1 -0
  168. package/dist/types/dto/dtoAggregate.d.ts.map +1 -0
  169. package/dist/types/dto/dtoGet.d.ts +3 -2
  170. package/dist/types/dto/dtoGet.d.ts.map +1 -0
  171. package/dist/types/dto/dtoGroup.d.ts +1 -0
  172. package/dist/types/dto/dtoGroup.d.ts.map +1 -0
  173. package/dist/types/dto/dtoListAndCount.d.ts +8 -0
  174. package/dist/types/dto/dtoListAndCount.d.ts.map +1 -0
  175. package/dist/types/dto/dtoMutate.d.ts +8 -9
  176. package/dist/types/dto/dtoMutate.d.ts.map +1 -0
  177. package/dist/types/dto/dtoQueryBase.d.ts +1 -0
  178. package/dist/types/dto/dtoQueryBase.d.ts.map +1 -0
  179. package/dist/types/dto/dtoQueryPageBase.d.ts +1 -0
  180. package/dist/types/dto/dtoQueryPageBase.d.ts.map +1 -0
  181. package/dist/types/dto/dtoSelectAndCount.d.ts +2 -1
  182. package/dist/types/dto/dtoSelectAndCount.d.ts.map +1 -0
  183. package/dist/types/dto/index.d.ts +2 -0
  184. package/dist/types/dto/index.d.ts.map +1 -0
  185. package/dist/types/entity.d.ts +1 -0
  186. package/dist/types/entity.d.ts.map +1 -0
  187. package/dist/types/entityBase.d.ts +1 -0
  188. package/dist/types/entityBase.d.ts.map +1 -0
  189. package/dist/types/entityBaseEmpty.d.ts +1 -0
  190. package/dist/types/entityBaseEmpty.d.ts.map +1 -0
  191. package/dist/types/entityBaseInner.d.ts +1 -0
  192. package/dist/types/entityBaseInner.d.ts.map +1 -0
  193. package/dist/types/entityBaseSimple.d.ts +1 -0
  194. package/dist/types/entityBaseSimple.d.ts.map +1 -0
  195. package/dist/types/extra.d.ts +1 -0
  196. package/dist/types/extra.d.ts.map +1 -0
  197. package/dist/types/index.d.ts +2 -0
  198. package/dist/types/index.d.ts.map +1 -0
  199. package/dist/types/logger.d.ts +1 -0
  200. package/dist/types/logger.d.ts.map +1 -0
  201. package/dist/types/model.d.ts +3 -2
  202. package/dist/types/model.d.ts.map +1 -0
  203. package/dist/types/modelAggr.d.ts +2 -1
  204. package/dist/types/modelAggr.d.ts.map +1 -0
  205. package/dist/types/modelCount.d.ts +2 -1
  206. package/dist/types/modelCount.d.ts.map +1 -0
  207. package/dist/types/modelGeneral.d.ts +4 -3
  208. package/dist/types/modelGeneral.d.ts.map +1 -0
  209. package/dist/types/modelGroup.d.ts +2 -1
  210. package/dist/types/modelGroup.d.ts.map +1 -0
  211. package/dist/types/modelIncrement.d.ts +19 -0
  212. package/dist/types/modelIncrement.d.ts.map +1 -0
  213. package/dist/types/modelWhere.d.ts +2 -1
  214. package/dist/types/modelWhere.d.ts.map +1 -0
  215. package/dist/types/onion/databaseDialect.d.ts +1 -0
  216. package/dist/types/onion/databaseDialect.d.ts.map +1 -0
  217. package/dist/types/onion/entity.d.ts +1 -0
  218. package/dist/types/onion/entity.d.ts.map +1 -0
  219. package/dist/types/onion/index.d.ts +1 -0
  220. package/dist/types/onion/index.d.ts.map +1 -0
  221. package/dist/types/onion/model.d.ts +1 -0
  222. package/dist/types/onion/model.d.ts.map +1 -0
  223. package/dist/types/onion/table.d.ts +1 -0
  224. package/dist/types/onion/table.d.ts.map +1 -0
  225. package/dist/types/relations.d.ts +10 -11
  226. package/dist/types/relations.d.ts.map +1 -0
  227. package/dist/types/relationsAggr.d.ts +2 -1
  228. package/dist/types/relationsAggr.d.ts.map +1 -0
  229. package/dist/types/relationsColumns.d.ts +5 -4
  230. package/dist/types/relationsColumns.d.ts.map +1 -0
  231. package/dist/types/relationsDef.d.ts +5 -4
  232. package/dist/types/relationsDef.d.ts.map +1 -0
  233. package/dist/types/relationsDefDynamic.d.ts +6 -5
  234. package/dist/types/relationsDefDynamic.d.ts.map +1 -0
  235. package/dist/types/relationsDefMutate.d.ts +1 -0
  236. package/dist/types/relationsDefMutate.d.ts.map +1 -0
  237. package/dist/types/relationsGroup.d.ts +1 -0
  238. package/dist/types/relationsGroup.d.ts.map +1 -0
  239. package/dist/types/relationsMutate.d.ts +4 -3
  240. package/dist/types/relationsMutate.d.ts.map +1 -0
  241. package/dist/types/relationsTables.d.ts +1 -0
  242. package/dist/types/relationsTables.d.ts.map +1 -0
  243. package/dist/types/transaction.d.ts +1 -0
  244. package/dist/types/transaction.d.ts.map +1 -0
  245. package/dist-cli/entity/metadata/generate.js +1 -1
  246. package/dist-cli/model/metadata/generate.js +4 -2
  247. package/dist-cli/model/metadata/magic.js +2 -2
  248. package/package.json +40 -36
  249. package/src/.metadata/index.ts +348 -0
  250. package/src/.metadata/locales.ts +13 -0
  251. package/src/.metadata/this.ts +2 -0
  252. package/src/bean/aopMethod.transaction.ts +18 -0
  253. package/src/bean/bean.database.ts +57 -0
  254. package/src/bean/bean.databaseDialectBase.ts +149 -0
  255. package/src/bean/bean.model/bean.model_cache.ts +815 -0
  256. package/src/bean/bean.model/bean.model_crud.ts +46 -0
  257. package/src/bean/bean.model/bean.model_crud_inner.ts +281 -0
  258. package/src/bean/bean.model/bean.model_crud_table.ts +59 -0
  259. package/src/bean/bean.model/bean.model_knex.ts +60 -0
  260. package/src/bean/bean.model/bean.model_meta.ts +204 -0
  261. package/src/bean/bean.model/bean.model_utils.ts +275 -0
  262. package/src/bean/bean.model/bean.model_view.ts +129 -0
  263. package/src/bean/bean.model.ts +8 -0
  264. package/src/bean/bean.modelBase.ts +8 -0
  265. package/src/bean/broadcast.columnsClear.ts +24 -0
  266. package/src/bean/event.clientNameReal.ts +10 -0
  267. package/src/bean/event.columnsClear.ts +13 -0
  268. package/src/bean/hmr.entity.ts +12 -0
  269. package/src/bean/hmr.model.ts +16 -0
  270. package/src/bean/queue.doubleDelete.ts +29 -0
  271. package/src/bean/schedule.softDeletionPrune.ts +45 -0
  272. package/src/common/buildWhere.ts +238 -0
  273. package/src/common/checkWhere.ts +128 -0
  274. package/src/common/index.ts +3 -0
  275. package/src/common/utils.ts +74 -0
  276. package/src/config/config.ts +60 -0
  277. package/src/config/errors.ts +3 -0
  278. package/src/config/locale/en-us.ts +8 -0
  279. package/src/config/locale/zh-cn.ts +8 -0
  280. package/src/extend/index.ts +12 -0
  281. package/src/extend/schemaBuilder.ts +29 -0
  282. package/src/extend/tableBuilder.ts +87 -0
  283. package/src/index.ts +10 -0
  284. package/src/lib/const.ts +58 -0
  285. package/src/lib/databaseDialect.ts +7 -0
  286. package/src/lib/dto/dto.ts +21 -0
  287. package/src/lib/dto/dtoAggregate.ts +51 -0
  288. package/src/lib/dto/dtoCreate.ts +14 -0
  289. package/src/lib/dto/dtoGet.ts +159 -0
  290. package/src/lib/dto/dtoGroup.ts +57 -0
  291. package/src/lib/dto/dtoListAndCount.ts +16 -0
  292. package/src/lib/dto/dtoMutate.ts +82 -0
  293. package/src/lib/dto/dtoQuery.ts +9 -0
  294. package/src/lib/dto/dtoQueryPage.ts +9 -0
  295. package/src/lib/dto/dtoSelectAndCount.ts +20 -0
  296. package/src/lib/dto/dtoUpdate.ts +16 -0
  297. package/src/lib/dto/index.ts +1 -0
  298. package/src/lib/entity.ts +25 -0
  299. package/src/lib/index.ts +9 -0
  300. package/src/lib/model.ts +7 -0
  301. package/src/lib/modelCacheBase.ts +98 -0
  302. package/src/lib/relations.ts +118 -0
  303. package/src/lib/relationsDynamic.ts +75 -0
  304. package/src/lib/relationsMutate.ts +60 -0
  305. package/src/lib/relationsStatic.ts +18 -0
  306. package/src/lib/utils.ts +45 -0
  307. package/src/main.ts +79 -0
  308. package/src/service/cacheEntity_.ts +37 -0
  309. package/src/service/cacheQuery_.ts +20 -0
  310. package/src/service/columnsCache_.ts +69 -0
  311. package/src/service/columns_.ts +64 -0
  312. package/src/service/database.ts +126 -0
  313. package/src/service/databaseAsyncLocalStorage_.ts +29 -0
  314. package/src/service/databaseClient_.ts +124 -0
  315. package/src/service/db_.ts +77 -0
  316. package/src/service/entityResolver_.ts +25 -0
  317. package/src/service/modelResolver_.ts +19 -0
  318. package/src/service/relations_.ts +444 -0
  319. package/src/service/transactionAsyncLocalStorage_.ts +31 -0
  320. package/src/service/transactionConsistency/342/200/214_.ts +37 -0
  321. package/src/service/transactionFiber_.ts +42 -0
  322. package/src/service/transactionState_.ts +35 -0
  323. package/src/service/transaction_.ts +147 -0
  324. package/src/types/columns.ts +8 -0
  325. package/src/types/config.ts +23 -0
  326. package/src/types/database.ts +64 -0
  327. package/src/types/depth.ts +55 -0
  328. package/src/types/dialect.ts +17 -0
  329. package/src/types/dto/dtoAggregate.ts +3 -0
  330. package/src/types/dto/dtoGet.ts +23 -0
  331. package/src/types/dto/dtoGroup.ts +3 -0
  332. package/src/types/dto/dtoListAndCount.ts +7 -0
  333. package/src/types/dto/dtoMutate.ts +231 -0
  334. package/src/types/dto/dtoQueryBase.ts +18 -0
  335. package/src/types/dto/dtoQueryPageBase.ts +18 -0
  336. package/src/types/dto/dtoSelectAndCount.ts +11 -0
  337. package/src/types/dto/index.ts +8 -0
  338. package/src/types/entity.ts +15 -0
  339. package/src/types/entityBase.ts +11 -0
  340. package/src/types/entityBaseEmpty.ts +1 -0
  341. package/src/types/entityBaseInner.ts +18 -0
  342. package/src/types/entityBaseSimple.ts +9 -0
  343. package/src/types/extra.ts +23 -0
  344. package/src/types/index.ts +30 -0
  345. package/src/types/logger.ts +6 -0
  346. package/src/types/model.ts +152 -0
  347. package/src/types/modelAggr.ts +69 -0
  348. package/src/types/modelCount.ts +40 -0
  349. package/src/types/modelGeneral.ts +61 -0
  350. package/src/types/modelGroup.ts +48 -0
  351. package/src/types/modelIncrement.ts +50 -0
  352. package/src/types/modelWhere.ts +85 -0
  353. package/src/types/onion/databaseDialect.ts +22 -0
  354. package/src/types/onion/entity.ts +33 -0
  355. package/src/types/onion/index.ts +4 -0
  356. package/src/types/onion/model.ts +68 -0
  357. package/src/types/onion/table.ts +1 -0
  358. package/src/types/relations.ts +243 -0
  359. package/src/types/relationsAggr.ts +31 -0
  360. package/src/types/relationsColumns.ts +116 -0
  361. package/src/types/relationsDef.ts +152 -0
  362. package/src/types/relationsDefDynamic.ts +128 -0
  363. package/src/types/relationsDefMutate.ts +11 -0
  364. package/src/types/relationsGroup.ts +58 -0
  365. package/src/types/relationsMutate.ts +118 -0
  366. package/src/types/relationsTables.ts +38 -0
  367. package/src/types/transaction.ts +23 -0
@@ -0,0 +1,58 @@
1
+ import type { VonaApplication } from 'vona';
2
+
3
+ import type { IModelRecord } from '../types/onion/model.ts';
4
+ import type { TypeModelClassLikeGeneral } from '../types/relations.ts';
5
+
6
+ export const SymbolCacheModelsClear = Symbol('SymbolCacheModelsClearAll');
7
+ export const SymbolCacheModelCacheInstances = Symbol('SymbolCacheModelCacheInstances');
8
+
9
+ export function clearAllCacheModelsClear(app: VonaApplication) {
10
+ delete app.meta[SymbolCacheModelsClear];
11
+ }
12
+
13
+ export async function clearCacheModelCacheInstance(app: VonaApplication, beanFullName: string) {
14
+ const cacheModelCacheInstances = getCacheModelCacheInstances(app);
15
+ const instances = cacheModelCacheInstances[beanFullName];
16
+ if (!instances) return;
17
+ delete cacheModelCacheInstances[beanFullName];
18
+ for (const cacheName in instances) {
19
+ await app.bean._removeBean(instances[cacheName]);
20
+ }
21
+ }
22
+
23
+ export function getCacheModelCacheInstances(app: VonaApplication) {
24
+ if (!app.meta[SymbolCacheModelCacheInstances]) app.meta[SymbolCacheModelCacheInstances] = {};
25
+ return app.meta[SymbolCacheModelCacheInstances];
26
+ }
27
+
28
+ export function getCacheModelsClear(app: VonaApplication): Record<keyof IModelRecord, TypeModelClassLikeGeneral[]> {
29
+ if (!app.meta[SymbolCacheModelsClear]) {
30
+ app.meta[SymbolCacheModelsClear] = _collectModelsClear(app);
31
+ }
32
+ return app.meta[SymbolCacheModelsClear];
33
+ }
34
+
35
+ function _collectModelsClear(app: VonaApplication) {
36
+ const modelsClearAll: Record<keyof IModelRecord, TypeModelClassLikeGeneral[]> = {} as any;
37
+ const onionSlices = app.bean.onion.model.getOnionsEnabledCached();
38
+ for (const onionSlice of onionSlices) {
39
+ const modelName = onionSlice.name;
40
+ if (!modelsClearAll[modelName]) modelsClearAll[modelName] = [];
41
+ //
42
+ const modelsClear = onionSlice.beanOptions.options?.cache?.modelsClear;
43
+ if (modelsClear) {
44
+ const modelsClear2 = Array.isArray(modelsClear) ? modelsClear : [modelsClear];
45
+ modelsClearAll[modelName].push(...modelsClear2);
46
+ }
47
+ //
48
+ const modelsClearedBy = onionSlice.beanOptions.options?.cache?.modelsClearedBy;
49
+ if (modelsClearedBy) {
50
+ const modelsClearedBy2 = Array.isArray(modelsClearedBy) ? modelsClearedBy : [modelsClearedBy];
51
+ for (const modelName2 of modelsClearedBy2) {
52
+ if (!modelsClearAll[modelName2]) modelsClearAll[modelName2] = [];
53
+ modelsClearAll[modelName2].push(modelName);
54
+ }
55
+ }
56
+ }
57
+ return modelsClearAll;
58
+ }
@@ -0,0 +1,7 @@
1
+ import { createBeanDecorator } from 'vona';
2
+
3
+ import type { IDecoratorDatabaseDialectOptions } from '../types/index.ts';
4
+
5
+ export function DatabaseDialect<T extends IDecoratorDatabaseDialectOptions>(options?: T): ClassDecorator {
6
+ return createBeanDecorator('databaseDialect', options);
7
+ }
@@ -0,0 +1,21 @@
1
+ import { DtoAggregate } from './dtoAggregate.ts';
2
+ import { DtoCreate } from './dtoCreate.ts';
3
+ import { DtoGet } from './dtoGet.ts';
4
+ import { DtoGroup } from './dtoGroup.ts';
5
+ import { DtoListAndCount } from './dtoListAndCount.ts';
6
+ import { DtoQuery } from './dtoQuery.ts';
7
+ import { DtoQueryPage } from './dtoQueryPage.ts';
8
+ import { DtoSelectAndCount } from './dtoSelectAndCount.ts';
9
+ import { DtoUpdate } from './dtoUpdate.ts';
10
+
11
+ export const $Dto = {
12
+ create: DtoCreate,
13
+ update: DtoUpdate,
14
+ get: DtoGet,
15
+ aggregate: DtoAggregate,
16
+ group: DtoGroup,
17
+ query: DtoQuery,
18
+ queryPage: DtoQueryPage,
19
+ selectAndCount: DtoSelectAndCount,
20
+ listAndCount: DtoListAndCount,
21
+ };
@@ -0,0 +1,51 @@
1
+ import type { Constructable } from 'vona';
2
+
3
+ import { ensureArray } from '@cabloy/utils';
4
+ import { Api, v } from 'vona-module-a-openapiutils';
5
+ import z from 'zod';
6
+
7
+ import type { BeanModelMeta } from '../../bean/bean.model/bean.model_meta.ts';
8
+ import type { TypeDtoAggrResult } from '../../types/dto/dtoAggregate.ts';
9
+ import type { TypeModelSelectAggrParamsAggrs } from '../../types/modelAggr.ts';
10
+ import type { IModelClassRecord } from '../../types/onion/model.ts';
11
+ import type { TypeModelOfModelLike, TypeSymbolKeyEntity } from '../../types/relations.ts';
12
+
13
+ export function DtoAggregate<
14
+ Aggrs extends TypeModelSelectAggrParamsAggrs<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]>,
15
+ ModelLike extends BeanModelMeta | keyof IModelClassRecord,
16
+ >(
17
+ modelLike: ModelLike extends BeanModelMeta ? (() => Constructable<ModelLike>) | Constructable<ModelLike> : ModelLike,
18
+ aggrs: Aggrs,
19
+ ): Constructable<TypeDtoAggrResult<Aggrs>> {
20
+ return _DtoAggregate_raw(modelLike, aggrs);
21
+ }
22
+
23
+ function _DtoAggregate_raw<
24
+ Aggrs extends TypeModelSelectAggrParamsAggrs<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]>,
25
+ ModelLike extends BeanModelMeta | keyof IModelClassRecord,
26
+ >(
27
+ modelLike: ModelLike extends BeanModelMeta ? (() => Constructable<ModelLike>) | Constructable<ModelLike> : ModelLike,
28
+ aggrs: Aggrs,
29
+ ): Constructable<TypeDtoAggrResult<Aggrs>> {
30
+ abstract class TargetClass {}
31
+ return _DtoAggregate_inner(TargetClass as any, modelLike, aggrs);
32
+ }
33
+
34
+ export function _DtoAggregate_inner<
35
+ Aggrs extends TypeModelSelectAggrParamsAggrs<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]>,
36
+ ModelLike extends BeanModelMeta | keyof IModelClassRecord,
37
+ >(
38
+ classTarget: Constructable,
39
+ _modelLike: ModelLike extends BeanModelMeta ? (() => Constructable<ModelLike>) | Constructable<ModelLike> : ModelLike,
40
+ aggrs: Aggrs,
41
+ ): Constructable<TypeDtoAggrResult<Aggrs>> {
42
+ for (const key in aggrs) {
43
+ const columns = ensureArray(aggrs[key]);
44
+ if (!columns) continue;
45
+ for (const column of columns) {
46
+ const column2 = `${key}_${column === '*' ? 'all' : column}`;
47
+ Api.field(v.optional(), z.string())(classTarget.prototype, column2);
48
+ }
49
+ }
50
+ return classTarget as any;
51
+ }
@@ -0,0 +1,14 @@
1
+ import type { Constructable } from 'vona';
2
+
3
+ import type { BeanModelMeta } from '../../bean/bean.model/bean.model_meta.ts';
4
+ import type { IDtoMutateParams, TypeDtoMutateResult } from '../../types/dto/dtoMutate.ts';
5
+ import type { IModelClassRecord } from '../../types/onion/model.ts';
6
+
7
+ import { _DtoMutate_raw } from './dtoMutate.ts';
8
+
9
+ export function DtoCreate<ModelLike extends BeanModelMeta | keyof IModelClassRecord, T extends IDtoMutateParams<ModelLike> | undefined = undefined>(
10
+ modelLike: ModelLike extends BeanModelMeta ? (() => Constructable<ModelLike>) | Constructable<ModelLike> : ModelLike,
11
+ params?: T,
12
+ ): Constructable<TypeDtoMutateResult<ModelLike, T, 'create', 'id' | 'iid' | 'deleted' | 'createdAt' | 'updatedAt', true>> {
13
+ return _DtoMutate_raw(modelLike, params, 'create', ['id', 'iid', 'deleted', 'createdAt', 'updatedAt'] as any, true, undefined);
14
+ }
@@ -0,0 +1,159 @@
1
+ import type { Constructable } from 'vona';
2
+
3
+ import { ensureArray, hashkey } from '@cabloy/utils';
4
+ import { $Class, appResource } from 'vona';
5
+ import { addSchemaDynamic, Api, getSchemaDynamic, SymbolSchemaDynamicRefId, v } from 'vona-module-a-openapiutils';
6
+ import z from 'zod';
7
+
8
+ import type { BeanModelMeta } from '../../bean/bean.model/bean.model_meta.ts';
9
+ import type { IDtoGetParams, TypeDtoGetResult } from '../../types/dto/dtoGet.ts';
10
+ import type { TypeDtoMutateType } from '../../types/dto/dtoMutate.ts';
11
+ import type { IModelRelationIncludeWrapper } from '../../types/model.ts';
12
+ import type { IDecoratorModelOptions, IModelClassRecord } from '../../types/onion/model.ts';
13
+ import type { IRelationItem } from '../../types/relationsDef.ts';
14
+
15
+ import { getClassEntityFromClassModel, prepareClassModel, prepareColumns } from '../../common/utils.ts';
16
+ import { handleRelationsCollection } from '../utils.ts';
17
+ import { DtoAggregate } from './dtoAggregate.ts';
18
+ import { DtoGroup } from './dtoGroup.ts';
19
+ import { _DtoMutate_raw } from './dtoMutate.ts';
20
+
21
+ export function DtoGet<ModelLike extends BeanModelMeta | keyof IModelClassRecord, T extends IDtoGetParams<ModelLike> | undefined = undefined>(
22
+ modelLike: ModelLike extends BeanModelMeta ? (() => Constructable<ModelLike>) | Constructable<ModelLike> : ModelLike,
23
+ params?: T,
24
+ ): Constructable<TypeDtoGetResult<ModelLike, T>> {
25
+ return _DtoGet_raw(modelLike, params);
26
+ }
27
+
28
+ function _DtoGet_raw<ModelLike extends BeanModelMeta | keyof IModelClassRecord, T extends IDtoGetParams<ModelLike> | undefined = undefined>(
29
+ modelLike: ModelLike extends BeanModelMeta ? (() => Constructable<ModelLike>) | Constructable<ModelLike> : ModelLike,
30
+ params?: T,
31
+ ): Constructable<TypeDtoGetResult<ModelLike, T>> {
32
+ // model
33
+ const modelClass = prepareClassModel(modelLike);
34
+ // entity
35
+ let entityClass = getClassEntityFromClassModel(modelClass);
36
+ // columns
37
+ const columns = prepareColumns(params?.columns);
38
+ // always create a new class, no matter if columns empty
39
+ entityClass = $Class.pick(entityClass, columns as any);
40
+ // relations
41
+ _DtoGet_relations(modelClass, entityClass, params as any);
42
+ return entityClass as any;
43
+ }
44
+
45
+ export function _DtoGet_relations<TRecord extends {}, TModel extends BeanModelMeta>(
46
+ modelClass: Constructable<TModel>,
47
+ entityClass: Constructable<TRecord>,
48
+ includeWrapper?: IModelRelationIncludeWrapper,
49
+ mutateTypeTopLevel?: TypeDtoMutateType,
50
+ ) {
51
+ // relations
52
+ const relations = _DtoGet_relations_collection(modelClass, includeWrapper);
53
+ if (!relations) return;
54
+ for (const relation of relations) {
55
+ _DtoGet_relation_handle(entityClass, relation, mutateTypeTopLevel);
56
+ }
57
+ }
58
+
59
+ function _DtoGet_relation_handle<TRecord extends {}>(
60
+ entityClass: Constructable<TRecord>,
61
+ relation: [string, any, any, any, boolean],
62
+ mutateTypeTopLevel?: TypeDtoMutateType,
63
+ ) {
64
+ const [relationName, relationReal, includeReal, withReal, autoload] = relation;
65
+ const { type, model, options } = relationReal;
66
+ const modelTarget = prepareClassModel(model);
67
+ const optionsReal = Object.assign({}, options, { include: includeReal, with: withReal });
68
+ if (mutateTypeTopLevel) {
69
+ if (type === 'belongsTo') {
70
+ // donot mutate
71
+ return;
72
+ }
73
+ let schema;
74
+ if (type === 'belongsToMany') {
75
+ schema = v.array(z.object({ id: v.tableIdentity()(), deleted: z.boolean().optional() }));
76
+ } else if (type === 'hasOne') {
77
+ const schemaLazy = _DtoGet_relation_handle_schemaLazy(modelTarget, optionsReal, autoload, mutateTypeTopLevel, relation);
78
+ schema = v.lazy(v.visible(false), schemaLazy);
79
+ // optional = true;
80
+ } else {
81
+ // hasMany
82
+ const schemaLazy = _DtoGet_relation_handle_schemaLazy(modelTarget, optionsReal, autoload, mutateTypeTopLevel, relation);
83
+ schema = v.array(v.lazy(schemaLazy));
84
+ }
85
+ Api.field(v.optional(), schema)(entityClass.prototype, relationName);
86
+ } else {
87
+ const schemaLazy = _DtoGet_relation_handle_schemaLazy(modelTarget, optionsReal, autoload, mutateTypeTopLevel, relation);
88
+ let schema;
89
+ let optional = false;
90
+ if (type === 'hasOne' || type === 'belongsTo') {
91
+ schema = v.lazy(v.visible(false), schemaLazy);
92
+ optional = true;
93
+ } else {
94
+ if (optionsReal.groups) {
95
+ schema = v.array(v.lazy(schemaLazy));
96
+ } else if (optionsReal.aggrs) {
97
+ schema = v.lazy(schemaLazy);
98
+ optional = true;
99
+ } else {
100
+ schema = v.array(v.lazy(schemaLazy));
101
+ }
102
+ }
103
+ if (optional) {
104
+ Api.field(v.optional(), schema)(entityClass.prototype, relationName);
105
+ } else {
106
+ Api.field(schema)(entityClass.prototype, relationName);
107
+ }
108
+ }
109
+ }
110
+
111
+ function _DtoGet_relation_handle_schemaLazy(modelTarget, optionsReal, autoload, mutateTypeTopLevel?: TypeDtoMutateType, relation?: IRelationItem) {
112
+ return () => {
113
+ if (!autoload) {
114
+ return _DtoGet_relation_handle_schemaLazy_raw(modelTarget, optionsReal, mutateTypeTopLevel, relation);
115
+ }
116
+ // dynamic
117
+ const entityClass = getClassEntityFromClassModel(modelTarget);
118
+ const beanFullName = appResource.getBeanFullName(entityClass);
119
+ const _hashkey = _DtoGet_relation_handle_schemaLazy_hashkey(optionsReal, mutateTypeTopLevel);
120
+ const dynamicName = `${beanFullName}_${_hashkey}`;
121
+ let entityTarget = getSchemaDynamic(dynamicName);
122
+ if (!entityTarget) {
123
+ entityTarget = _DtoGet_relation_handle_schemaLazy_raw(modelTarget, optionsReal, mutateTypeTopLevel, relation);
124
+ entityTarget[SymbolSchemaDynamicRefId] = dynamicName;
125
+ addSchemaDynamic(dynamicName, entityTarget);
126
+ }
127
+ return entityTarget;
128
+ };
129
+ }
130
+
131
+ function _DtoGet_relation_handle_schemaLazy_raw(modelTarget, optionsReal, mutateTypeTopLevel?: TypeDtoMutateType, relation?: IRelationItem) {
132
+ if (mutateTypeTopLevel) {
133
+ return _DtoMutate_raw(modelTarget, optionsReal, mutateTypeTopLevel, undefined, false, relation); // columnsOmitDefault: undefined
134
+ } else {
135
+ if (optionsReal.groups) {
136
+ return DtoGroup(modelTarget, optionsReal.groups, optionsReal.aggrs, optionsReal.columns);
137
+ } else if (optionsReal.aggrs) {
138
+ return DtoAggregate(modelTarget, optionsReal.aggrs);
139
+ } else {
140
+ return _DtoGet_raw(modelTarget, optionsReal);
141
+ }
142
+ }
143
+ }
144
+
145
+ function _DtoGet_relation_handle_schemaLazy_hashkey(optionsReal, mutateTypeTopLevel?: TypeDtoMutateType) {
146
+ const columns = prepareColumns(optionsReal.columns);
147
+ const aggrs = ensureArray(optionsReal.aggrs);
148
+ const groups = ensureArray(optionsReal.groups);
149
+ return columns || aggrs || groups || mutateTypeTopLevel ? hashkey({ columns, aggrs, groups, mutate: mutateTypeTopLevel }) : 'none';
150
+ }
151
+
152
+ function _DtoGet_relations_collection<TModel extends BeanModelMeta>(
153
+ modelClass: Constructable<TModel>,
154
+ includeWrapper?: IModelRelationIncludeWrapper,
155
+ ) {
156
+ const beanOptions = appResource.getBean(modelClass);
157
+ const options = beanOptions?.options as IDecoratorModelOptions | undefined;
158
+ return handleRelationsCollection(options?.relations, includeWrapper);
159
+ }
@@ -0,0 +1,57 @@
1
+ import type { Constructable } from 'vona';
2
+
3
+ import { ensureArray } from '@cabloy/utils';
4
+ import { PickClassInner } from 'vona';
5
+
6
+ import type { BeanModelMeta } from '../../bean/bean.model/bean.model_meta.ts';
7
+ import type { TypeDtoGroupResult } from '../../types/dto/dtoGroup.ts';
8
+ import type { TypeModelSelectAggrParamsAggrs } from '../../types/modelAggr.ts';
9
+ import type { TypeModelColumnsStrict } from '../../types/modelWhere.ts';
10
+ import type { IModelClassRecord } from '../../types/onion/model.ts';
11
+ import type { TypeModelOfModelLike, TypeSymbolKeyEntity } from '../../types/relations.ts';
12
+
13
+ import { getClassEntityFromClassModel, prepareClassModel } from '../../common/utils.ts';
14
+ import { _DtoAggregate_inner } from './dtoAggregate.ts';
15
+
16
+ export function DtoGroup<
17
+ ModelLike extends BeanModelMeta | keyof IModelClassRecord,
18
+ Groups extends TypeModelColumnsStrict<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]>,
19
+ Aggrs extends TypeModelSelectAggrParamsAggrs<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]> | undefined = undefined,
20
+ Columns extends TypeModelColumnsStrict<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]> | undefined = undefined,
21
+ >(
22
+ modelLike: ModelLike extends BeanModelMeta ? (() => Constructable<ModelLike>) | Constructable<ModelLike> : ModelLike,
23
+ groups: Groups,
24
+ aggrs?: Aggrs,
25
+ columns?: Columns,
26
+ ): Constructable<TypeDtoGroupResult<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity], Aggrs, Groups, Columns>> {
27
+ return _DtoGroup_raw(modelLike, groups, aggrs, columns);
28
+ }
29
+
30
+ function _DtoGroup_raw<
31
+ ModelLike extends BeanModelMeta | keyof IModelClassRecord,
32
+ Groups extends TypeModelColumnsStrict<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]>,
33
+ Aggrs extends TypeModelSelectAggrParamsAggrs<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]> | undefined = undefined,
34
+ Columns extends TypeModelColumnsStrict<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]> | undefined = undefined,
35
+ >(
36
+ modelLike: ModelLike extends BeanModelMeta ? (() => Constructable<ModelLike>) | Constructable<ModelLike> : ModelLike,
37
+ groups: Groups,
38
+ aggrs?: Aggrs,
39
+ columns?: Columns,
40
+ ): Constructable<TypeDtoGroupResult<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity], Aggrs, Groups, Columns>> {
41
+ abstract class TargetClass {}
42
+ // model
43
+ const modelClass = prepareClassModel(modelLike);
44
+ // entity
45
+ const entityClass = getClassEntityFromClassModel(modelClass);
46
+ // columns/groups
47
+ const displays = ensureArray(columns ?? groups);
48
+ if (displays) {
49
+ PickClassInner(TargetClass as any, entityClass, displays as any);
50
+ }
51
+ // aggrs
52
+ if (aggrs) {
53
+ _DtoAggregate_inner(TargetClass as any, modelLike, aggrs);
54
+ }
55
+ // ok
56
+ return TargetClass as any;
57
+ }
@@ -0,0 +1,16 @@
1
+ import type { Constructable } from 'vona';
2
+
3
+ import { Api, v } from 'vona-module-a-openapiutils';
4
+ import z from 'zod';
5
+
6
+ import type { TypeDtoListAndCountResult } from '../../types/dto/dtoListAndCount.ts';
7
+
8
+ export function DtoListAndCount<T>(classRef: Constructable<T>): Constructable<TypeDtoListAndCountResult<T>> {
9
+ abstract class TargetClass {}
10
+ Api.field(v.array(classRef))(TargetClass.prototype, 'list');
11
+ Api.field(z.string())(TargetClass.prototype, 'total');
12
+ Api.field(z.number())(TargetClass.prototype, 'pageCount');
13
+ Api.field(z.number())(TargetClass.prototype, 'pageSize');
14
+ Api.field(z.number())(TargetClass.prototype, 'pageNo');
15
+ return TargetClass as any;
16
+ }
@@ -0,0 +1,82 @@
1
+ import type { Constructable } from 'vona';
2
+
3
+ import { mutate } from 'mutate-on-copy';
4
+ import { $Class } from 'vona';
5
+
6
+ import type { BeanModelMeta } from '../../bean/bean.model/bean.model_meta.ts';
7
+ import type { IDtoMutateParams, TypeDtoMutateResult, TypeDtoMutateType } from '../../types/dto/dtoMutate.ts';
8
+ import type { TypeModelColumnsStrict } from '../../types/modelWhere.ts';
9
+ import type { IModelClassRecord } from '../../types/onion/model.ts';
10
+ import type { TypeModelOfModelLike, TypeSymbolKeyEntity } from '../../types/relations.ts';
11
+ import type { IRelationItem } from '../../types/relationsDef.ts';
12
+
13
+ import { getClassEntityFromClassModel, prepareClassModel, prepareColumns } from '../../common/utils.ts';
14
+ import { _DtoGet_relations } from './dtoGet.ts';
15
+
16
+ export function DtoMutate<ModelLike extends BeanModelMeta | keyof IModelClassRecord, T extends IDtoMutateParams<ModelLike> | undefined = undefined>(
17
+ modelLike: ModelLike extends BeanModelMeta ? (() => Constructable<ModelLike>) | Constructable<ModelLike> : ModelLike,
18
+ params?: T,
19
+ ): Constructable<TypeDtoMutateResult<ModelLike, T, 'mutate', undefined, true>> {
20
+ return _DtoMutate_raw(modelLike, params, 'mutate', undefined, true, undefined);
21
+ }
22
+
23
+ export function _DtoMutate_raw<
24
+ ModelLike extends BeanModelMeta | keyof IModelClassRecord,
25
+ T extends IDtoMutateParams<ModelLike> | undefined = undefined,
26
+ ColumnsOmitDefault extends TypeModelColumnsStrict<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]> | undefined = undefined,
27
+ >(
28
+ modelLike: ModelLike extends BeanModelMeta ? (() => Constructable<ModelLike>) | Constructable<ModelLike> : ModelLike,
29
+ params?: T,
30
+ mutateTypeTopLevel?: TypeDtoMutateType,
31
+ columnsOmitDefault?: ColumnsOmitDefault,
32
+ topLevel?: boolean,
33
+ relation?: IRelationItem,
34
+ ) {
35
+ // model
36
+ const modelClass = prepareClassModel(modelLike);
37
+ // entity
38
+ let entityClass = getClassEntityFromClassModel(modelClass);
39
+ // columns
40
+ let columns = prepareColumns(params?.columns);
41
+ if (columns) {
42
+ if (!topLevel) {
43
+ if (mutateTypeTopLevel === 'create') {
44
+ for (const key of ['deleted', 'id']) {
45
+ const index = columns.indexOf(key as any);
46
+ if (index > -1) {
47
+ columns = mutate(columns, copyState => {
48
+ copyState.splice(index, 1);
49
+ });
50
+ }
51
+ }
52
+ } else {
53
+ for (const key of ['deleted', 'id']) {
54
+ if (!columns.includes(key as any)) {
55
+ columns = mutate(columns, copyState => {
56
+ copyState.unshift(key as any);
57
+ });
58
+ }
59
+ }
60
+ }
61
+ }
62
+ entityClass = $Class.pick(entityClass, columns);
63
+ } else {
64
+ const columns =
65
+ columnsOmitDefault ??
66
+ (mutateTypeTopLevel === 'create' ? ['id', 'iid', 'deleted', 'createdAt', 'updatedAt'] : ['iid', 'createdAt', 'updatedAt']);
67
+ entityClass = $Class.omit(entityClass, prepareColumns(columns as any) as any);
68
+ }
69
+ if (!topLevel && mutateTypeTopLevel !== 'create') {
70
+ entityClass = $Class.partial(entityClass, ['id', 'deleted'] as any);
71
+ }
72
+ if (!topLevel && relation) {
73
+ const [_relationName, relationReal] = relation;
74
+ const { type, key } = relationReal;
75
+ if (type === 'hasOne' || type === 'hasMany') {
76
+ entityClass = $Class.omit(entityClass, key);
77
+ }
78
+ }
79
+ // relations
80
+ _DtoGet_relations(modelClass, entityClass, params as any, mutateTypeTopLevel);
81
+ return entityClass as any;
82
+ }
@@ -0,0 +1,9 @@
1
+ import type { Constructable } from 'vona';
2
+
3
+ import { $Class } from 'vona';
4
+
5
+ import { DtoQueryBase } from '../../types/dto/dtoQueryBase.ts';
6
+
7
+ export function DtoQuery<T, K extends keyof T>(classRef: Constructable<T>, keys: K[]) {
8
+ return $Class.mixin(DtoQueryBase, $Class.partial($Class.pick(classRef, keys)));
9
+ }
@@ -0,0 +1,9 @@
1
+ import type { Constructable } from 'vona';
2
+
3
+ import { $Class } from 'vona';
4
+
5
+ import { DtoQueryPageBase } from '../../types/dto/dtoQueryPageBase.ts';
6
+
7
+ export function DtoQueryPage<T, KEYS extends Array<keyof T>>(classRef: Constructable<T>, keys: KEYS) {
8
+ return $Class.mixin(DtoQueryPageBase, $Class.partial($Class.pick(classRef, keys)));
9
+ }
@@ -0,0 +1,20 @@
1
+ import type { Constructable } from 'vona';
2
+
3
+ import type { BeanModelMeta } from '../../bean/bean.model/bean.model_meta.ts';
4
+ import type { IDtoGetParams } from '../../types/dto/dtoGet.ts';
5
+ import type { TypeDtoSelectAndCountResult } from '../../types/dto/dtoSelectAndCount.ts';
6
+ import type { IModelClassRecord } from '../../types/onion/model.ts';
7
+
8
+ import { DtoGet } from './dtoGet.ts';
9
+ import { DtoListAndCount } from './dtoListAndCount.ts';
10
+
11
+ export function DtoSelectAndCount<
12
+ ModelLike extends BeanModelMeta | keyof IModelClassRecord,
13
+ T extends IDtoGetParams<ModelLike> | undefined = undefined,
14
+ >(
15
+ modelLike: ModelLike extends BeanModelMeta ? (() => Constructable<ModelLike>) | Constructable<ModelLike> : ModelLike,
16
+ params?: T,
17
+ ): Constructable<TypeDtoSelectAndCountResult<ModelLike, T>> {
18
+ const DtoGetResult = DtoGet(modelLike, params);
19
+ return DtoListAndCount(DtoGetResult);
20
+ }
@@ -0,0 +1,16 @@
1
+ import type { Constructable } from 'vona';
2
+
3
+ import type { BeanModelMeta } from '../../bean/bean.model/bean.model_meta.ts';
4
+ import type { IDtoMutateParams, TypeDtoMutateResult } from '../../types/dto/dtoMutate.ts';
5
+ import type { IModelClassRecord } from '../../types/onion/model.ts';
6
+
7
+ import { _DtoMutate_raw } from './dtoMutate.ts';
8
+
9
+ export function DtoUpdate<ModelLike extends BeanModelMeta | keyof IModelClassRecord, T extends IDtoMutateParams<ModelLike> | undefined = undefined>(
10
+ modelLike: ModelLike extends BeanModelMeta ? (() => Constructable<ModelLike>) | Constructable<ModelLike> : ModelLike,
11
+ params?: T,
12
+ ): Constructable<TypeDtoMutateResult<ModelLike, T, 'update', 'id' | 'iid' | 'deleted' | 'createdAt' | 'updatedAt', true>> {
13
+ return _DtoMutate_raw(modelLike, params, 'update', ['id', 'iid', 'deleted', 'createdAt', 'updatedAt'] as any, true, undefined);
14
+ }
15
+
16
+ // not use Partial/$Class.partial, for form render at frontend
@@ -0,0 +1 @@
1
+ export * from './dto.ts';
@@ -0,0 +1,25 @@
1
+ import { createBeanDecorator } from 'vona';
2
+ import { mergeFieldsOpenapiMetadata } from 'vona-module-a-openapiutils';
3
+
4
+ import type { IDecoratorEntityOptions } from '../types/onion/entity.ts';
5
+
6
+ // const __tableNames = new Set();
7
+
8
+ export function Entity<T extends IDecoratorEntityOptions<any>>(options?: T): ClassDecorator;
9
+ export function Entity<T extends IDecoratorEntityOptions<any>>(table?: string, options?: Omit<T, 'table'>): ClassDecorator;
10
+ export function Entity<T extends IDecoratorEntityOptions<any>>(table?: T | string, options?: T): ClassDecorator {
11
+ if (typeof table === 'string') {
12
+ options = Object.assign({}, options, { table });
13
+ } else {
14
+ options = table || ({} as any);
15
+ }
16
+ // // tableName
17
+ // const tableName = options.table;
18
+ // if (__tableNames.has(tableName)) {
19
+ // throw new Error(`entity table exists: ${tableName}`);
20
+ // }
21
+ // __tableNames.add(tableName);
22
+ return createBeanDecorator('entity', options, false, target => {
23
+ mergeFieldsOpenapiMetadata(target);
24
+ });
25
+ }
@@ -0,0 +1,9 @@
1
+ export * from './const.ts';
2
+ export * from './databaseDialect.ts';
3
+ export * from './dto/index.ts';
4
+ export * from './entity.ts';
5
+ export * from './model.ts';
6
+ export * from './relations.ts';
7
+ export * from './relationsDynamic.ts';
8
+ export * from './relationsMutate.ts';
9
+ export * from './relationsStatic.ts';
@@ -0,0 +1,7 @@
1
+ import { createBeanDecorator } from 'vona';
2
+
3
+ import type { IDecoratorModelOptions } from '../types/onion/model.ts';
4
+
5
+ export function Model<T extends IDecoratorModelOptions>(options?: T): ClassDecorator {
6
+ return createBeanDecorator('model', options);
7
+ }