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,348 @@
1
+ // eslint-disable
2
+ /** aopMethod: begin */
3
+ export * from '../bean/aopMethod.transaction.ts';
4
+ import type { IAopMethodOptionsTransaction } from '../bean/aopMethod.transaction.ts';
5
+ import 'vona-module-a-aspect';
6
+ declare module 'vona-module-a-aspect' {
7
+
8
+ export interface IAopMethodRecord {
9
+ 'a-orm:transaction': IAopMethodOptionsTransaction;
10
+ }
11
+
12
+
13
+ }
14
+ declare module 'vona-module-a-orm' {
15
+
16
+ export interface AopMethodTransaction {
17
+ /** @internal */
18
+ get scope(): ScopeModuleAOrm;
19
+ }
20
+
21
+ export interface AopMethodTransaction {
22
+ get $beanFullName(): 'a-orm.aopMethod.transaction';
23
+ get $onionName(): 'a-orm:transaction';
24
+ get $onionOptions(): IAopMethodOptionsTransaction;
25
+ }
26
+ }
27
+ /** aopMethod: end */
28
+ /** bean: begin */
29
+ export * from '../bean/bean.database.ts';
30
+ export * from '../bean/bean.databaseDialectBase.ts';
31
+ export * from '../bean/bean.model.ts';
32
+ export * from '../bean/bean.modelBase.ts';
33
+
34
+ import 'vona';
35
+ declare module 'vona' {
36
+
37
+
38
+ }
39
+ declare module 'vona-module-a-orm' {
40
+
41
+ export interface BeanDatabase {
42
+ /** @internal */
43
+ get scope(): ScopeModuleAOrm;
44
+ }
45
+ }
46
+ /** bean: end */
47
+ /** bean: begin */
48
+ import type { BeanDatabase } from '../bean/bean.database.ts';
49
+ import 'vona';
50
+ declare module 'vona' {
51
+ export interface IBeanRecordGlobal {
52
+ 'database': BeanDatabase;
53
+ }
54
+ }
55
+ /** bean: end */
56
+ /** service: begin */
57
+ export * from '../service/cacheEntity_.ts';
58
+ export * from '../service/cacheQuery_.ts';
59
+ export * from '../service/columnsCache_.ts';
60
+ export * from '../service/columns_.ts';
61
+ export * from '../service/database.ts';
62
+ export * from '../service/databaseAsyncLocalStorage_.ts';
63
+ export * from '../service/databaseClient_.ts';
64
+ export * from '../service/db_.ts';
65
+ export * from '../service/entityResolver_.ts';
66
+ export * from '../service/modelResolver_.ts';
67
+ export * from '../service/relations_.ts';
68
+ export * from '../service/transactionAsyncLocalStorage_.ts';
69
+ export * from '../service/transactionConsistency‌_.ts';
70
+ export * from '../service/transactionFiber_.ts';
71
+ export * from '../service/transactionState_.ts';
72
+ export * from '../service/transaction_.ts';
73
+
74
+ import 'vona-module-a-bean';
75
+ declare module 'vona-module-a-bean' {
76
+
77
+ export interface IServiceRecord {
78
+ 'a-orm:database': never;
79
+ }
80
+
81
+
82
+ }
83
+ declare module 'vona-module-a-orm' {
84
+
85
+ export interface ServiceDatabase {
86
+ /** @internal */
87
+ get scope(): ScopeModuleAOrm;
88
+ }
89
+
90
+ export interface ServiceDatabase {
91
+ get $beanFullName(): 'a-orm.service.database';
92
+ get $onionName(): 'a-orm:database';
93
+
94
+ }
95
+ }
96
+ /** service: end */
97
+ /** service: begin */
98
+ import type { ServiceDatabase } from '../service/database.ts';
99
+ export interface IModuleService {
100
+ 'database': ServiceDatabase;
101
+ }
102
+ /** service: end */
103
+ /** service: begin */
104
+
105
+ import 'vona';
106
+ declare module 'vona' {
107
+ export interface IBeanRecordGeneral {
108
+ 'a-orm.service.database': ServiceDatabase;
109
+ }
110
+ }
111
+ /** service: end */
112
+ /** broadcast: begin */
113
+ export * from '../bean/broadcast.columnsClear.ts';
114
+
115
+ import { type IDecoratorBroadcastOptions } from 'vona-module-a-broadcast';
116
+ declare module 'vona-module-a-broadcast' {
117
+
118
+ export interface IBroadcastRecord {
119
+ 'a-orm:columnsClear': IDecoratorBroadcastOptions;
120
+ }
121
+
122
+
123
+ }
124
+ declare module 'vona-module-a-orm' {
125
+
126
+ export interface BroadcastColumnsClear {
127
+ /** @internal */
128
+ get scope(): ScopeModuleAOrm;
129
+ }
130
+
131
+ export interface BroadcastColumnsClear {
132
+ get $beanFullName(): 'a-orm.broadcast.columnsClear';
133
+ get $onionName(): 'a-orm:columnsClear';
134
+ get $onionOptions(): IDecoratorBroadcastOptions;
135
+ }
136
+ }
137
+ /** broadcast: end */
138
+ /** broadcast: begin */
139
+ import type { BroadcastColumnsClear } from '../bean/broadcast.columnsClear.ts';
140
+ export interface IModuleBroadcast {
141
+ 'columnsClear': BroadcastColumnsClear;
142
+ }
143
+ /** broadcast: end */
144
+ /** event: begin */
145
+ export * from '../bean/event.clientNameReal.ts';
146
+ export * from '../bean/event.columnsClear.ts';
147
+
148
+ import 'vona';
149
+ declare module 'vona' {
150
+
151
+
152
+ }
153
+ declare module 'vona-module-a-orm' {
154
+
155
+ export interface EventClientNameReal {
156
+ /** @internal */
157
+ get scope(): ScopeModuleAOrm;
158
+ }
159
+
160
+ export interface EventClientNameReal {
161
+ get $beanFullName(): 'a-orm.event.clientNameReal';
162
+ get $onionName(): 'a-orm:clientNameReal';
163
+
164
+ }
165
+
166
+ export interface EventColumnsClear {
167
+ /** @internal */
168
+ get scope(): ScopeModuleAOrm;
169
+ }
170
+
171
+ export interface EventColumnsClear {
172
+ get $beanFullName(): 'a-orm.event.columnsClear';
173
+ get $onionName(): 'a-orm:columnsClear';
174
+
175
+ }
176
+ }
177
+ /** event: end */
178
+ /** event: begin */
179
+ import type { EventClientNameReal } from '../bean/event.clientNameReal.ts';
180
+ import type { EventColumnsClear } from '../bean/event.columnsClear.ts';
181
+ export interface IModuleEvent {
182
+ 'clientNameReal': EventClientNameReal;
183
+ 'columnsClear': EventColumnsClear;
184
+ }
185
+ /** event: end */
186
+ /** event: begin */
187
+ import type { TypeEventClientNameRealData, TypeEventClientNameRealResult } from '../bean/event.clientNameReal.ts';
188
+ import type { TypeEventColumnsClearData, TypeEventColumnsClearResult } from '../bean/event.columnsClear.ts';
189
+ import type { EventOn } from 'vona-module-a-event';
190
+ declare module 'vona-module-a-event' {
191
+ export interface IEventRecord {
192
+ 'a-orm:clientNameReal': EventOn<TypeEventClientNameRealData, TypeEventClientNameRealResult>;
193
+ 'a-orm:columnsClear': EventOn<TypeEventColumnsClearData, TypeEventColumnsClearResult>;
194
+ }
195
+ }
196
+ /** event: end */
197
+ /** queue: begin */
198
+ export * from '../bean/queue.doubleDelete.ts';
199
+
200
+ import { type IDecoratorQueueOptions } from 'vona-module-a-queue';
201
+ declare module 'vona-module-a-queue' {
202
+
203
+ export interface IQueueRecord {
204
+ 'a-orm:doubleDelete': IDecoratorQueueOptions;
205
+ }
206
+
207
+
208
+ }
209
+ declare module 'vona-module-a-orm' {
210
+
211
+ export interface QueueDoubleDelete {
212
+ /** @internal */
213
+ get scope(): ScopeModuleAOrm;
214
+ }
215
+
216
+ export interface QueueDoubleDelete {
217
+ get $beanFullName(): 'a-orm.queue.doubleDelete';
218
+ get $onionName(): 'a-orm:doubleDelete';
219
+ get $onionOptions(): IDecoratorQueueOptions;
220
+ }
221
+ }
222
+ /** queue: end */
223
+ /** queue: begin */
224
+ import type { QueueDoubleDelete } from '../bean/queue.doubleDelete.ts';
225
+ export interface IModuleQueue {
226
+ 'doubleDelete': QueueDoubleDelete;
227
+ }
228
+ /** queue: end */
229
+ /** schedule: begin */
230
+ export * from '../bean/schedule.softDeletionPrune.ts';
231
+
232
+ import { type IDecoratorScheduleOptions } from 'vona-module-a-schedule';
233
+ declare module 'vona-module-a-schedule' {
234
+
235
+ export interface IScheduleRecord {
236
+ 'a-orm:softDeletionPrune': IDecoratorScheduleOptions;
237
+ }
238
+
239
+
240
+ }
241
+ declare module 'vona-module-a-orm' {
242
+
243
+ export interface ScheduleSoftDeletionPrune {
244
+ /** @internal */
245
+ get scope(): ScopeModuleAOrm;
246
+ }
247
+
248
+ export interface ScheduleSoftDeletionPrune {
249
+ get $beanFullName(): 'a-orm.schedule.softDeletionPrune';
250
+ get $onionName(): 'a-orm:softDeletionPrune';
251
+ get $onionOptions(): IDecoratorScheduleOptions;
252
+ }
253
+ }
254
+ /** schedule: end */
255
+ /** hmr: begin */
256
+ export * from '../bean/hmr.entity.ts';
257
+ export * from '../bean/hmr.model.ts';
258
+
259
+ import 'vona';
260
+ declare module 'vona' {
261
+
262
+ export interface IHmrRecord {
263
+ 'a-orm:entity': never;
264
+ 'a-orm:model': never;
265
+ }
266
+
267
+
268
+ }
269
+ declare module 'vona-module-a-orm' {
270
+
271
+ export interface HmrEntity {
272
+ /** @internal */
273
+ get scope(): ScopeModuleAOrm;
274
+ }
275
+
276
+ export interface HmrEntity {
277
+ get $beanFullName(): 'a-orm.hmr.entity';
278
+ get $onionName(): 'a-orm:entity';
279
+
280
+ }
281
+
282
+ export interface HmrModel {
283
+ /** @internal */
284
+ get scope(): ScopeModuleAOrm;
285
+ }
286
+
287
+ export interface HmrModel {
288
+ get $beanFullName(): 'a-orm.hmr.model';
289
+ get $onionName(): 'a-orm:model';
290
+
291
+ }
292
+ }
293
+ /** hmr: end */
294
+ /** config: begin */
295
+ export * from '../config/config.ts';
296
+ import type { config } from '../config/config.ts';
297
+ /** config: end */
298
+ /** locale: begin */
299
+ import { locales } from './locales.ts';
300
+ /** locale: end */
301
+ /** error: begin */
302
+ export * from '../config/errors.ts';
303
+ import type { errors } from '../config/errors.ts';
304
+ /** error: end */
305
+ /** main: begin */
306
+ export * from '../main.ts';
307
+ /** main: end */
308
+ /** scope: begin */
309
+ import { BeanScopeBase, type BeanScopeUtil, type TypeModuleConfig, type TypeModuleErrors, type TypeModuleLocales, type TypeLocaleBase } from 'vona';
310
+ import { Scope } from 'vona-module-a-bean';
311
+
312
+ @Scope()
313
+ export class ScopeModuleAOrm extends BeanScopeBase {}
314
+
315
+ export interface ScopeModuleAOrm {
316
+ util: BeanScopeUtil;
317
+ config: TypeModuleConfig<typeof config>;
318
+ error: TypeModuleErrors<typeof errors>;
319
+ locale: TypeModuleLocales<(typeof locales)[TypeLocaleBase]>;
320
+ service: IModuleService;
321
+ broadcast: IModuleBroadcast;
322
+ event: IModuleEvent;
323
+ queue: IModuleQueue;
324
+ }
325
+
326
+ import 'vona';
327
+ declare module 'vona' {
328
+ export interface IBeanScopeRecord {
329
+ 'a-orm': ScopeModuleAOrm;
330
+ }
331
+
332
+ export interface IBeanScopeContainer {
333
+ orm: ScopeModuleAOrm;
334
+ }
335
+
336
+ export interface IBeanScopeConfig {
337
+ 'a-orm': ReturnType<typeof config>;
338
+ }
339
+
340
+ export interface IBeanScopeLocale {
341
+ 'a-orm': (typeof locales)[TypeLocaleBase];
342
+ }
343
+
344
+ export interface IBeanScopeErrors {
345
+ 'a-orm': typeof errors;
346
+ }
347
+ }
348
+ /** scope: end */
@@ -0,0 +1,13 @@
1
+ import type { TypeLocaleBase } from 'vona';
2
+ import { $makeLocaleMagic } from 'vona';
3
+ import locale_en_us from '../config/locale/en-us.ts';
4
+ import locale_zh_cn from '../config/locale/zh-cn.ts';
5
+
6
+ export const locales = {
7
+ 'en-us': locale_en_us,
8
+ 'zh-cn': locale_zh_cn,
9
+ };
10
+
11
+ export function $locale<K extends keyof (typeof locales)[TypeLocaleBase]>(key: K, ...args: any[]): any {
12
+ return $makeLocaleMagic(`a-orm::${key}`, ...args);
13
+ }
@@ -0,0 +1,2 @@
1
+ export const __ThisModule__ = 'a-orm';
2
+ export { ScopeModuleAOrm as ScopeModule } from './index.ts';
@@ -0,0 +1,18 @@
1
+ import type { Next, NextSync } from 'vona';
2
+ import type { IAopMethodExecute, IDecoratorAopMethodOptions } from 'vona-module-a-aspect';
3
+
4
+ import { BeanAopMethodBase } from 'vona';
5
+ import { AopMethod } from 'vona-module-a-aspect';
6
+
7
+ import type { ITransactionOptions } from '../types/transaction.ts';
8
+
9
+ export interface IAopMethodOptionsTransaction extends IDecoratorAopMethodOptions, ITransactionOptions {}
10
+
11
+ @AopMethod<IAopMethodOptionsTransaction>()
12
+ export class AopMethodTransaction extends BeanAopMethodBase implements IAopMethodExecute {
13
+ execute(options: IAopMethodOptionsTransaction, _args: [], next: Next | NextSync, _receiver: any, _prop: string): Promise<any> | any {
14
+ return this.bean.database.current.transaction.begin(() => {
15
+ return next();
16
+ }, options);
17
+ }
18
+ }
@@ -0,0 +1,57 @@
1
+ import type { FunctionAsync } from 'vona';
2
+
3
+ import { BeanBase, beanFullNameFromOnionName } from 'vona';
4
+ import { Bean } from 'vona-module-a-bean';
5
+
6
+ import type { ConfigDatabaseClient } from '../types/config.ts';
7
+ import type { IDatabaseClientDialectRecord, IDatabaseClientRecord, IDbInfo } from '../types/database.ts';
8
+ import type { BeanDatabaseDialectBase } from './bean.databaseDialectBase.ts';
9
+
10
+ import { ServiceDatabaseAsyncLocalStorage } from '../service/databaseAsyncLocalStorage_.ts';
11
+ import { ServiceDatabaseClient } from '../service/databaseClient_.ts';
12
+ import { ServiceTransactionAsyncLocalStorage } from '../service/transactionAsyncLocalStorage_.ts';
13
+
14
+ @Bean()
15
+ export class BeanDatabase extends BeanBase {
16
+ get current() {
17
+ return this.bean._getBean(ServiceDatabaseAsyncLocalStorage).current;
18
+ }
19
+
20
+ getClient(dbInfoOrClientName?: Partial<IDbInfo> | keyof IDatabaseClientRecord, clientConfig?: ConfigDatabaseClient) {
21
+ const dbInfo = this.scope.service.database.prepareDbInfo(dbInfoOrClientName);
22
+ const clientConfigReal = this.scope.service.database.getClientConfig(dbInfo.clientName, clientConfig);
23
+ const selector = this.scope.service.database.prepareClientNameSelector(dbInfo, clientConfigReal.client);
24
+ return this.app.bean._getBeanSelector(ServiceDatabaseClient, selector, clientConfigReal);
25
+ }
26
+
27
+ getDb(dbInfoOrClientName?: Partial<IDbInfo> | keyof IDatabaseClientRecord, clientConfig?: ConfigDatabaseClient) {
28
+ return this.getClient(dbInfoOrClientName, clientConfig).db;
29
+ }
30
+
31
+ getDialect(client: keyof IDatabaseClientDialectRecord): BeanDatabaseDialectBase {
32
+ if (!client) throw new Error('database dialect not specified');
33
+ const beanFullName = beanFullNameFromOnionName(this.scope.config.dialects[client], 'databaseDialect');
34
+ const dialect = this.app.bean._getBean(beanFullName) as BeanDatabaseDialectBase;
35
+ if (!dialect) throw new Error(`database dialect not found: ${client}`);
36
+ return dialect;
37
+ }
38
+
39
+ async switchDbIsolate<RESULT>(fn: FunctionAsync<RESULT>, dbInfoOrClientName?: Partial<IDbInfo> | keyof IDatabaseClientRecord): Promise<RESULT> {
40
+ const dbInfo = this.scope.service.database.prepareDbInfo(dbInfoOrClientName);
41
+ // const level = this.app.config.database.defaultClient === 'sqlite3' ? dbInfo.level : dbInfo.level + 1;
42
+ const level = dbInfo.level + 1;
43
+ return this.switchDb(fn, { level, clientName: dbInfo.clientName });
44
+ }
45
+
46
+ async switchDb<RESULT>(fn: FunctionAsync<RESULT>, dbInfoOrClientName?: Partial<IDbInfo> | keyof IDatabaseClientRecord): Promise<RESULT> {
47
+ const current = this.bean.database.current;
48
+ const dbInfo = this.scope.service.database.prepareDbInfo(dbInfoOrClientName);
49
+ if (dbInfo.level === current?.level && dbInfo.clientName === current?.clientName) {
50
+ return fn();
51
+ }
52
+ const db = this.getDb(dbInfo);
53
+ return this.bean._getBean(ServiceDatabaseAsyncLocalStorage).run(db, () => {
54
+ return this.bean._getBean(ServiceTransactionAsyncLocalStorage).run(fn);
55
+ });
56
+ }
57
+ }
@@ -0,0 +1,149 @@
1
+ import type { Knex } from 'knex';
2
+ import type { TableIdentity } from 'table-identity';
3
+
4
+ import { isNil, safeBoolean } from '@cabloy/utils';
5
+ import { BeanBase, Virtual } from 'vona';
6
+ import { Bean } from 'vona-module-a-bean';
7
+
8
+ import type { ITableColumn } from '../types/columns.ts';
9
+ import type { ConfigDatabaseClient } from '../types/config.ts';
10
+ import type {
11
+ IDatabaseDialectCapabilities,
12
+ IFetchDatabasesResultItem,
13
+ IFetchIndexesResultItem,
14
+ TypeDatabaseDialectTableColumnsFn,
15
+ } from '../types/dialect.ts';
16
+
17
+ @Bean()
18
+ @Virtual()
19
+ export class BeanDatabaseDialectBase extends BeanBase {
20
+ protected _capabilities?: IDatabaseDialectCapabilities;
21
+ protected _configBase?: Partial<ConfigDatabaseClient>;
22
+
23
+ get capabilities() {
24
+ if (!this._capabilities) throw new Error('Should provide dialect capabilities');
25
+ return this._capabilities;
26
+ }
27
+
28
+ get configBase() {
29
+ return this._configBase;
30
+ }
31
+
32
+ async fetchDatabases(_schemaBuilder: Knex.SchemaBuilder, _databasePrefix: string): Promise<IFetchDatabasesResultItem[]> {
33
+ throw new Error('Not Implemented');
34
+ }
35
+
36
+ async createDatabase(_schemaBuilder: Knex.SchemaBuilder, _databaseName: string): Promise<string> {
37
+ throw new Error('Not Implemented');
38
+ }
39
+
40
+ async dropDatabase(_schemaBuilder: Knex.SchemaBuilder, _databaseName: string): Promise<void> {
41
+ throw new Error('Not Implemented');
42
+ }
43
+
44
+ async fetchIndexes(_schemaBuilder: Knex.SchemaBuilder, _tableName: string): Promise<IFetchIndexesResultItem[]> {
45
+ throw new Error('Not Implemented');
46
+ }
47
+
48
+ async insert(_builder: Knex.QueryBuilder, _datas: any[]): Promise<TableIdentity[]> {
49
+ throw new Error('Not Implemented');
50
+ }
51
+
52
+ async select(_builder: Knex.QueryBuilder, datas: any[], _fn: TypeDatabaseDialectTableColumnsFn): Promise<any[]> {
53
+ return datas;
54
+ }
55
+
56
+ query(_result) {
57
+ throw new Error('Not Implemented');
58
+ }
59
+
60
+ async viewDependents(_builder: Knex.QueryBuilder, _viewName: string): Promise<string[]> {
61
+ throw new Error('Not Implemented');
62
+ }
63
+
64
+ coerceColumn(column: Knex.ColumnInfo): ITableColumn {
65
+ // result
66
+ const result = { type: column.type } as ITableColumn;
67
+ // coerce
68
+ result.default = this._coerceColumnValue(column.type, column.defaultValue);
69
+ // ok
70
+ return result;
71
+ }
72
+
73
+ protected async selectAsSqlite3(_builder: Knex.QueryBuilder, datas: any[], fn: TypeDatabaseDialectTableColumnsFn): Promise<any[]> {
74
+ const columns = await fn();
75
+ // data
76
+ for (const data of datas) {
77
+ for (const columnName in columns) {
78
+ const column = columns[columnName];
79
+ if (Object.prototype.hasOwnProperty.call(data, columnName)) {
80
+ const value = data[columnName];
81
+ if (column.type === 'json' && !isNil(value) && typeof value === 'string') {
82
+ data[columnName] = JSON.parse(value);
83
+ } else if (column.type === 'datetime' && !isNil(value)) {
84
+ data[columnName] = new Date(value);
85
+ }
86
+ }
87
+ }
88
+ }
89
+ return datas;
90
+ }
91
+
92
+ protected async insertAsMysql(builder: Knex.QueryBuilder, datas: any[]): Promise<TableIdentity[]> {
93
+ if (datas.length === 0) return [];
94
+ if (isNil(datas[0].id)) {
95
+ const ids: TableIdentity[] = [];
96
+ for (const data of datas) {
97
+ const builder2 = builder.clone();
98
+ builder2.insert(data);
99
+ const items = await builder2;
100
+ ids.push(items[0]);
101
+ }
102
+ return ids;
103
+ } else {
104
+ builder.insert(datas);
105
+ await builder;
106
+ return datas.map(item => item.id);
107
+ }
108
+ }
109
+
110
+ protected async insertAsPg(builder: Knex.QueryBuilder, datas: any[]): Promise<TableIdentity[]> {
111
+ if (datas.length === 0) return [];
112
+ if (isNil(datas[0].id)) {
113
+ builder.insert(datas).returning('id');
114
+ const items = await builder;
115
+ return items.map(item => item.id);
116
+ } else {
117
+ builder.insert(datas);
118
+ await builder;
119
+ return datas.map(item => item.id);
120
+ }
121
+ }
122
+
123
+ protected _coerceColumnValue(type: string, value) {
124
+ // null
125
+ if (isNil(value)) return undefined;
126
+ // type
127
+ if (['bit', 'bool', 'boolean'].includes(type)) return safeBoolean(value);
128
+ if (['int'].includes(type)) return this._safeNumber(value);
129
+ if (this._columnTypePrefixes(type, ['timestamp']) && value === 'CURRENT_TIMESTAMP') return undefined; // new Date();
130
+ if (this._columnTypePrefixes(type, ['float', 'double'])) return this._safeNumber(value);
131
+ if (this._columnTypePrefixes(type, ['tinyint', 'smallint', 'mediumint', 'bigint', 'numeric', 'integer'])) {
132
+ return this._safeNumber(value);
133
+ }
134
+ // pg: NULL::character varying
135
+ if (value.indexOf('NULL::') === 0) return undefined;
136
+ // others
137
+ return value;
138
+ }
139
+
140
+ // pg: nextval
141
+ protected _safeNumber(value) {
142
+ const num = Number(value);
143
+ return Number.isNaN(num) ? undefined : num;
144
+ }
145
+
146
+ protected _columnTypePrefixes(type: string, prefixes: string[]) {
147
+ return prefixes.some(prefix => type.includes(prefix));
148
+ }
149
+ }