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,238 @@
1
+ import type { Knex } from 'knex';
2
+
3
+ import { isNil } from '@cabloy/utils';
4
+ import { cast } from 'vona';
5
+
6
+ import type { ServiceDb } from '../service/db_.ts';
7
+ import type { TypeModelColumnValue, TypeModelWhere, TypeModelWhereFieldAll, TypeOpsJoint, TypeOpsNormal } from '../types/modelWhere.ts';
8
+
9
+ import { Op, OpAggrs, OpJointValues, OpNormalValues } from '../types/modelWhere.ts';
10
+ import { isRaw, isRef } from './utils.ts';
11
+
12
+ export function buildWhere<TRecord>(db: ServiceDb, builder: Knex.QueryBuilder, wheres: TypeModelWhere<TRecord>, having: boolean = false) {
13
+ _buildWhereInner(having, db, builder, wheres);
14
+ }
15
+
16
+ function _buildWhereInner<TRecord>(
17
+ having: boolean,
18
+ db: ServiceDb,
19
+ builder: Knex.QueryBuilder,
20
+ wheres: TypeModelWhere<TRecord>,
21
+ column?: keyof TRecord,
22
+ ) {
23
+ // skip
24
+ if (wheres === Op.skip) {
25
+ return;
26
+ }
27
+ // raw
28
+ if (isRaw(wheres)) {
29
+ builder[having ? 'havingRaw' : 'whereRaw'](wheres as Knex.Raw);
30
+ return;
31
+ }
32
+ // loop
33
+ for (const key in wheres) {
34
+ const value = wheres[key];
35
+ if (key[0] !== '_') {
36
+ // columns
37
+ _buildWhereColumn(having, db, builder, key, value);
38
+ } else if (OpNormalValues.includes(key as any)) {
39
+ // op: normal
40
+ if (column) {
41
+ _buildWhereColumn(having, db, builder, column, value, key as any);
42
+ } else {
43
+ // not go here
44
+ }
45
+ } else {
46
+ const op = _checkOpJoint(key as any);
47
+ if (op) {
48
+ // op: joint
49
+ _buildWhereOpJoint(having, db, builder, column, value, op);
50
+ } else {
51
+ // ignored, not throw error
52
+ }
53
+ }
54
+ }
55
+ }
56
+
57
+ function _buildWhereOpJoint<TRecord>(
58
+ having: boolean,
59
+ db: ServiceDb,
60
+ builder: Knex.QueryBuilder,
61
+ column: keyof TRecord | undefined,
62
+ wheres: TypeModelWhere<TRecord>,
63
+ op: TypeOpsJoint,
64
+ ) {
65
+ // skip
66
+ if (wheres === Op.skip) {
67
+ return;
68
+ }
69
+ // and/or
70
+ if (op === Op.and) {
71
+ builder[having ? 'having' : 'where'](builder => {
72
+ for (const key in wheres) {
73
+ builder.andWhere(builder => {
74
+ _buildWhereInner(false, db, builder, { [key]: wheres[key] } as any, column);
75
+ });
76
+ }
77
+ });
78
+ return;
79
+ }
80
+ // or
81
+ if (op === Op.or) {
82
+ builder[having ? 'having' : 'where'](builder => {
83
+ for (const key in wheres) {
84
+ builder.orWhere(builder => {
85
+ _buildWhereInner(false, db, builder, { [key]: wheres[key] } as any, column);
86
+ });
87
+ }
88
+ });
89
+ return;
90
+ }
91
+ // not
92
+ if (op === Op.not) {
93
+ builder[having ? 'havingNot' : 'whereNot'](builder => {
94
+ _buildWhereInner(false, db, builder, wheres, column);
95
+ });
96
+ return;
97
+ }
98
+ // exists
99
+ if (op === Op.exists) {
100
+ builder[having ? 'havingExists' : 'whereExists'](wheres as any);
101
+ return;
102
+ }
103
+ // notexists
104
+ if (op === Op.notExists) {
105
+ builder[having ? 'havingNotExists' : 'whereNotExists'](wheres as any);
106
+ }
107
+ }
108
+
109
+ function _buildWhereColumn<TRecord>(
110
+ having: boolean,
111
+ db: ServiceDb,
112
+ builder: Knex.QueryBuilder,
113
+ column: keyof TRecord,
114
+ value: TypeModelColumnValue<TRecord, TRecord[keyof TRecord]> | TypeModelWhereFieldAll<TRecord, TRecord[keyof TRecord]>,
115
+ op?: TypeOpsNormal,
116
+ ) {
117
+ // skip
118
+ if (value === Op.skip) {
119
+ return;
120
+ }
121
+ // raw
122
+ if (isRaw(value) || isRef(value)) {
123
+ _buildWhereColumnOpNormal(having, db, builder, column, value, op ?? Op.eq);
124
+ return;
125
+ }
126
+ // null/undefined
127
+ if (isNil(value)) {
128
+ _buildWhereColumnOpNormal(having, db, builder, column, value, op ?? Op.is);
129
+ return;
130
+ }
131
+ // array
132
+ if (Array.isArray(value)) {
133
+ _buildWhereColumnOpNormal(having, db, builder, column, value, op ?? Op.in);
134
+ return;
135
+ }
136
+ // date
137
+ if (value instanceof Date) {
138
+ _buildWhereColumnOpNormal(having, db, builder, column, value, op ?? Op.eq);
139
+ return;
140
+ }
141
+ // object
142
+ if (typeof value === 'object') {
143
+ builder[having ? 'having' : 'where'](builder => {
144
+ _buildWhereInner(false, db, builder, value as any, column);
145
+ });
146
+ return;
147
+ }
148
+ // column
149
+ _buildWhereColumnOpNormal(having, db, builder, column, value, op ?? Op.eq);
150
+ }
151
+
152
+ function _buildWhereColumnOpNormal<TRecord>(
153
+ having: boolean,
154
+ db: ServiceDb,
155
+ builder: Knex.QueryBuilder,
156
+ column: keyof TRecord | string,
157
+ value: any,
158
+ op: TypeOpsNormal,
159
+ ) {
160
+ column = _checkHavingColumn(db, column) as string;
161
+ if (op === Op.eq) {
162
+ builder[having ? 'having' : 'where'](column, '=', value);
163
+ } else if (op === Op.notEq) {
164
+ builder[having ? 'having' : 'where'](column, '<>', value);
165
+ } else if (op === Op.eqI) {
166
+ builder[_getOpILikeReal(having, db)](column, value);
167
+ } else if (op === Op.notEqI) {
168
+ builder[having ? 'havingNot' : 'whereNot']((builder: Knex.QueryBuilder) => {
169
+ builder[_getOpILikeReal(having, db)](column, value);
170
+ });
171
+ } else if (op === Op.gt) {
172
+ builder[having ? 'having' : 'where'](column, '>', value);
173
+ } else if (op === Op.gte) {
174
+ builder[having ? 'having' : 'where'](column, '>=', value);
175
+ } else if (op === Op.lt) {
176
+ builder[having ? 'having' : 'where'](column, '<', value);
177
+ } else if (op === Op.lte) {
178
+ builder[having ? 'having' : 'where'](column, '<=', value);
179
+ } else if (op === Op.in) {
180
+ builder[having ? 'havingIn' : 'whereIn'](column, value);
181
+ } else if (op === Op.notIn) {
182
+ builder[having ? 'havingNotIn' : 'whereNotIn'](column, value);
183
+ } else if (op === Op.is) {
184
+ builder[having ? 'havingNull' : 'whereNull'](column);
185
+ } else if (op === Op.isNot) {
186
+ builder[having ? 'havingNotNull' : 'whereNotNull'](column);
187
+ } else if (op === Op.between) {
188
+ builder[having ? 'havingBetween' : 'whereBetween'](column, value);
189
+ } else if (op === Op.notBetween) {
190
+ builder[having ? 'havingNotBetween' : 'whereNotBetween'](column, value);
191
+ } else if (op === Op.startsWith) {
192
+ builder[_getOpLikeReal(having, db)](column, `${value}%` as any);
193
+ } else if (op === Op.endsWith) {
194
+ builder[_getOpLikeReal(having, db)](column, `%${value}` as any);
195
+ } else if (op === Op.includes) {
196
+ builder[_getOpLikeReal(having, db)](column, `%${value}%` as any);
197
+ } else if (op === Op.startsWithI) {
198
+ builder[_getOpILikeReal(having, db)](column, `${value}%` as any);
199
+ } else if (op === Op.endsWithI) {
200
+ builder[_getOpILikeReal(having, db)](column, `%${value}` as any);
201
+ } else if (op === Op.includesI) {
202
+ builder[_getOpILikeReal(having, db)](column, `%${value}%` as any);
203
+ } else if (op === Op.ref) {
204
+ builder[having ? 'having' : 'where'](column, '=', db.connection.ref(value));
205
+ }
206
+ }
207
+
208
+ function _getOpLikeReal(having: boolean, db: ServiceDb) {
209
+ return db.dialect.capabilities.like ? (having ? 'havingLike' : 'whereLike') : having ? 'havingILike' : 'whereILike';
210
+ }
211
+
212
+ function _getOpILikeReal(having: boolean, db: ServiceDb) {
213
+ return db.dialect.capabilities.ilike ? (having ? 'havingILike' : 'whereILike') : having ? 'havingLike' : 'whereLike';
214
+ }
215
+
216
+ function _checkHavingColumn<TRecord>(db: ServiceDb, column: keyof TRecord | string) {
217
+ let [aggr, name] = cast<string>(column).split('_');
218
+ if (!OpAggrs.includes(aggr) || !name) return column;
219
+ if (aggr === 'count' && name === 'all') name = '*';
220
+ return db.connection.raw(`${_safeOp(aggr)}(${_safeColumn(name)})`);
221
+ }
222
+
223
+ function _checkOpJoint(op: TypeOpsJoint) {
224
+ for (const item of OpJointValues) {
225
+ if (op.startsWith(item)) {
226
+ return item;
227
+ }
228
+ }
229
+ return undefined;
230
+ }
231
+
232
+ function _safeOp(op) {
233
+ return op.replace(/[\\.*#%'"`;,() ]/g, '');
234
+ }
235
+
236
+ function _safeColumn(column) {
237
+ return column.replace(/[\\.#%'"`;,() ]/g, '');
238
+ }
@@ -0,0 +1,128 @@
1
+ // export function checkWhere(where) {
2
+ // if (where === true || where === false) return where;
3
+ // if (where === undefined || where === null) {
4
+ // return true;
5
+ // }
6
+ // return where;
7
+ // }
8
+
9
+ // import { formatValueArray, isRaw } from './utils.ts';
10
+
11
+ // const __wherePlaceholderOr = '__or__';
12
+ // const __wherePlaceholderAnd = '__and__';
13
+ // const __wherePlaceholderExists = '__exists__';
14
+ // const __wherePlaceholderNotExists = '__notExists__';
15
+
16
+ // export function checkWhere(where) {
17
+ // if (where === true || where === false) return where;
18
+ // if (where === undefined || where === null) {
19
+ // return true;
20
+ // }
21
+ // if (isRaw(where)) {
22
+ // return where;
23
+ // }
24
+ // // loop
25
+ // const wheres: Array<[key: string, value: any]> = [];
26
+ // for (const key in where) {
27
+ // const value = where[key];
28
+ // // raw
29
+ // if (isRaw(value)) {
30
+ // wheres.push([key, value]);
31
+ // continue;
32
+ // }
33
+ // // check key: exists
34
+ // if (key.includes(__wherePlaceholderExists)) {
35
+ // wheres.push(['EXISTS', value]);
36
+ // continue;
37
+ // }
38
+ // // check key: not exists
39
+ // if (key.includes(__wherePlaceholderNotExists)) {
40
+ // wheres.push(['NOTEXISTS', value]);
41
+ // continue;
42
+ // }
43
+ // // check key: or/and
44
+ // let keyOrAnd;
45
+ // if (key.includes(__wherePlaceholderOr)) {
46
+ // keyOrAnd = 'OR';
47
+ // } else if (key.includes(__wherePlaceholderAnd)) {
48
+ // keyOrAnd = 'AND';
49
+ // }
50
+ // if (keyOrAnd) {
51
+ // const _where = _formatOrAnd(value, keyOrAnd);
52
+ // if (_where === true) {
53
+ // // ignore
54
+ // } else if (_where === false) {
55
+ // // deny
56
+ // return false;
57
+ // } else {
58
+ // wheres.push([keyOrAnd, _where]);
59
+ // }
60
+ // continue;
61
+ // }
62
+ // // check array
63
+ // if (Array.isArray(value) && value.length === 0) {
64
+ // return false;
65
+ // }
66
+ // // check object
67
+ // if (value && !(value instanceof Date) && typeof value === 'object') {
68
+ // // check array
69
+ // if (['in', 'notIn'].includes(value.op)) {
70
+ // const arr = formatValueArray(value);
71
+ // if (value.op === 'in' && arr === null) return false;
72
+ // if (value.op === 'notIn' && arr === null) continue;
73
+ // wheres.push([key, { op: value.op, val: arr }]);
74
+ // continue;
75
+ // }
76
+ // }
77
+ // // otherwise
78
+ // wheres.push([key, value]);
79
+ // }
80
+ // if (wheres.length === 0) return true;
81
+ // return wheres;
82
+ // }
83
+
84
+ // function _formatOrAnd(ors, orAnd) {
85
+ // // or
86
+ // if (orAnd === 'OR') {
87
+ // return _formatOrAnd_or(ors);
88
+ // }
89
+ // // and
90
+ // return _formatOrAnd_and(ors);
91
+ // }
92
+
93
+ // function _formatOrAnd_or(ors) {
94
+ // if (ors === undefined || ors === null) return false;
95
+ // if (!Array.isArray(ors)) ors = [ors];
96
+ // const wheres: Array<any> = [];
97
+ // for (const or of ors) {
98
+ // const _where = checkWhere(or);
99
+ // if (_where === false) {
100
+ // // ignore
101
+ // } else if (_where === true) {
102
+ // return true;
103
+ // } else {
104
+ // wheres.push(_where);
105
+ // }
106
+ // }
107
+ // if (wheres.length === 0) return false;
108
+ // return wheres;
109
+ // }
110
+
111
+ // function _formatOrAnd_and(ors) {
112
+ // if (ors === undefined || ors === null) return true;
113
+ // if (!Array.isArray(ors)) ors = [ors];
114
+ // const wheres: Array<any> = [];
115
+ // for (const or of ors) {
116
+ // const _where = checkWhere(or);
117
+ // if (_where === true) {
118
+ // // ignore
119
+ // } else if (_where === false) {
120
+ // // deny
121
+ // return false;
122
+ // } else {
123
+ // wheres.push(_where);
124
+ // }
125
+ // }
126
+ // if (wheres.length === 0) return true;
127
+ // return wheres;
128
+ // }
@@ -0,0 +1,3 @@
1
+ export * from './buildWhere.ts';
2
+ export * from './checkWhere.ts';
3
+ export * from './utils.ts';
@@ -0,0 +1,74 @@
1
+ import type { Constructable } from 'vona';
2
+
3
+ import { appResource, beanFullNameFromOnionName } from 'vona';
4
+ import { prepareClassType } from 'vona-module-a-openapiutils';
5
+
6
+ import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
7
+ import type { TypeModelColumn, TypeModelColumns } from '../types/modelWhere.ts';
8
+ import type { IDecoratorModelOptions, IModelClassRecord } from '../types/onion/model.ts';
9
+
10
+ export function isRaw(raw) {
11
+ return typeof raw?.constructor === 'function' && raw?.constructor?.name === 'Raw';
12
+ }
13
+
14
+ export function isRef(ref) {
15
+ return typeof ref?.constructor === 'function' && ref?.constructor?.name === 'Ref';
16
+ }
17
+
18
+ export function getTableOrTableAlias(table: string) {
19
+ const _table = table.toString();
20
+ return _table.includes(' as ') ? _table.split(' as ')[1].trim() : _table;
21
+ }
22
+
23
+ export function getTargetColumnName(column: string) {
24
+ if (column.includes(' as ')) return column.split(' as ')[1].trim();
25
+ if (column.includes('.')) return column.split('.')[1].trim();
26
+ return column;
27
+ }
28
+
29
+ export function prepareColumns<TRecord>(columns?: TypeModelColumns<TRecord>): Array<TypeModelColumn<TRecord>> | undefined {
30
+ if (!columns) return undefined;
31
+ columns = Array.isArray(columns) ? columns : [columns];
32
+ if (columns.includes('*')) return undefined;
33
+ return columns;
34
+ }
35
+
36
+ export function prepareClassModel<ModelLike extends BeanModelMeta | keyof IModelClassRecord>(
37
+ classType: ModelLike extends BeanModelMeta ? (() => Constructable<ModelLike>) | Constructable<ModelLike> : ModelLike,
38
+ ): Constructable<ModelLike> {
39
+ if (typeof classType === 'string') {
40
+ const beanOptions = appResource.getBean(beanFullNameFromOnionName(classType, 'model'));
41
+ return beanOptions!.beanClass as any;
42
+ }
43
+ return prepareClassType(classType) as any;
44
+ }
45
+
46
+ export function getClassEntityFromClassModel<T>(modelClass: Constructable<T>) {
47
+ const beanOptions = appResource.getBean(modelClass);
48
+ const options: IDecoratorModelOptions = beanOptions!.options!;
49
+ return options.entity!;
50
+ }
51
+
52
+ // export function formatValue(value) {
53
+ // if (typeof value !== 'object' || value instanceof Date) return value;
54
+ // // date
55
+ // if (value.type === 'Date') return moment(value.val).toDate();
56
+ // // like
57
+ // if (value.op === 'like') return `%${value.val}%`;
58
+ // if (value.op === 'likeLeft') return `%${value.val}`;
59
+ // if (value.op === 'likeRight') return `${value.val}%`;
60
+ // if (value.op === 'likeStrict') return `${value.val}`;
61
+ // // in
62
+ // if (['in', 'notIn'].includes(value.op)) {
63
+ // return formatValueArray(value);
64
+ // }
65
+ // // others
66
+ // return value.val;
67
+ // }
68
+
69
+ // export function formatValueArray(value) {
70
+ // if (!value.val) return null;
71
+ // const arr = typeof value.val === 'string' ? value.val.split(',') : value.val;
72
+ // if (arr.length === 0) return null;
73
+ // return arr;
74
+ // }
@@ -0,0 +1,60 @@
1
+ import type { TableIdentityType } from 'table-identity';
2
+ import type { VonaApplication } from 'vona';
3
+ import type { IOnionOptionsMeta } from 'vona-module-a-onion';
4
+ import type { TSummerCachePreset } from 'vona-module-a-summer';
5
+
6
+ import { configAll, configRedis } from 'vona-module-a-summer';
7
+
8
+ import type { IDataBaseConfigDialects } from '../types/config.ts';
9
+
10
+ export function config(_app: VonaApplication) {
11
+ return {
12
+ sharding: {
13
+ cache: {
14
+ doubleDelete: true,
15
+ },
16
+ },
17
+ rest: {
18
+ query: {
19
+ pageSize: {
20
+ default: 20,
21
+ max: 100,
22
+ },
23
+ orders: {
24
+ default: 'createdAt,desc',
25
+ },
26
+ },
27
+ },
28
+ table: {
29
+ identityType: 'bigint' as TableIdentityType,
30
+ },
31
+ model: {
32
+ disableDeleted: false,
33
+ disableInstance: false,
34
+ disableCreateTime: false,
35
+ disableUpdateTime: false,
36
+ },
37
+ softDeletionPrune: {
38
+ enable: true,
39
+ expired: 14 * 24 * 3600 * 1000,
40
+ },
41
+ dialects: {
42
+ 'better-sqlite3': 'a-ormdialect:betterSqlite3',
43
+ 'mysql': 'a-ormdialect:mysql',
44
+ 'mysql2': 'a-ormdialect:mysql3',
45
+ 'pg': 'a-ormdialect:pg',
46
+ } as IDataBaseConfigDialects,
47
+ summer: {
48
+ enable: true,
49
+ meta: {} as IOnionOptionsMeta,
50
+ presetDefault: 'redis' as TSummerCachePreset,
51
+ preset: {
52
+ redis: configRedis,
53
+ all: configAll,
54
+ },
55
+ redis: {
56
+ client: 'model',
57
+ },
58
+ },
59
+ };
60
+ }
@@ -0,0 +1,3 @@
1
+ export const errors = {
2
+ ShouldSpecifyTable: 1001,
3
+ } as const;
@@ -0,0 +1,8 @@
1
+ export default {
2
+ TableIdentity: 'ID',
3
+ CreatedAt: 'Created At',
4
+ UpdatedAt: 'Updated At',
5
+ Deleted: 'Deleted',
6
+ InstanceId: 'Instance ID',
7
+ ShouldSpecifyTable: 'should specify the table name',
8
+ };
@@ -0,0 +1,8 @@
1
+ export default {
2
+ TableIdentity: '标识',
3
+ CreatedAt: '创建时间',
4
+ UpdatedAt: '修改时间',
5
+ Deleted: '已删除',
6
+ InstanceId: '实例标识',
7
+ ShouldSpecifyTable: '应该指定表名',
8
+ };
@@ -0,0 +1,12 @@
1
+ import type { VonaApplication } from 'vona';
2
+
3
+ import { ExtendSchemaBuilder } from './schemaBuilder.ts';
4
+ import { ExtendTableBuilder } from './tableBuilder.ts';
5
+
6
+ export * from './schemaBuilder.ts';
7
+ export * from './tableBuilder.ts';
8
+
9
+ export function ExtendKnex(app: VonaApplication) {
10
+ ExtendSchemaBuilder(app);
11
+ ExtendTableBuilder(app);
12
+ }
@@ -0,0 +1,29 @@
1
+ import type { Knex } from 'knex';
2
+ import type { VonaApplication } from 'vona';
3
+
4
+ import knex from 'knex';
5
+ import { cast } from 'vona';
6
+
7
+ import type { IDatabaseClientDialectRecord } from '../types/database.ts';
8
+ import type { IFetchDatabasesResultItem, IFetchIndexesResultItem } from '../types/dialect.ts';
9
+
10
+ export function ExtendSchemaBuilder(app: VonaApplication) {
11
+ ['fetchDatabases', 'createDatabase', 'dropDatabase', 'fetchIndexes'].forEach(method => {
12
+ knex.SchemaBuilder.extend(method, async function (...args) {
13
+ const client = cast<Knex.Client>(cast(this).client).config.client as keyof IDatabaseClientDialectRecord;
14
+ const dialect = app.bean.database.getDialect(client);
15
+ return await dialect[method](this, ...args);
16
+ });
17
+ });
18
+ }
19
+
20
+ declare module 'knex' {
21
+ namespace Knex {
22
+ interface SchemaBuilder {
23
+ fetchDatabases(databasePrefix: string): Promise<IFetchDatabasesResultItem[]>;
24
+ createDatabase(databaseName: string): Promise<string>;
25
+ dropDatabase(databaseName: string): Promise<void>;
26
+ fetchIndexes(tableName: string): Promise<IFetchIndexesResultItem[]>;
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,87 @@
1
+ import type { TableIdentityType } from 'table-identity';
2
+ import type { VonaApplication } from 'vona';
3
+
4
+ import knex from 'knex';
5
+
6
+ import { __ThisModule__ } from '../.metadata/this.ts';
7
+
8
+ export interface IBasicFieldsOptions {
9
+ id?: boolean;
10
+ timestamps?: boolean;
11
+ deleted?: boolean;
12
+ iid?: boolean;
13
+ }
14
+
15
+ export function ExtendTableBuilder(app: VonaApplication) {
16
+ const scope = app.scope(__ThisModule__);
17
+ function _basicFields(this: knex.Knex.TableBuilder, options?: IBasicFieldsOptions, identityType?: TableIdentityType) {
18
+ options = options || ({} as IBasicFieldsOptions);
19
+ if (options.id !== false) {
20
+ const _identityType = identityType ?? scope.config.table.identityType;
21
+ if (_identityType === 'bigint') {
22
+ this.bigIncrements();
23
+ } else if (_identityType === 'number') {
24
+ this.increments();
25
+ } else {
26
+ throw new Error('Should create column id by yourself');
27
+ }
28
+ }
29
+ if (options.timestamps !== false) this.timestamps(true, true, true);
30
+ if (options.deleted !== false) this.boolean('deleted').defaultTo(false);
31
+ if (options.iid !== false) this.integer('iid').defaultTo(0);
32
+ return this;
33
+ }
34
+
35
+ knex.TableBuilder.extend('basicFields', function (this: knex.Knex.TableBuilder, options?: IBasicFieldsOptions) {
36
+ _basicFields.call(this, options, undefined);
37
+ return this;
38
+ });
39
+ knex.TableBuilder.extend('basicFieldsSimple', function (this: knex.Knex.TableBuilder, options?: IBasicFieldsOptions) {
40
+ _basicFields.call(this, options, 'number');
41
+ return this;
42
+ });
43
+ knex.TableBuilder.extend('tableIdentity', function (this: knex.Knex.TableBuilder, columnName: string) {
44
+ const _identityType = scope.config.table.identityType;
45
+ if (_identityType === 'bigint') {
46
+ return this.bigInteger(columnName); // default value is null
47
+ } else if (_identityType === 'number') {
48
+ return this.integer(columnName); // default value is null
49
+ } else {
50
+ throw new Error(`Should create column ${columnName} by yourself`);
51
+ }
52
+ });
53
+ knex.TableBuilder.extend('userId', function (this: knex.Knex.TableBuilder, columnName?: string) {
54
+ return this.tableIdentity(columnName ?? 'userId');
55
+ });
56
+ knex.TableBuilder.extend('int0', function (this: knex.Knex.TableBuilder, columnName: string) {
57
+ return this.integer(columnName).defaultTo(0);
58
+ });
59
+ knex.TableBuilder.extend('int1', function (this: knex.Knex.TableBuilder, columnName: string) {
60
+ return this.integer(columnName).defaultTo(1);
61
+ });
62
+ ['description'].forEach(method => {
63
+ knex.TableBuilder.extend(method, function (this: knex.Knex.TableBuilder, length: number = 255) {
64
+ return this.string(method, length);
65
+ });
66
+ });
67
+ ['content'].forEach(method => {
68
+ knex.TableBuilder.extend(method, function (this: knex.Knex.TableBuilder, useText?: boolean) {
69
+ return useText ? this.text(method) : this.json(method);
70
+ });
71
+ });
72
+ }
73
+
74
+ declare module 'knex' {
75
+ namespace Knex {
76
+ interface TableBuilder {
77
+ basicFields(options?: IBasicFieldsOptions): Knex.TableBuilder;
78
+ basicFieldsSimple(options?: IBasicFieldsOptions): Knex.TableBuilder;
79
+ tableIdentity(columnName?: string): Knex.ColumnBuilder;
80
+ userId(columnName?: string): Knex.ColumnBuilder;
81
+ int0(columnName: string): Knex.ColumnBuilder;
82
+ int1(columnName: string): Knex.ColumnBuilder;
83
+ description(length?: number): Knex.ColumnBuilder;
84
+ content(useText?: boolean): Knex.ColumnBuilder;
85
+ }
86
+ }
87
+ }
package/src/index.ts ADDED
@@ -0,0 +1,10 @@
1
+ import 'bignumber.js';
2
+
3
+ export * from './.metadata/index.ts';
4
+
5
+ export * from './.metadata/locales.ts';
6
+ export * from './bean/bean.model/bean.model_meta.ts';
7
+ export * from './common/index.ts';
8
+ export * from './extend/index.ts';
9
+ export * from './lib/index.ts';
10
+ export * from './types/index.ts';