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,68 @@
1
+ import type { Constructable, OmitNever, VonaContext } from 'vona';
2
+ import type { ServiceOnion } from 'vona-module-a-onion';
3
+ import type { IDecoratorSummerCacheOptions } from 'vona-module-a-summer';
4
+
5
+ import type { IDatabaseClientRecord } from '../database.ts';
6
+ import type { EntityBaseEmpty } from '../entityBaseEmpty.ts';
7
+ import type { TypeModelColumnsStrict } from '../modelWhere.ts';
8
+ import type { TypeModelClassLikeGeneral } from '../relations.ts';
9
+ import type { ITableRecord } from './table.ts';
10
+
11
+ export interface IModelRecord {}
12
+ export interface IModelClassRecord {}
13
+
14
+ export type TypeDynamicTableName = (ctx: VonaContext, where: any | undefined, defaultTable: keyof ITableRecord, modelInstance: any) => string;
15
+
16
+ export type TypeDynamicClientName = (ctx: VonaContext, modelInstance: any) => keyof IDatabaseClientRecord;
17
+
18
+ export type TypeModelsClearedByFn = (ctx: VonaContext, modelTarget: any, modelSource: any) => Promise<void>;
19
+
20
+ export type TypeSoftDeletionPruneHandler = (ctx: VonaContext, modelInstance: any, options: ISoftDeletionPruneHandlerOptions) => Promise<void>;
21
+
22
+ export interface ISoftDeletionPruneHandlerOptions {
23
+ expired: number;
24
+ }
25
+
26
+ export interface ISoftDeletionPrune {
27
+ handler?: TypeSoftDeletionPruneHandler;
28
+ expired?: number;
29
+ }
30
+
31
+ export type TypeModelOptionsTable = TypeDynamicTableName | keyof ITableRecord;
32
+
33
+ export interface IDecoratorModelOptions<TRecord extends EntityBaseEmpty = any> {
34
+ entity?: Constructable<TRecord>;
35
+ table?: TypeModelOptionsTable;
36
+ disableDeleted?: boolean;
37
+ disableInstance?: boolean;
38
+ disableCreateTime?: boolean;
39
+ disableUpdateTime?: boolean;
40
+ softDeletionPrune?: ISoftDeletionPrune | boolean;
41
+ cache?: {
42
+ query?: IDecoratorSummerCacheOptions | false;
43
+ entity?: IDecoratorSummerCacheOptions | false;
44
+ keysAux?: TypeModelColumnsStrict<TRecord>;
45
+ modelsClear?: TypeModelClassLikeGeneral | TypeModelClassLikeGeneral[];
46
+ modelsClearedBy?: keyof IModelClassRecord | (keyof IModelClassRecord)[]; // TypeModelClassLikeGeneral | TypeModelClassLikeGeneral[];
47
+ modelsClearedByFn?: TypeModelsClearedByFn;
48
+ };
49
+ client?: TypeDynamicClientName | keyof IDatabaseClientRecord;
50
+ // should not use TypeModelRelations or {}
51
+ relations?: Record<never, never>;
52
+ }
53
+
54
+ declare module 'vona-module-a-onion' {
55
+ export interface BeanOnion {
56
+ model: ServiceOnion<IModelRecord>;
57
+ }
58
+ }
59
+
60
+ declare module 'vona' {
61
+ export interface ConfigOnions {
62
+ model: OmitNever<IModelRecord>;
63
+ }
64
+
65
+ export interface IBeanSceneRecord {
66
+ model: never;
67
+ }
68
+ }
@@ -0,0 +1 @@
1
+ export interface ITableRecord {}
@@ -0,0 +1,243 @@
1
+ import type { Constructable, OmitNever } from 'vona';
2
+
3
+ import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
4
+ import type { TypeDepthPrev, TypeDepthPrevMax } from './depth.ts';
5
+ import type { IDecoratorModelOptions, IModelClassRecord } from './onion/model.ts';
6
+ import type { TypeModelAggrRelationResultAggrs, TypeUtilGetAggrsFromRelationAndIncludeWrapper } from './relationsAggr.ts';
7
+ import type { TypeModelGroupRelationResultGroups, TypeUtilGetGroupsFromRelationAndIncludeWrapper } from './relationsGroup.ts';
8
+
9
+ export const SymbolKeyEntity = Symbol('$entity');
10
+ export const SymbolKeyEntityMeta = Symbol('$entityMeta');
11
+ export const SymbolKeyModelOptions = Symbol('$modelOptions');
12
+ export type TypeSymbolKeyEntity = typeof SymbolKeyEntity;
13
+ export type TypeSymbolKeyEntityMeta = typeof SymbolKeyEntityMeta;
14
+ export type TypeSymbolKeyModelOptions = typeof SymbolKeyModelOptions;
15
+
16
+ export type TypeModelOfModelLike<
17
+ ModelLike extends
18
+ | (() => Constructable<BeanModelMeta>)
19
+ | Constructable<BeanModelMeta>
20
+ | (() => BeanModelMeta)
21
+ | BeanModelMeta
22
+ | keyof IModelClassRecord,
23
+ > = ModelLike extends keyof IModelClassRecord
24
+ ? IModelClassRecord[ModelLike]
25
+ : ModelLike extends () => Constructable<infer MODEL>
26
+ ? MODEL
27
+ : ModelLike extends Constructable<infer MODEL>
28
+ ? MODEL
29
+ : ModelLike extends () => infer MODEL
30
+ ? MODEL
31
+ : ModelLike;
32
+
33
+ export type TypeModelClassLike<MODEL extends BeanModelMeta | keyof IModelClassRecord> = MODEL extends BeanModelMeta
34
+ ? (() => Constructable<MODEL>) | Constructable<MODEL>
35
+ : MODEL;
36
+
37
+ export type TypeModelClassLikeGeneral<MODEL extends BeanModelMeta = BeanModelMeta> =
38
+ | (() => Constructable<MODEL>)
39
+ | Constructable<MODEL>
40
+ | (() => BeanModelMeta)
41
+ | BeanModelMeta
42
+ | keyof IModelClassRecord;
43
+
44
+ export type TypeModelsClassLikeGeneral<MODEL extends BeanModelMeta = BeanModelMeta> =
45
+ | TypeModelClassLikeGeneral<MODEL>
46
+ | Array<TypeModelClassLikeGeneral<MODEL>>;
47
+
48
+ export type TypeModelParamsInclude<MODEL extends BeanModelMeta | undefined> = TypeModelParamsIncludeByModelOptions<TypeUtilGetModelOptions<MODEL>>;
49
+
50
+ export type TypeModelParamsIncludeByModelOptions<ModelOptions extends IDecoratorModelOptions | undefined> =
51
+ ModelOptions extends IDecoratorModelOptions
52
+ ? {
53
+ [relationName in keyof ModelOptions['relations']]?: TypeModelParamsRelationOptions<ModelOptions['relations'][relationName]>;
54
+ }
55
+ : never;
56
+
57
+ export type TypeModelParamsRelationOptions<Relation> =
58
+ | boolean
59
+ | (Omit<TypeUtilGetRelationOptions<Relation>, 'autoload'> & {
60
+ include?: TypeModelParamsInclude<TypeUtilGetRelationModel<Relation>>;
61
+ with?: Record<string, unknown>;
62
+ });
63
+
64
+ export type TypeUtilGetRelationType<Relation> = Relation extends { type?: infer TYPE } ? TYPE : undefined;
65
+ export type TypeUtilGetRelationKey<Relation> = Relation extends { key?: infer KEY } ? KEY : undefined;
66
+ export type TypeUtilGetRelationModel<Relation> = Relation extends {
67
+ model?: (() => Constructable<infer MODEL extends BeanModelMeta>) | Constructable<infer MODEL extends BeanModelMeta>;
68
+ }
69
+ ? MODEL
70
+ : Relation extends { model?: (() => infer MODEL extends BeanModelMeta) | (infer MODEL extends BeanModelMeta) }
71
+ ? MODEL
72
+ : Relation extends { model?: () => Constructable<infer MODEL extends BeanModelMeta> }
73
+ ? MODEL
74
+ : Relation extends { model?: () => infer MODEL extends BeanModelMeta }
75
+ ? MODEL
76
+ : Relation extends { model?: Constructable<infer MODEL extends BeanModelMeta> }
77
+ ? MODEL
78
+ : Relation extends { model?: infer MODEL extends BeanModelMeta }
79
+ ? MODEL
80
+ : Relation extends { model?: infer MODELNAME extends keyof IModelClassRecord }
81
+ ? IModelClassRecord[MODELNAME]
82
+ : undefined;
83
+
84
+ export type TypeUtilGetRelationModelOptions<Relation> = TypeUtilGetModelOptions<TypeUtilGetRelationModel<Relation>>;
85
+ export type TypeUtilGetRelationEntity<Relation> = TypeUtilGetModelEntity<TypeUtilGetRelationModel<Relation>>;
86
+ export type TypeUtilGetRelationEntityMeta<Relation> = TypeUtilGetModelEntityMeta<TypeUtilGetRelationModel<Relation>>;
87
+ export type TypeUtilGetRelationOptions<Relation> = Relation extends { options?: infer OPTIONS } ? OPTIONS : undefined;
88
+ export type TypeUtilGetRelationOptionsAutoload<Relation> = Relation extends { options?: { autoload?: infer AUTOLOAD } } ? AUTOLOAD : undefined;
89
+ export type TypeUtilGetRelationOptionsColumns<Relation> = Relation extends { options?: { columns?: infer COLUMNS } } ? COLUMNS : undefined;
90
+ export type TypeUtilGetRelationOptionsAggrs<Relation> = Relation extends { options?: { aggrs?: infer Aggrs } } ? Aggrs : undefined;
91
+ export type TypeUtilGetRelationOptionsGroups<Relation> = Relation extends { options?: { groups?: infer Groups } } ? Groups : undefined;
92
+ export type TypeUtilGetModelOptions<Model extends BeanModelMeta | undefined> = Model extends BeanModelMeta
93
+ ? Model[TypeSymbolKeyModelOptions]
94
+ : undefined;
95
+ export type TypeUtilGetModelEntity<Model extends BeanModelMeta | undefined> = Model extends BeanModelMeta ? Model[TypeSymbolKeyEntity] : undefined;
96
+ export type TypeUtilGetModelEntityMeta<Model extends BeanModelMeta | undefined> = Model extends BeanModelMeta
97
+ ? Model[TypeSymbolKeyEntityMeta]
98
+ : undefined;
99
+ export type TypeUtilGetModelOnionName<Model extends BeanModelMeta | undefined> = Model extends BeanModelMeta ? Model['$onionName'] : undefined;
100
+
101
+ export type TypeUtilGetRelationEntityByType<
102
+ Relation,
103
+ IncludeWrapper extends {} | undefined | unknown,
104
+ Depth extends TypeDepthPrev[number] = TypeDepthPrevMax,
105
+ > = TypeUtilGetEntityByType<
106
+ TypeUtilGetRelationEntity<Relation>,
107
+ TypeUtilGetRelationType<Relation>,
108
+ TypeUtilGetRelationModel<Relation>,
109
+ IncludeWrapper,
110
+ TypeUtilGetColumnsFromRelationAndIncludeWrapper<Relation, IncludeWrapper>,
111
+ TypeUtilGetAggrsFromRelationAndIncludeWrapper<Relation, IncludeWrapper>,
112
+ TypeUtilGetGroupsFromRelationAndIncludeWrapper<Relation, IncludeWrapper>,
113
+ Depth
114
+ >;
115
+
116
+ export type TypeUtilGetEntityByType<
117
+ TRecord,
118
+ TYPE,
119
+ TModel extends BeanModelMeta | undefined,
120
+ IncludeWrapper extends {} | undefined | unknown,
121
+ Columns,
122
+ Aggrs,
123
+ Groups,
124
+ Depth extends TypeDepthPrev[number] = TypeDepthPrevMax,
125
+ > = TYPE extends 'hasMany' | 'belongsToMany'
126
+ ? Groups extends string | string[]
127
+ ? Array<TypeModelRelationResult<TRecord, TModel, IncludeWrapper, Columns, Aggrs, Groups>>
128
+ : Aggrs extends {}
129
+ ? TypeModelRelationResult<TRecord, TModel, IncludeWrapper, Columns, Aggrs> | undefined
130
+ : Array<TypeModelRelationResult<TRecord, TModel, IncludeWrapper, Columns>>
131
+ : [Depth] extends [never]
132
+ ? undefined
133
+ : TypeModelRelationResult<TRecord, TModel, IncludeWrapper, Columns, undefined, undefined, TypeDepthPrev[Depth]> | undefined;
134
+
135
+ export type TypeUtilGetParamsAggrs<TParams> = TParams extends { aggrs?: infer Aggrs } ? Aggrs : undefined;
136
+ export type TypeUtilGetParamsGroups<TParams> = TParams extends { groups?: infer Groups } ? Groups : undefined; // not use Groups extends string |string[]
137
+ export type TypeUtilGetParamsInlcude<TParams> = TParams extends { include?: infer INCLUDE } ? INCLUDE : undefined;
138
+ export type TypeUtilGetParamsWith<TParams> = TParams extends { with?: infer WITH } ? WITH : undefined;
139
+ export type TypeUtilGetParamsColumns<TParams> = TParams extends { columns?: infer COLUMNS } ? COLUMNS : undefined;
140
+ export type TypeUtilPrepareColumns<TColumns> = TColumns extends '*' | ['*']
141
+ ? undefined
142
+ : TColumns extends string[]
143
+ ? TColumns[number]
144
+ : TColumns extends string
145
+ ? TColumns
146
+ : undefined;
147
+ export type TypeUtilEntitySelector<TRecord, TColumns> = [TColumns] extends [keyof TRecord] ? Pick<TRecord, TColumns> : TRecord;
148
+ export type TypeUtilEntityOmit<TRecord, TColumns> = [TColumns] extends [keyof TRecord] ? Omit<TRecord, TColumns> : TRecord;
149
+ export type TypeUtilEntityPartial<TRecord, TColumns> = [TColumns] extends [keyof TRecord]
150
+ ? Partial<Pick<TRecord, TColumns>> & Omit<TRecord, TColumns>
151
+ : TRecord;
152
+ export type TypeUtilGetColumnsFromRelationAndIncludeWrapper<Relation, IncludeWrapper extends {} | undefined | unknown> =
153
+ TypeUtilGetParamsColumns<IncludeWrapper> extends string | string[]
154
+ ? TypeUtilGetParamsColumns<IncludeWrapper>
155
+ : TypeUtilGetRelationOptionsColumns<Relation>;
156
+
157
+ export interface TypeModelSelectAndCount<
158
+ TRecord,
159
+ TModel extends BeanModelMeta | undefined,
160
+ TOptionsRelation,
161
+ TColumns = undefined,
162
+ Aggrs = undefined,
163
+ Groups = undefined,
164
+ Depth extends TypeDepthPrev[number] = TypeDepthPrevMax,
165
+ > {
166
+ list: TypeModelRelationResult<TRecord, TModel, TOptionsRelation, TColumns, Aggrs, Groups, Depth>[];
167
+ total: string;
168
+ pageCount: number;
169
+ pageSize: number;
170
+ pageNo: number;
171
+ }
172
+
173
+ export type TypeModelRelationResult<
174
+ TRecord,
175
+ TModel extends BeanModelMeta | undefined,
176
+ TOptionsRelation,
177
+ TColumns = undefined,
178
+ Aggrs = undefined,
179
+ Groups = undefined,
180
+ Depth extends TypeDepthPrev[number] = TypeDepthPrevMax,
181
+ > = Groups extends string | string[]
182
+ ? TypeModelGroupRelationResultGroups<TRecord, Aggrs, Groups, TColumns>
183
+ : Aggrs extends {}
184
+ ? TypeModelAggrRelationResultAggrs<Aggrs>
185
+ : TypeModelRelationResult_Normal<TRecord, TModel, TOptionsRelation, TColumns, Depth>;
186
+
187
+ export type TypeModelRelationResult_Normal<
188
+ TRecord,
189
+ TModel extends BeanModelMeta | undefined,
190
+ TOptionsRelation,
191
+ TColumns = undefined,
192
+ Depth extends TypeDepthPrev[number] = TypeDepthPrevMax,
193
+ > = TypeUtilEntitySelector<
194
+ TRecord,
195
+ TypeUtilPrepareColumns<TColumns extends string | string[] ? TColumns : TypeUtilGetParamsColumns<TOptionsRelation>>
196
+ > &
197
+ (TModel extends BeanModelMeta
198
+ ? OmitNever<TypeModelRelationResultMergeInclude<TypeUtilGetModelOptions<TModel>, TypeUtilGetParamsInlcude<TOptionsRelation>, Depth>> &
199
+ OmitNever<TypeModelRelationResultMergeWith<TypeUtilGetParamsWith<TOptionsRelation>, Depth>>
200
+ : {});
201
+
202
+ export type TypeModelRelationResultMergeInclude<
203
+ TModelOptions extends IDecoratorModelOptions,
204
+ TInclude extends {} | undefined | unknown,
205
+ Depth extends TypeDepthPrev[number] = TypeDepthPrevMax,
206
+ > = {
207
+ [RelationName in keyof TModelOptions['relations']]: TInclude extends {}
208
+ ? TInclude[RelationName] extends {} | boolean
209
+ ? TypeModelRelationResultMergeIncludeWrapper<TModelOptions['relations'][RelationName], TInclude[RelationName], Depth>
210
+ : TypeModelRelationResultMergeAutoload<TModelOptions['relations'][RelationName], Depth>
211
+ : TypeModelRelationResultMergeAutoload<TModelOptions['relations'][RelationName], Depth>;
212
+ };
213
+
214
+ export type TypeModelRelationResultMergeWith<
215
+ TWith extends {} | undefined | unknown,
216
+ Depth extends TypeDepthPrev[number] = TypeDepthPrevMax,
217
+ > = TWith extends {} ? { [RelationName in keyof TWith]: TypeModelRelationResultMergeWithRelation<TWith[RelationName], Depth> } : {};
218
+
219
+ export type TypeModelRelationResultMergeAutoload<Relation, Depth extends TypeDepthPrev[number] = TypeDepthPrevMax> =
220
+ TypeUtilGetRelationOptionsAutoload<Relation> extends true ? TypeUtilGetRelationEntityByType<Relation, undefined, Depth> : never;
221
+
222
+ export type TypeModelRelationResultMergeIncludeWrapper<
223
+ Relation,
224
+ IncludeWrapper,
225
+ Depth extends TypeDepthPrev[number] = TypeDepthPrevMax,
226
+ > = IncludeWrapper extends false
227
+ ? never
228
+ : IncludeWrapper extends true
229
+ ? TypeUtilGetRelationEntityByType<Relation, undefined, Depth>
230
+ : IncludeWrapper extends {}
231
+ ? TypeUtilGetRelationEntityByType<Relation, IncludeWrapper, Depth>
232
+ : never;
233
+
234
+ export type TypeModelRelationResultMergeWithRelation<
235
+ WithRelation,
236
+ Depth extends TypeDepthPrev[number] = TypeDepthPrevMax,
237
+ > = WithRelation extends false
238
+ ? never
239
+ : WithRelation extends true
240
+ ? never
241
+ : WithRelation extends {}
242
+ ? TypeUtilGetRelationEntityByType<WithRelation, TypeUtilGetRelationOptions<WithRelation>, Depth>
243
+ : never;
@@ -0,0 +1,31 @@
1
+ import type { TypeUtilGetParamsAggrs, TypeUtilGetRelationOptionsAggrs } from './relations.ts';
2
+
3
+ export type TypeModelAggrRelationResult<TOptions> =
4
+ TypeUtilGetParamsAggrs<TOptions> extends {} ? TypeModelAggrRelationResultAggrs<TypeUtilGetParamsAggrs<TOptions>> : {}; // not use undefined
5
+
6
+ export type TypeModelAggrRelationResultAggrs<Aggrs> = Aggrs extends {}
7
+ ? TypeRecordAggrsValuesToObject<
8
+ TypeRecordAggrsValues<{
9
+ [K in keyof Aggrs]: K extends string ? TypeModelAggrRelationResultAggr<K, TypeUtilAggrPrepareColumns<Aggrs[K]>> : never;
10
+ }>
11
+ >
12
+ : {};
13
+
14
+ export type TypeModelAggrRelationResultAggr<Aggr extends string, Columns extends string | number | symbol | undefined> = Columns extends string
15
+ ? `${Aggr}_${Columns extends '*' ? 'all' : Columns}`
16
+ : never;
17
+
18
+ export type TypeUtilAggrPrepareColumns<TColumns> = TColumns extends string[] ? TColumns[number] : TColumns extends string ? TColumns : undefined;
19
+ export type TypeRecordAggrsValues<TRecord extends Record<string, any>> = TRecord[keyof TRecord];
20
+ export type TypeRecordAggrsValuesToObject<AggrValues extends string> = { [K in AggrValues]: string | undefined };
21
+
22
+ export type TypeUtilGetAggrsFromRelationAndIncludeWrapper<Relation, IncludeWrapper extends {} | undefined | unknown> =
23
+ TypeUtilGetRelationOptionsAggrs<Relation> extends {}
24
+ ? TypeUtilGetParamsAggrs<IncludeWrapper> extends {}
25
+ ? TypeUtilGetAggrsFromRelationAndIncludeWrapper_Mixed<TypeUtilGetRelationOptionsAggrs<Relation>, TypeUtilGetParamsAggrs<IncludeWrapper>>
26
+ : TypeUtilGetRelationOptionsAggrs<Relation>
27
+ : undefined;
28
+
29
+ export type TypeUtilGetAggrsFromRelationAndIncludeWrapper_Mixed<RelationAggrs extends {}, IncludeWrapperAggrs extends {}> = {
30
+ [K in keyof RelationAggrs]: K extends string ? (K extends keyof IncludeWrapperAggrs ? IncludeWrapperAggrs[K] : RelationAggrs[K]) : undefined;
31
+ };
@@ -0,0 +1,116 @@
1
+ import type { TypeConfirmArray, TypeRecordValues } from 'vona';
2
+
3
+ import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
4
+ import type { IDecoratorModelOptions } from './onion/model.ts';
5
+ import type {
6
+ TypeModelOfModelLike,
7
+ TypeModelsClassLikeGeneral,
8
+ TypeSymbolKeyEntity,
9
+ TypeSymbolKeyEntityMeta,
10
+ TypeUtilGetModelOnionName,
11
+ TypeUtilGetModelOptions,
12
+ TypeUtilGetRelationEntityMeta,
13
+ TypeUtilGetRelationModel,
14
+ } from './relations.ts';
15
+
16
+ export type TypeEntityTableColumnNames<EntityMeta extends { $table: string } | undefined> = EntityMeta extends { $table: string }
17
+ ? keyof {
18
+ [K in keyof EntityMeta as K extends '$table' | '$comment' | '$default'
19
+ ? never
20
+ : K extends string
21
+ ? `${EntityMeta['$table']}.${K}`
22
+ : never]: EntityMeta[K];
23
+ }
24
+ : never;
25
+ export type TypeEntityTableColumnNamesShort<Entity> = keyof Entity;
26
+
27
+ export type TypeEntityTableColumns<Entity extends {} | undefined, EntityMeta extends { $table: string } | undefined> = Entity extends {}
28
+ ? EntityMeta extends { $table: string }
29
+ ? { [K in keyof Entity as K extends string ? `${EntityMeta['$table']}.${K}` : never]: Entity[K] }
30
+ : {}
31
+ : {};
32
+ export type TypeEntityTableColumnsShort<Entity> = Entity;
33
+
34
+ export type TypeEntityTableColumnsOfModelDirect<TModel extends BeanModelMeta | undefined> = TModel extends BeanModelMeta
35
+ ? TypeEntityTableColumns<TModel[TypeSymbolKeyEntity], TModel[TypeSymbolKeyEntityMeta]>
36
+ : {};
37
+
38
+ export type TypeEntityTableColumnNamesOfModels<A extends BeanModelMeta[]> = TypeEntityTableColumnNames<A[number][TypeSymbolKeyEntityMeta]>;
39
+
40
+ // export type TypeEntityTableColumnNamesOfModelOptions<TModelOptions extends IDecoratorModelOptions> = TypeEntityTableColumnNames<TypeRecordValues<{
41
+ // [RelationName in keyof TModelOptions['relations']]: TypeUtilGetRelationEntityMeta<TModelOptions['relations'][RelationName]>;
42
+ // }>>;
43
+ export type TypeEntityTableColumnNamesOfModelOptions<TModelOptions extends IDecoratorModelOptions> = TModelOptions['relations'] extends {}
44
+ ? TypeRecordValues<{
45
+ [RelationName in keyof TModelOptions['relations']]: TypeEntityTableColumnNames<
46
+ TypeUtilGetRelationEntityMeta<TModelOptions['relations'][RelationName]>
47
+ >;
48
+ }>
49
+ : never;
50
+
51
+ export type TypeEntityTableColumnsOfModelOptions<TModelOptions extends IDecoratorModelOptions> = TModelOptions['relations'] extends {}
52
+ ? TypeEntityTableColumnsOfModelDirect<
53
+ TypeRecordModelValues<{
54
+ [RelationName in keyof TModelOptions['relations']]: TypeUtilGetRelationModel<TModelOptions['relations'][RelationName]>;
55
+ }>
56
+ >
57
+ : {};
58
+
59
+ export type TypeModelsOfModelOptions<TModelOptions extends IDecoratorModelOptions> = TModelOptions['relations'] extends {}
60
+ ? TypeRecordModelValues<{
61
+ [RelationName in keyof TModelOptions['relations']]: TypeUtilGetRelationModel<TModelOptions['relations'][RelationName]>;
62
+ }>
63
+ : never;
64
+
65
+ export type TypeModelOnionNamesOfModelOptions<TModelOptions extends IDecoratorModelOptions> = TModelOptions['relations'] extends {}
66
+ ? TypeRecordValues<{
67
+ [RelationName in keyof TModelOptions['relations']]: TypeUtilGetModelOnionName<
68
+ TypeUtilGetRelationModel<TModelOptions['relations'][RelationName]>
69
+ >;
70
+ }>
71
+ : undefined; // not use never
72
+
73
+ export type TypeRecordModelValues<TRecord extends Record<string, BeanModelMeta | undefined>> = TRecord[keyof TRecord];
74
+
75
+ export type TypeEntityTableColumnNamesOfModelClass<TModel extends BeanModelMeta> = TypeEntityTableColumnNamesOfModelOptions<
76
+ TypeUtilGetModelOptions<TModel>
77
+ >;
78
+
79
+ export type TypeEntityTableColumnsOfModelClass<TModel extends BeanModelMeta> = TypeEntityTableColumnsOfModelOptions<TypeUtilGetModelOptions<TModel>>;
80
+
81
+ export type TypeModelsOfModelClass<TModel extends BeanModelMeta> = TypeModelsOfModelOptions<TypeUtilGetModelOptions<TModel>>;
82
+
83
+ export type TypeModelOnionNamesOfModelClass<TModel extends BeanModelMeta> = TypeModelOnionNamesOfModelOptions<TypeUtilGetModelOptions<TModel>>;
84
+
85
+ export type TypeEntityTableColumnNamesOfModelJoins<TModelJoins extends TypeModelsClassLikeGeneral> = TypeEntityTableColumnNames<
86
+ TypeModelOfModelLike<TypeConfirmArray<TModelJoins>[number]>[TypeSymbolKeyEntityMeta]
87
+ >;
88
+
89
+ export type TypeEntityTableColumnsOfModelJoins<TModelJoins extends TypeModelsClassLikeGeneral> = TypeEntityTableColumnsOfModelDirect<
90
+ TypeModelOfModelLike<TypeConfirmArray<TModelJoins>[number]>
91
+ >;
92
+
93
+ export type TypeEntityTableColumnNamesOfModelSelf<TModel extends BeanModelMeta> =
94
+ | TypeEntityTableColumnNames<TModel[TypeSymbolKeyEntityMeta]>
95
+ | TypeEntityTableColumnNamesShort<TModel[TypeSymbolKeyEntity]>;
96
+
97
+ export type TypeEntityTableColumnsOfModelSelf<TModel extends BeanModelMeta> = TypeEntityTableColumnsOfModelDirect<TModel> &
98
+ TypeEntityTableColumnsShort<TModel[TypeSymbolKeyEntity]>;
99
+
100
+ export type TypeEntityTableColumnNamesOfGeneral<
101
+ TModelJoins extends TypeModelsClassLikeGeneral | undefined,
102
+ TModel extends BeanModelMeta | undefined,
103
+ > = TModel extends BeanModelMeta
104
+ ? TModelJoins extends TypeModelsClassLikeGeneral
105
+ ? TypeEntityTableColumnNamesOfModelJoins<TModelJoins> | TypeEntityTableColumnNamesOfModelSelf<TModel>
106
+ : TypeEntityTableColumnNamesOfModelClass<TModel> | TypeEntityTableColumnNamesOfModelSelf<TModel>
107
+ : undefined;
108
+
109
+ export type TypeEntityTableColumnsOfGeneral<
110
+ TModelJoins extends TypeModelsClassLikeGeneral | undefined,
111
+ TModel extends BeanModelMeta | undefined,
112
+ > = TModel extends BeanModelMeta
113
+ ? TModelJoins extends TypeModelsClassLikeGeneral
114
+ ? TypeEntityTableColumnsOfModelJoins<TModelJoins> & TypeEntityTableColumnsOfModelSelf<TModel>
115
+ : TypeEntityTableColumnsOfModelClass<TModel> & TypeEntityTableColumnsOfModelSelf<TModel>
116
+ : undefined;
@@ -0,0 +1,152 @@
1
+ import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
2
+ import type { ServiceDb } from '../service/db_.ts';
3
+ import type { IDatabaseClientRecord } from './database.ts';
4
+ import type { TypeModelSelectAggrParamsAggrs } from './modelAggr.ts';
5
+ import type { IBuildModelSelectGeneralParamsBasic } from './modelGeneral.ts';
6
+ import type { TypeModelColumn, TypeModelColumnsPatch, TypeModelColumnsStrict } from './modelWhere.ts';
7
+ import type { IModelClassRecord, TypeModelOptionsTable } from './onion/model.ts';
8
+ import type { TypeModelClassLike, TypeModelOfModelLike, TypeModelsClassLikeGeneral, TypeSymbolKeyEntity } from './relations.ts';
9
+ import type { TypeEntityTableColumnNamesOfGeneral, TypeEntityTableColumnsOfGeneral } from './relationsColumns.ts';
10
+ import type { TypeEntityTableNamesOfGeneral } from './relationsTables.ts';
11
+
12
+ export type TypeModelRelationType = 'hasOne' | 'belongsTo' | 'hasMany' | 'belongsToMany';
13
+ // export interface TypeModelRelations {
14
+ // [key: string]: TypeModelRelation<any, any>;
15
+ // }
16
+
17
+ // export type TypeModelRelation<MODELSelf extends BeanModelMeta | undefined, MODELTarget extends BeanModelMeta> =
18
+ // IModelRelationHasOne<MODELTarget> |
19
+ // IModelRelationBelongsTo<MODELSelf, MODELTarget> |
20
+ // IModelRelationHasMany<MODELTarget>;
21
+
22
+ // use optional ? for app config
23
+ export interface IModelRelationHasOne<
24
+ MODEL extends BeanModelMeta | keyof IModelClassRecord,
25
+ KEY extends keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity] | undefined = keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity],
26
+ AUTOLOAD extends boolean = false,
27
+ COLUMNS extends TypeModelColumn<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = TypeModelColumn<
28
+ TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]
29
+ >,
30
+ > {
31
+ type?: 'hasOne';
32
+ model?: TypeModelClassLike<MODEL>;
33
+ key?: KEY;
34
+ options?: IModelRelationOptionsOne<TypeModelOfModelLike<MODEL>, AUTOLOAD, COLUMNS>;
35
+ }
36
+
37
+ export interface IModelRelationBelongsTo<
38
+ MODELSelf extends BeanModelMeta | keyof IModelClassRecord,
39
+ MODEL extends BeanModelMeta | keyof IModelClassRecord,
40
+ AUTOLOAD extends boolean = false,
41
+ COLUMNS extends TypeModelColumn<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = TypeModelColumn<
42
+ TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]
43
+ >,
44
+ > {
45
+ type?: 'belongsTo';
46
+ model?: TypeModelClassLike<MODEL>;
47
+ key?: keyof TypeModelOfModelLike<MODELSelf>[TypeSymbolKeyEntity];
48
+ options?: IModelRelationOptionsOne<TypeModelOfModelLike<MODEL>, AUTOLOAD, COLUMNS>;
49
+ }
50
+
51
+ export interface IModelRelationHasMany<
52
+ MODEL extends BeanModelMeta | keyof IModelClassRecord,
53
+ KEY extends keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity] | undefined = keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity],
54
+ AUTOLOAD extends boolean = false,
55
+ COLUMNS extends TypeModelColumn<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = TypeModelColumn<
56
+ TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]
57
+ >,
58
+ ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined,
59
+ Aggrs extends TypeModelSelectAggrParamsAggrs<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = undefined,
60
+ Groups extends TypeModelColumnsStrict<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = undefined,
61
+ > {
62
+ type?: 'hasMany';
63
+ model?: TypeModelClassLike<MODEL>;
64
+ key?: KEY;
65
+ options?: IModelRelationOptionsMany<TypeModelOfModelLike<MODEL>, AUTOLOAD, COLUMNS, ModelJoins, Aggrs, Groups>;
66
+ }
67
+
68
+ export interface IModelRelationBelongsToMany<
69
+ MODELMiddle extends BeanModelMeta | keyof IModelClassRecord,
70
+ MODEL extends BeanModelMeta | keyof IModelClassRecord,
71
+ AUTOLOAD extends boolean = false,
72
+ COLUMNS extends TypeModelColumn<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = TypeModelColumn<
73
+ TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]
74
+ >,
75
+ ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined,
76
+ Aggrs extends TypeModelSelectAggrParamsAggrs<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = undefined,
77
+ Groups extends TypeModelColumnsStrict<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = undefined,
78
+ > {
79
+ type?: 'belongsToMany';
80
+ modelMiddle?: TypeModelClassLike<MODELMiddle>;
81
+ model?: TypeModelClassLike<MODEL>;
82
+ keyFrom?: keyof TypeModelOfModelLike<MODELMiddle>[TypeSymbolKeyEntity];
83
+ keyTo?: keyof TypeModelOfModelLike<MODELMiddle>[TypeSymbolKeyEntity];
84
+ options?: IModelRelationOptionsMany<TypeModelOfModelLike<MODEL>, AUTOLOAD, COLUMNS, ModelJoins, Aggrs, Groups>;
85
+ }
86
+
87
+ export interface IModelRelationOptionsOne<
88
+ MODEL extends BeanModelMeta,
89
+ AUTOLOAD extends boolean = false,
90
+ COLUMNS extends TypeModelColumn<MODEL[TypeSymbolKeyEntity]> | undefined = TypeModelColumn<MODEL[TypeSymbolKeyEntity]>,
91
+ > extends IModelRelationOptionsMetaWrapper {
92
+ autoload?: AUTOLOAD;
93
+ columns?: TypeModelColumnsPatch<MODEL[TypeSymbolKeyEntity], COLUMNS>;
94
+ }
95
+
96
+ export interface IModelRelationOptionsMany<
97
+ MODEL extends BeanModelMeta,
98
+ AUTOLOAD extends boolean = false,
99
+ COLUMNS extends TypeModelColumn<MODEL[TypeSymbolKeyEntity]> | undefined = TypeModelColumn<MODEL[TypeSymbolKeyEntity]>,
100
+ ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined,
101
+ Aggrs extends TypeModelSelectAggrParamsAggrs<MODEL[TypeSymbolKeyEntity]> | undefined = undefined,
102
+ Groups extends TypeModelColumnsStrict<MODEL[TypeSymbolKeyEntity]> | undefined = undefined,
103
+ >
104
+ extends IModelRelationOptionsMetaWrapper, IModelRelationOptionsMany_Raw<MODEL, AUTOLOAD, COLUMNS, ModelJoins, Aggrs, Groups> {}
105
+
106
+ export type IModelRelationOptionsMany_Raw<
107
+ MODEL extends BeanModelMeta,
108
+ AUTOLOAD extends boolean = false,
109
+ COLUMNS extends TypeModelColumn<MODEL[TypeSymbolKeyEntity]> | undefined = TypeModelColumn<MODEL[TypeSymbolKeyEntity]>,
110
+ ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined,
111
+ Aggrs extends TypeModelSelectAggrParamsAggrs<MODEL[TypeSymbolKeyEntity]> | undefined = undefined,
112
+ Groups extends TypeModelColumnsStrict<MODEL[TypeSymbolKeyEntity]> | undefined = undefined,
113
+ > = IBuildModelRelationOptionsMany<
114
+ MODEL[TypeSymbolKeyEntity],
115
+ AUTOLOAD,
116
+ COLUMNS,
117
+ TypeEntityTableNamesOfGeneral<ModelJoins, MODEL>,
118
+ TypeEntityTableColumnNamesOfGeneral<ModelJoins, MODEL>,
119
+ TypeEntityTableColumnsOfGeneral<ModelJoins, MODEL>,
120
+ Aggrs,
121
+ Groups
122
+ >;
123
+
124
+ export interface IBuildModelRelationOptionsMany<
125
+ TRecord,
126
+ AUTOLOAD extends boolean = false,
127
+ COLUMNS extends TypeModelColumn<TRecord> | undefined = TypeModelColumn<TRecord>,
128
+ TableNames = undefined,
129
+ ColumnNames = keyof TRecord,
130
+ Columns extends {} | undefined = undefined,
131
+ Aggrs extends TypeModelSelectAggrParamsAggrs<TRecord> | undefined = undefined,
132
+ Groups extends TypeModelColumnsStrict<TRecord> | undefined = undefined,
133
+ > extends IBuildModelSelectGeneralParamsBasic<TRecord, COLUMNS, TableNames, ColumnNames, Columns, Aggrs, Groups> {
134
+ autoload?: AUTOLOAD;
135
+ }
136
+
137
+ export interface IModelRelationOptionsMetaBasic {
138
+ client?: TypeModelRelationOptionsMetaClient;
139
+ table?: TypeModelOptionsTable;
140
+ }
141
+
142
+ export interface IModelRelationOptionsMeta extends IModelRelationOptionsMetaBasic {
143
+ middle?: IModelRelationOptionsMetaBasic;
144
+ }
145
+
146
+ export interface IModelRelationOptionsMetaWrapper {
147
+ meta?: IModelRelationOptionsMeta;
148
+ }
149
+
150
+ export type TypeModelRelationOptionsMetaClient = '_auto_' | '_initial_' | '_inherit_' | keyof IDatabaseClientRecord | ServiceDb;
151
+
152
+ export type IRelationItem = [string, any, any, any, boolean];