@uql/core 3.1.1 → 3.1.3

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 (599) hide show
  1. package/CHANGELOG.md +136 -185
  2. package/{dist/README.md → README.md} +22 -27
  3. package/dist/browser/cc-BEf4wTUm.js +535 -0
  4. package/dist/browser/cc-BEf4wTUm.js.map +1 -0
  5. package/dist/browser/http/bus.d.ts +1 -0
  6. package/dist/browser/http/bus.d.ts.map +1 -0
  7. package/dist/browser/http/bus.js +1 -1
  8. package/dist/browser/http/bus.js.map +1 -0
  9. package/dist/browser/http/http.d.ts +1 -0
  10. package/dist/browser/http/http.d.ts.map +1 -0
  11. package/dist/browser/http/http.js +1 -1
  12. package/dist/browser/http/http.js.map +1 -0
  13. package/dist/browser/http/index.d.ts +1 -0
  14. package/dist/browser/http/index.d.ts.map +1 -0
  15. package/dist/browser/http/index.js +1 -1
  16. package/dist/browser/http/index.js.map +1 -0
  17. package/dist/browser/index.d.ts +1 -0
  18. package/dist/browser/index.d.ts.map +1 -0
  19. package/dist/browser/index.js +1 -1
  20. package/dist/browser/index.js.map +1 -0
  21. package/dist/browser/options.d.ts +1 -0
  22. package/dist/browser/options.d.ts.map +1 -0
  23. package/dist/browser/options.js +1 -1
  24. package/dist/browser/options.js.map +1 -0
  25. package/dist/browser/querier/genericClientRepository.d.ts +1 -0
  26. package/dist/browser/querier/genericClientRepository.d.ts.map +1 -0
  27. package/dist/browser/querier/genericClientRepository.js +1 -1
  28. package/dist/browser/querier/genericClientRepository.js.map +1 -0
  29. package/dist/browser/querier/httpQuerier.d.ts +1 -0
  30. package/dist/browser/querier/httpQuerier.d.ts.map +1 -0
  31. package/dist/browser/querier/httpQuerier.js +1 -1
  32. package/dist/browser/querier/httpQuerier.js.map +1 -0
  33. package/dist/browser/querier/index.d.ts +1 -0
  34. package/dist/browser/querier/index.d.ts.map +1 -0
  35. package/dist/browser/querier/index.js +1 -1
  36. package/dist/browser/querier/index.js.map +1 -0
  37. package/dist/browser/querier/querier.util.d.ts +1 -0
  38. package/dist/browser/querier/querier.util.d.ts.map +1 -0
  39. package/dist/browser/querier/querier.util.js +1 -1
  40. package/dist/browser/querier/querier.util.js.map +1 -0
  41. package/dist/browser/type/clientQuerier.d.ts +1 -0
  42. package/dist/browser/type/clientQuerier.d.ts.map +1 -0
  43. package/dist/browser/type/clientQuerier.js +1 -1
  44. package/dist/browser/type/clientQuerier.js.map +1 -0
  45. package/dist/browser/type/clientQuerierPool.d.ts +1 -0
  46. package/dist/browser/type/clientQuerierPool.d.ts.map +1 -0
  47. package/dist/browser/type/clientQuerierPool.js +1 -1
  48. package/dist/browser/type/clientQuerierPool.js.map +1 -0
  49. package/dist/browser/type/clientRepository.d.ts +1 -0
  50. package/dist/browser/type/clientRepository.d.ts.map +1 -0
  51. package/dist/browser/type/clientRepository.js +1 -1
  52. package/dist/browser/type/clientRepository.js.map +1 -0
  53. package/dist/browser/type/index.d.ts +1 -0
  54. package/dist/browser/type/index.d.ts.map +1 -0
  55. package/dist/browser/type/index.js +1 -1
  56. package/dist/browser/type/index.js.map +1 -0
  57. package/dist/browser/type/request.d.ts +1 -0
  58. package/dist/browser/type/request.d.ts.map +1 -0
  59. package/dist/browser/type/request.js +1 -1
  60. package/dist/browser/type/request.js.map +1 -0
  61. package/dist/dialect/abstractDialect.d.ts +1 -0
  62. package/dist/dialect/abstractDialect.d.ts.map +1 -0
  63. package/dist/dialect/abstractDialect.js +1 -1
  64. package/dist/dialect/abstractDialect.js.map +1 -0
  65. package/dist/dialect/abstractSqlDialect.d.ts +1 -0
  66. package/dist/dialect/abstractSqlDialect.d.ts.map +1 -0
  67. package/dist/dialect/abstractSqlDialect.js +1 -1
  68. package/dist/dialect/abstractSqlDialect.js.map +1 -0
  69. package/dist/dialect/index.d.ts +1 -0
  70. package/dist/dialect/index.d.ts.map +1 -0
  71. package/dist/dialect/index.js +1 -1
  72. package/dist/dialect/index.js.map +1 -0
  73. package/dist/dialect/queryContext.d.ts +1 -0
  74. package/dist/dialect/queryContext.d.ts.map +1 -0
  75. package/dist/dialect/queryContext.js +1 -1
  76. package/dist/dialect/queryContext.js.map +1 -0
  77. package/dist/entity/decorator/definition.d.ts +1 -0
  78. package/dist/entity/decorator/definition.d.ts.map +1 -0
  79. package/dist/entity/decorator/definition.js +1 -2
  80. package/dist/entity/decorator/definition.js.map +1 -0
  81. package/dist/entity/decorator/entity.d.ts +1 -0
  82. package/dist/entity/decorator/entity.d.ts.map +1 -0
  83. package/dist/entity/decorator/entity.js +1 -1
  84. package/dist/entity/decorator/entity.js.map +1 -0
  85. package/dist/entity/decorator/field.d.ts +1 -0
  86. package/dist/entity/decorator/field.d.ts.map +1 -0
  87. package/dist/entity/decorator/field.js +1 -1
  88. package/dist/entity/decorator/field.js.map +1 -0
  89. package/dist/entity/decorator/id.d.ts +1 -0
  90. package/dist/entity/decorator/id.d.ts.map +1 -0
  91. package/dist/entity/decorator/id.js +1 -1
  92. package/dist/entity/decorator/id.js.map +1 -0
  93. package/dist/entity/decorator/index.d.ts +1 -0
  94. package/dist/entity/decorator/index.d.ts.map +1 -0
  95. package/dist/entity/decorator/index.js +1 -1
  96. package/dist/entity/decorator/index.js.map +1 -0
  97. package/dist/entity/decorator/relation.d.ts +1 -0
  98. package/dist/entity/decorator/relation.d.ts.map +1 -0
  99. package/dist/entity/decorator/relation.js +1 -1
  100. package/dist/entity/decorator/relation.js.map +1 -0
  101. package/dist/entity/index.d.ts +1 -0
  102. package/dist/entity/index.d.ts.map +1 -0
  103. package/dist/entity/index.js +1 -1
  104. package/dist/entity/index.js.map +1 -0
  105. package/dist/express/index.d.ts +1 -0
  106. package/dist/express/index.d.ts.map +1 -0
  107. package/dist/express/index.js +1 -1
  108. package/dist/express/index.js.map +1 -0
  109. package/dist/express/querierMiddleware.d.ts +1 -0
  110. package/dist/express/querierMiddleware.d.ts.map +1 -0
  111. package/dist/express/querierMiddleware.js +1 -1
  112. package/dist/express/querierMiddleware.js.map +1 -0
  113. package/dist/express/query.util.d.ts +1 -0
  114. package/dist/express/query.util.d.ts.map +1 -0
  115. package/dist/express/query.util.js +1 -1
  116. package/dist/express/query.util.js.map +1 -0
  117. package/dist/index.d.ts +1 -1
  118. package/dist/index.d.ts.map +1 -0
  119. package/dist/index.js +1 -2
  120. package/dist/index.js.map +1 -0
  121. package/dist/maria/index.d.ts +1 -0
  122. package/dist/maria/index.d.ts.map +1 -0
  123. package/dist/maria/index.js +1 -1
  124. package/dist/maria/index.js.map +1 -0
  125. package/dist/maria/mariaDialect.d.ts +1 -0
  126. package/dist/maria/mariaDialect.d.ts.map +1 -0
  127. package/dist/maria/mariaDialect.js +1 -1
  128. package/dist/maria/mariaDialect.js.map +1 -0
  129. package/dist/maria/mariadbQuerier.d.ts +1 -0
  130. package/dist/maria/mariadbQuerier.d.ts.map +1 -0
  131. package/dist/maria/mariadbQuerier.js +1 -1
  132. package/dist/maria/mariadbQuerier.js.map +1 -0
  133. package/dist/maria/mariadbQuerierPool.d.ts +1 -0
  134. package/dist/maria/mariadbQuerierPool.d.ts.map +1 -0
  135. package/dist/maria/mariadbQuerierPool.js +1 -1
  136. package/dist/maria/mariadbQuerierPool.js.map +1 -0
  137. package/dist/migrate/cli.d.ts +1 -0
  138. package/dist/migrate/cli.d.ts.map +1 -0
  139. package/dist/migrate/cli.js +3 -3
  140. package/dist/migrate/cli.js.map +1 -0
  141. package/dist/migrate/generator/index.d.ts +1 -0
  142. package/dist/migrate/generator/index.d.ts.map +1 -0
  143. package/dist/migrate/generator/index.js +1 -1
  144. package/dist/migrate/generator/index.js.map +1 -0
  145. package/dist/migrate/generator/mongoSchemaGenerator.d.ts +1 -0
  146. package/dist/migrate/generator/mongoSchemaGenerator.d.ts.map +1 -0
  147. package/dist/migrate/generator/mongoSchemaGenerator.js +1 -1
  148. package/dist/migrate/generator/mongoSchemaGenerator.js.map +1 -0
  149. package/dist/migrate/generator/mysqlSchemaGenerator.d.ts +1 -0
  150. package/dist/migrate/generator/mysqlSchemaGenerator.d.ts.map +1 -0
  151. package/dist/migrate/generator/mysqlSchemaGenerator.js +1 -1
  152. package/dist/migrate/generator/mysqlSchemaGenerator.js.map +1 -0
  153. package/dist/migrate/generator/postgresSchemaGenerator.d.ts +1 -0
  154. package/dist/migrate/generator/postgresSchemaGenerator.d.ts.map +1 -0
  155. package/dist/migrate/generator/postgresSchemaGenerator.js +1 -1
  156. package/dist/migrate/generator/postgresSchemaGenerator.js.map +1 -0
  157. package/dist/migrate/generator/sqliteSchemaGenerator.d.ts +1 -0
  158. package/dist/migrate/generator/sqliteSchemaGenerator.d.ts.map +1 -0
  159. package/dist/migrate/generator/sqliteSchemaGenerator.js +1 -1
  160. package/dist/migrate/generator/sqliteSchemaGenerator.js.map +1 -0
  161. package/dist/migrate/index.d.ts +1 -0
  162. package/dist/migrate/index.d.ts.map +1 -0
  163. package/dist/migrate/index.js +1 -1
  164. package/dist/migrate/index.js.map +1 -0
  165. package/dist/migrate/introspection/index.d.ts +1 -0
  166. package/dist/migrate/introspection/index.d.ts.map +1 -0
  167. package/dist/migrate/introspection/index.js +1 -1
  168. package/dist/migrate/introspection/index.js.map +1 -0
  169. package/dist/migrate/introspection/mongoIntrospector.d.ts +1 -0
  170. package/dist/migrate/introspection/mongoIntrospector.d.ts.map +1 -0
  171. package/dist/migrate/introspection/mongoIntrospector.js +1 -1
  172. package/dist/migrate/introspection/mongoIntrospector.js.map +1 -0
  173. package/dist/migrate/introspection/mysqlIntrospector.d.ts +1 -0
  174. package/dist/migrate/introspection/mysqlIntrospector.d.ts.map +1 -0
  175. package/dist/migrate/introspection/mysqlIntrospector.js +1 -1
  176. package/dist/migrate/introspection/mysqlIntrospector.js.map +1 -0
  177. package/dist/migrate/introspection/postgresIntrospector.d.ts +1 -0
  178. package/dist/migrate/introspection/postgresIntrospector.d.ts.map +1 -0
  179. package/dist/migrate/introspection/postgresIntrospector.js +1 -1
  180. package/dist/migrate/introspection/postgresIntrospector.js.map +1 -0
  181. package/dist/migrate/introspection/sqliteIntrospector.d.ts +1 -0
  182. package/dist/migrate/introspection/sqliteIntrospector.d.ts.map +1 -0
  183. package/dist/migrate/introspection/sqliteIntrospector.js +1 -1
  184. package/dist/migrate/introspection/sqliteIntrospector.js.map +1 -0
  185. package/dist/migrate/migrator.d.ts +1 -0
  186. package/dist/migrate/migrator.d.ts.map +1 -0
  187. package/dist/migrate/migrator.js +1 -1
  188. package/dist/migrate/migrator.js.map +1 -0
  189. package/dist/migrate/schemaGenerator.d.ts +1 -0
  190. package/dist/migrate/schemaGenerator.d.ts.map +1 -0
  191. package/dist/migrate/schemaGenerator.js +1 -1
  192. package/dist/migrate/schemaGenerator.js.map +1 -0
  193. package/dist/migrate/storage/databaseStorage.d.ts +1 -0
  194. package/dist/migrate/storage/databaseStorage.d.ts.map +1 -0
  195. package/dist/migrate/storage/databaseStorage.js +1 -1
  196. package/dist/migrate/storage/databaseStorage.js.map +1 -0
  197. package/dist/migrate/storage/index.d.ts +1 -0
  198. package/dist/migrate/storage/index.d.ts.map +1 -0
  199. package/dist/migrate/storage/index.js +1 -1
  200. package/dist/migrate/storage/index.js.map +1 -0
  201. package/dist/migrate/storage/jsonStorage.d.ts +1 -0
  202. package/dist/migrate/storage/jsonStorage.d.ts.map +1 -0
  203. package/dist/migrate/storage/jsonStorage.js +1 -1
  204. package/dist/migrate/storage/jsonStorage.js.map +1 -0
  205. package/dist/migrate/type.d.ts +1 -0
  206. package/dist/migrate/type.d.ts.map +1 -0
  207. package/dist/migrate/type.js +1 -1
  208. package/dist/migrate/type.js.map +1 -0
  209. package/dist/mongo/index.d.ts +1 -0
  210. package/dist/mongo/index.d.ts.map +1 -0
  211. package/dist/mongo/index.js +1 -1
  212. package/dist/mongo/index.js.map +1 -0
  213. package/dist/mongo/mongoDialect.d.ts +1 -0
  214. package/dist/mongo/mongoDialect.d.ts.map +1 -0
  215. package/dist/mongo/mongoDialect.js +1 -1
  216. package/dist/mongo/mongoDialect.js.map +1 -0
  217. package/dist/mongo/mongodbQuerier.d.ts +1 -0
  218. package/dist/mongo/mongodbQuerier.d.ts.map +1 -0
  219. package/dist/mongo/mongodbQuerier.js +1 -1
  220. package/dist/mongo/mongodbQuerier.js.map +1 -0
  221. package/dist/mongo/mongodbQuerierPool.d.ts +1 -0
  222. package/dist/mongo/mongodbQuerierPool.d.ts.map +1 -0
  223. package/dist/mongo/mongodbQuerierPool.js +1 -1
  224. package/dist/mongo/mongodbQuerierPool.js.map +1 -0
  225. package/dist/mysql/index.d.ts +1 -0
  226. package/dist/mysql/index.d.ts.map +1 -0
  227. package/dist/mysql/index.js +1 -1
  228. package/dist/mysql/index.js.map +1 -0
  229. package/dist/mysql/mysql2Querier.d.ts +1 -0
  230. package/dist/mysql/mysql2Querier.d.ts.map +1 -0
  231. package/dist/mysql/mysql2Querier.js +1 -1
  232. package/dist/mysql/mysql2Querier.js.map +1 -0
  233. package/dist/mysql/mysql2QuerierPool.d.ts +1 -0
  234. package/dist/mysql/mysql2QuerierPool.d.ts.map +1 -0
  235. package/dist/mysql/mysql2QuerierPool.js +1 -1
  236. package/dist/mysql/mysql2QuerierPool.js.map +1 -0
  237. package/dist/mysql/mysqlDialect.d.ts +1 -0
  238. package/dist/mysql/mysqlDialect.d.ts.map +1 -0
  239. package/dist/mysql/mysqlDialect.js +1 -1
  240. package/dist/mysql/mysqlDialect.js.map +1 -0
  241. package/dist/namingStrategy/defaultNamingStrategy.d.ts +1 -0
  242. package/dist/namingStrategy/defaultNamingStrategy.d.ts.map +1 -0
  243. package/dist/namingStrategy/defaultNamingStrategy.js +1 -1
  244. package/dist/namingStrategy/defaultNamingStrategy.js.map +1 -0
  245. package/dist/namingStrategy/index.d.ts +1 -0
  246. package/dist/namingStrategy/index.d.ts.map +1 -0
  247. package/dist/namingStrategy/index.js +1 -1
  248. package/dist/namingStrategy/index.js.map +1 -0
  249. package/dist/namingStrategy/snakeCaseNamingStrategy.d.ts +1 -0
  250. package/dist/namingStrategy/snakeCaseNamingStrategy.d.ts.map +1 -0
  251. package/dist/namingStrategy/snakeCaseNamingStrategy.js +1 -1
  252. package/dist/namingStrategy/snakeCaseNamingStrategy.js.map +1 -0
  253. package/dist/options.d.ts +1 -0
  254. package/dist/options.d.ts.map +1 -0
  255. package/dist/options.js +1 -1
  256. package/dist/options.js.map +1 -0
  257. package/dist/postgres/index.d.ts +1 -0
  258. package/dist/postgres/index.d.ts.map +1 -0
  259. package/dist/postgres/index.js +1 -1
  260. package/dist/postgres/index.js.map +1 -0
  261. package/dist/postgres/pgQuerier.d.ts +1 -0
  262. package/dist/postgres/pgQuerier.d.ts.map +1 -0
  263. package/dist/postgres/pgQuerier.js +1 -1
  264. package/dist/postgres/pgQuerier.js.map +1 -0
  265. package/dist/postgres/pgQuerierPool.d.ts +1 -0
  266. package/dist/postgres/pgQuerierPool.d.ts.map +1 -0
  267. package/dist/postgres/pgQuerierPool.js +1 -1
  268. package/dist/postgres/pgQuerierPool.js.map +1 -0
  269. package/dist/postgres/postgresDialect.d.ts +1 -0
  270. package/dist/postgres/postgresDialect.d.ts.map +1 -0
  271. package/dist/postgres/postgresDialect.js +1 -1
  272. package/dist/postgres/postgresDialect.js.map +1 -0
  273. package/dist/querier/abstractQuerier.d.ts +1 -0
  274. package/dist/querier/abstractQuerier.d.ts.map +1 -0
  275. package/dist/querier/abstractQuerier.js +1 -1
  276. package/dist/querier/abstractQuerier.js.map +1 -0
  277. package/dist/querier/abstractQuerierPool.d.ts +1 -0
  278. package/dist/querier/abstractQuerierPool.d.ts.map +1 -0
  279. package/dist/querier/abstractQuerierPool.js +1 -1
  280. package/dist/querier/abstractQuerierPool.js.map +1 -0
  281. package/dist/querier/abstractSqlQuerier.d.ts +1 -0
  282. package/dist/querier/abstractSqlQuerier.d.ts.map +1 -0
  283. package/dist/querier/abstractSqlQuerier.js +1 -1
  284. package/dist/querier/abstractSqlQuerier.js.map +1 -0
  285. package/dist/querier/decorator/index.d.ts +1 -0
  286. package/dist/querier/decorator/index.d.ts.map +1 -0
  287. package/dist/querier/decorator/index.js +1 -1
  288. package/dist/querier/decorator/index.js.map +1 -0
  289. package/dist/querier/decorator/injectQuerier.d.ts +1 -0
  290. package/dist/querier/decorator/injectQuerier.d.ts.map +1 -0
  291. package/dist/querier/decorator/injectQuerier.js +1 -1
  292. package/dist/querier/decorator/injectQuerier.js.map +1 -0
  293. package/dist/querier/decorator/serialized.d.ts +1 -0
  294. package/dist/querier/decorator/serialized.d.ts.map +1 -0
  295. package/dist/querier/decorator/serialized.js +1 -1
  296. package/dist/querier/decorator/serialized.js.map +1 -0
  297. package/dist/querier/decorator/transactional.d.ts +1 -0
  298. package/dist/querier/decorator/transactional.d.ts.map +1 -0
  299. package/dist/querier/decorator/transactional.js +1 -1
  300. package/dist/querier/decorator/transactional.js.map +1 -0
  301. package/dist/querier/index.d.ts +1 -0
  302. package/dist/querier/index.d.ts.map +1 -0
  303. package/dist/querier/index.js +1 -1
  304. package/dist/querier/index.js.map +1 -0
  305. package/dist/repository/genericRepository.d.ts +1 -0
  306. package/dist/repository/genericRepository.d.ts.map +1 -0
  307. package/dist/repository/genericRepository.js +1 -1
  308. package/dist/repository/genericRepository.js.map +1 -0
  309. package/dist/repository/index.d.ts +1 -0
  310. package/dist/repository/index.d.ts.map +1 -0
  311. package/dist/repository/index.js +1 -1
  312. package/dist/repository/index.js.map +1 -0
  313. package/dist/sqlite/index.d.ts +1 -0
  314. package/dist/sqlite/index.d.ts.map +1 -0
  315. package/dist/sqlite/index.js +1 -1
  316. package/dist/sqlite/index.js.map +1 -0
  317. package/dist/sqlite/sqliteDialect.d.ts +1 -0
  318. package/dist/sqlite/sqliteDialect.d.ts.map +1 -0
  319. package/dist/sqlite/sqliteDialect.js +1 -1
  320. package/dist/sqlite/sqliteDialect.js.map +1 -0
  321. package/dist/sqlite/sqliteQuerier.d.ts +1 -0
  322. package/dist/sqlite/sqliteQuerier.d.ts.map +1 -0
  323. package/dist/sqlite/sqliteQuerier.js +1 -1
  324. package/dist/sqlite/sqliteQuerier.js.map +1 -0
  325. package/dist/sqlite/sqliteQuerierPool.d.ts +1 -0
  326. package/dist/sqlite/sqliteQuerierPool.d.ts.map +1 -0
  327. package/dist/sqlite/sqliteQuerierPool.js +1 -1
  328. package/dist/sqlite/sqliteQuerierPool.js.map +1 -0
  329. package/dist/type/entity.d.ts +1 -0
  330. package/dist/type/entity.d.ts.map +1 -0
  331. package/dist/type/entity.js +1 -1
  332. package/dist/type/entity.js.map +1 -0
  333. package/dist/type/index.d.ts +1 -0
  334. package/dist/type/index.d.ts.map +1 -0
  335. package/dist/type/index.js +1 -1
  336. package/dist/type/index.js.map +1 -0
  337. package/dist/type/migration.d.ts +1 -0
  338. package/dist/type/migration.d.ts.map +1 -0
  339. package/dist/type/migration.js +1 -1
  340. package/dist/type/migration.js.map +1 -0
  341. package/dist/type/namingStrategy.d.ts +1 -0
  342. package/dist/type/namingStrategy.d.ts.map +1 -0
  343. package/dist/type/namingStrategy.js +1 -1
  344. package/dist/type/namingStrategy.js.map +1 -0
  345. package/dist/type/querier.d.ts +1 -0
  346. package/dist/type/querier.d.ts.map +1 -0
  347. package/dist/type/querier.js +1 -1
  348. package/dist/type/querier.js.map +1 -0
  349. package/dist/type/querierPool.d.ts +1 -0
  350. package/dist/type/querierPool.d.ts.map +1 -0
  351. package/dist/type/querierPool.js +1 -1
  352. package/dist/type/querierPool.js.map +1 -0
  353. package/dist/type/query.d.ts +1 -0
  354. package/dist/type/query.d.ts.map +1 -0
  355. package/dist/type/query.js +1 -1
  356. package/dist/type/query.js.map +1 -0
  357. package/dist/type/repository.d.ts +1 -0
  358. package/dist/type/repository.d.ts.map +1 -0
  359. package/dist/type/repository.js +1 -1
  360. package/dist/type/repository.js.map +1 -0
  361. package/dist/type/universalQuerier.d.ts +1 -0
  362. package/dist/type/universalQuerier.d.ts.map +1 -0
  363. package/dist/type/universalQuerier.js +1 -1
  364. package/dist/type/universalQuerier.js.map +1 -0
  365. package/dist/type/utility.d.ts +1 -0
  366. package/dist/type/utility.d.ts.map +1 -0
  367. package/dist/type/utility.js +1 -1
  368. package/dist/type/utility.js.map +1 -0
  369. package/dist/util/dialect.util.d.ts +1 -0
  370. package/dist/util/dialect.util.d.ts.map +1 -0
  371. package/dist/util/dialect.util.js +1 -1
  372. package/dist/util/dialect.util.js.map +1 -0
  373. package/dist/util/index.d.ts +1 -0
  374. package/dist/util/index.d.ts.map +1 -0
  375. package/dist/util/index.js +1 -1
  376. package/dist/util/index.js.map +1 -0
  377. package/dist/util/object.util.d.ts +1 -0
  378. package/dist/util/object.util.d.ts.map +1 -0
  379. package/dist/util/object.util.js +1 -1
  380. package/dist/util/object.util.js.map +1 -0
  381. package/dist/util/raw.d.ts +1 -0
  382. package/dist/util/raw.d.ts.map +1 -0
  383. package/dist/util/raw.js +1 -1
  384. package/dist/util/raw.js.map +1 -0
  385. package/dist/util/sql.util.d.ts +1 -0
  386. package/dist/util/sql.util.d.ts.map +1 -0
  387. package/dist/util/sql.util.js +1 -1
  388. package/dist/util/sql.util.js.map +1 -0
  389. package/dist/util/string.util.d.ts +1 -0
  390. package/dist/util/string.util.d.ts.map +1 -0
  391. package/dist/util/string.util.js +1 -1
  392. package/dist/util/string.util.js.map +1 -0
  393. package/package.json +32 -26
  394. package/dist/CHANGELOG.md +0 -186
  395. package/dist/maria/mariaQuerierPool.test.d.ts +0 -5
  396. package/dist/maria/mariaQuerierPool.test.js +0 -19
  397. package/dist/maria/mariadbQuerier.test.d.ts +0 -4
  398. package/dist/maria/mariadbQuerier.test.js +0 -19
  399. package/dist/migrate/migrator-mongo.test.d.ts +0 -1
  400. package/dist/migrate/migrator-mongo.test.js +0 -54
  401. package/dist/migrate/migrator.test.d.ts +0 -1
  402. package/dist/migrate/migrator.test.js +0 -106
  403. package/dist/mongo/mongodbQuerier.test.d.ts +0 -1
  404. package/dist/mongo/mongodbQuerier.test.js +0 -36
  405. package/dist/mongo/mongodbQuerierPool.test.d.ts +0 -1
  406. package/dist/mongo/mongodbQuerierPool.test.js +0 -21
  407. package/dist/mysql/mysql2Querier.test.d.ts +0 -4
  408. package/dist/mysql/mysql2Querier.test.js +0 -16
  409. package/dist/mysql/mysql2QuerierPool.test.d.ts +0 -5
  410. package/dist/mysql/mysql2QuerierPool.test.js +0 -16
  411. package/dist/package.json +0 -131
  412. package/dist/postgres/pgQuerier.test.d.ts +0 -4
  413. package/dist/postgres/pgQuerier.test.js +0 -20
  414. package/dist/postgres/pgQuerierPool.test.d.ts +0 -5
  415. package/dist/postgres/pgQuerierPool.test.js +0 -23
  416. package/dist/querier/abstractQuerier-test.d.ts +0 -45
  417. package/dist/querier/abstractQuerier-test.js +0 -461
  418. package/dist/querier/abstractQuerierPool-test.d.ts +0 -9
  419. package/dist/querier/abstractQuerierPool-test.js +0 -18
  420. package/dist/querier/abstractSqlQuerier-test.d.ts +0 -9
  421. package/dist/querier/abstractSqlQuerier-test.js +0 -16
  422. package/dist/sqlite/sqliteQuerier.test.d.ts +0 -5
  423. package/dist/sqlite/sqliteQuerier.test.js +0 -19
  424. package/dist/sqlite/sqliteQuerierPool.test.d.ts +0 -5
  425. package/dist/sqlite/sqliteQuerierPool.test.js +0 -10
  426. package/dist/test/entityMock.d.ts +0 -164
  427. package/dist/test/entityMock.js +0 -554
  428. package/dist/test/index.d.ts +0 -3
  429. package/dist/test/index.js +0 -4
  430. package/dist/test/it.util.d.ts +0 -4
  431. package/dist/test/it.util.js +0 -55
  432. package/dist/test/spec.util.d.ts +0 -14
  433. package/dist/test/spec.util.js +0 -50
  434. package/src/@types/index.d.ts +0 -1
  435. package/src/@types/jest.d.ts +0 -6
  436. package/src/browser/http/bus.spec.ts +0 -22
  437. package/src/browser/http/bus.ts +0 -17
  438. package/src/browser/http/http.spec.ts +0 -70
  439. package/src/browser/http/http.ts +0 -55
  440. package/src/browser/http/index.ts +0 -2
  441. package/src/browser/index.ts +0 -4
  442. package/src/browser/options.spec.ts +0 -37
  443. package/src/browser/options.ts +0 -18
  444. package/src/browser/querier/genericClientRepository.spec.ts +0 -105
  445. package/src/browser/querier/genericClientRepository.ts +0 -49
  446. package/src/browser/querier/httpQuerier.ts +0 -82
  447. package/src/browser/querier/index.ts +0 -3
  448. package/src/browser/querier/querier.util.spec.ts +0 -35
  449. package/src/browser/querier/querier.util.ts +0 -18
  450. package/src/browser/type/clientQuerier.ts +0 -45
  451. package/src/browser/type/clientQuerierPool.ts +0 -5
  452. package/src/browser/type/clientRepository.ts +0 -22
  453. package/src/browser/type/index.ts +0 -4
  454. package/src/browser/type/request.ts +0 -25
  455. package/src/dialect/abstractDialect.ts +0 -28
  456. package/src/dialect/abstractSqlDialect-spec.ts +0 -1309
  457. package/src/dialect/abstractSqlDialect.ts +0 -805
  458. package/src/dialect/index.ts +0 -3
  459. package/src/dialect/namingStrategy.spec.ts +0 -52
  460. package/src/dialect/queryContext.ts +0 -69
  461. package/src/entity/decorator/definition.spec.ts +0 -736
  462. package/src/entity/decorator/definition.ts +0 -265
  463. package/src/entity/decorator/entity.ts +0 -8
  464. package/src/entity/decorator/field.ts +0 -9
  465. package/src/entity/decorator/id.ts +0 -9
  466. package/src/entity/decorator/index.ts +0 -5
  467. package/src/entity/decorator/relation.spec.ts +0 -41
  468. package/src/entity/decorator/relation.ts +0 -34
  469. package/src/entity/index.ts +0 -1
  470. package/src/express/@types/express.d.ts +0 -8
  471. package/src/express/@types/index.d.ts +0 -1
  472. package/src/express/index.ts +0 -2
  473. package/src/express/querierMiddleware.ts +0 -217
  474. package/src/express/query.util.spec.ts +0 -40
  475. package/src/express/query.util.ts +0 -21
  476. package/src/index.ts +0 -9
  477. package/src/maria/index.ts +0 -3
  478. package/src/maria/mariaDialect.spec.ts +0 -207
  479. package/src/maria/mariaDialect.ts +0 -42
  480. package/src/maria/mariaQuerierPool.test.ts +0 -23
  481. package/src/maria/mariadbQuerier.test.ts +0 -23
  482. package/src/maria/mariadbQuerier.ts +0 -45
  483. package/src/maria/mariadbQuerierPool.ts +0 -21
  484. package/src/migrate/cli.ts +0 -301
  485. package/src/migrate/generator/index.ts +0 -4
  486. package/src/migrate/generator/mongoSchemaGenerator.spec.ts +0 -112
  487. package/src/migrate/generator/mongoSchemaGenerator.ts +0 -115
  488. package/src/migrate/generator/mysqlSchemaGenerator.spec.ts +0 -34
  489. package/src/migrate/generator/mysqlSchemaGenerator.ts +0 -92
  490. package/src/migrate/generator/postgresSchemaGenerator.spec.ts +0 -44
  491. package/src/migrate/generator/postgresSchemaGenerator.ts +0 -127
  492. package/src/migrate/generator/sqliteSchemaGenerator.spec.ts +0 -33
  493. package/src/migrate/generator/sqliteSchemaGenerator.ts +0 -81
  494. package/src/migrate/index.ts +0 -41
  495. package/src/migrate/introspection/index.ts +0 -4
  496. package/src/migrate/introspection/mongoIntrospector.spec.ts +0 -75
  497. package/src/migrate/introspection/mongoIntrospector.ts +0 -47
  498. package/src/migrate/introspection/mysqlIntrospector.spec.ts +0 -113
  499. package/src/migrate/introspection/mysqlIntrospector.ts +0 -278
  500. package/src/migrate/introspection/postgresIntrospector.spec.ts +0 -112
  501. package/src/migrate/introspection/postgresIntrospector.ts +0 -329
  502. package/src/migrate/introspection/sqliteIntrospector.spec.ts +0 -112
  503. package/src/migrate/introspection/sqliteIntrospector.ts +0 -296
  504. package/src/migrate/migrator-mongo.test.ts +0 -54
  505. package/src/migrate/migrator.spec.ts +0 -255
  506. package/src/migrate/migrator.test.ts +0 -94
  507. package/src/migrate/migrator.ts +0 -719
  508. package/src/migrate/namingStrategy.spec.ts +0 -22
  509. package/src/migrate/schemaGenerator-advanced.spec.ts +0 -138
  510. package/src/migrate/schemaGenerator.spec.ts +0 -190
  511. package/src/migrate/schemaGenerator.ts +0 -478
  512. package/src/migrate/storage/databaseStorage.spec.ts +0 -69
  513. package/src/migrate/storage/databaseStorage.ts +0 -100
  514. package/src/migrate/storage/index.ts +0 -2
  515. package/src/migrate/storage/jsonStorage.ts +0 -58
  516. package/src/migrate/type.ts +0 -1
  517. package/src/mongo/index.ts +0 -3
  518. package/src/mongo/mongoDialect.spec.ts +0 -251
  519. package/src/mongo/mongoDialect.ts +0 -238
  520. package/src/mongo/mongodbQuerier.test.ts +0 -45
  521. package/src/mongo/mongodbQuerier.ts +0 -256
  522. package/src/mongo/mongodbQuerierPool.test.ts +0 -25
  523. package/src/mongo/mongodbQuerierPool.ts +0 -24
  524. package/src/mysql/index.ts +0 -3
  525. package/src/mysql/mysql2Querier.test.ts +0 -20
  526. package/src/mysql/mysql2Querier.ts +0 -49
  527. package/src/mysql/mysql2QuerierPool.test.ts +0 -20
  528. package/src/mysql/mysql2QuerierPool.ts +0 -21
  529. package/src/mysql/mysqlDialect.spec.ts +0 -20
  530. package/src/mysql/mysqlDialect.ts +0 -16
  531. package/src/namingStrategy/defaultNamingStrategy.ts +0 -18
  532. package/src/namingStrategy/index.spec.ts +0 -36
  533. package/src/namingStrategy/index.ts +0 -2
  534. package/src/namingStrategy/snakeCaseNamingStrategy.ts +0 -15
  535. package/src/options.spec.ts +0 -41
  536. package/src/options.ts +0 -18
  537. package/src/postgres/index.ts +0 -3
  538. package/src/postgres/manual-types.d.ts +0 -4
  539. package/src/postgres/pgQuerier.test.ts +0 -25
  540. package/src/postgres/pgQuerier.ts +0 -45
  541. package/src/postgres/pgQuerierPool.test.ts +0 -28
  542. package/src/postgres/pgQuerierPool.ts +0 -21
  543. package/src/postgres/postgresDialect.spec.ts +0 -428
  544. package/src/postgres/postgresDialect.ts +0 -144
  545. package/src/querier/abstractQuerier-test.ts +0 -584
  546. package/src/querier/abstractQuerier.ts +0 -353
  547. package/src/querier/abstractQuerierPool-test.ts +0 -20
  548. package/src/querier/abstractQuerierPool.ts +0 -18
  549. package/src/querier/abstractSqlQuerier-spec.ts +0 -979
  550. package/src/querier/abstractSqlQuerier-test.ts +0 -21
  551. package/src/querier/abstractSqlQuerier.ts +0 -138
  552. package/src/querier/decorator/index.ts +0 -3
  553. package/src/querier/decorator/injectQuerier.spec.ts +0 -74
  554. package/src/querier/decorator/injectQuerier.ts +0 -45
  555. package/src/querier/decorator/serialized.spec.ts +0 -98
  556. package/src/querier/decorator/serialized.ts +0 -13
  557. package/src/querier/decorator/transactional.spec.ts +0 -240
  558. package/src/querier/decorator/transactional.ts +0 -56
  559. package/src/querier/index.ts +0 -4
  560. package/src/repository/genericRepository.spec.ts +0 -111
  561. package/src/repository/genericRepository.ts +0 -74
  562. package/src/repository/index.ts +0 -1
  563. package/src/sqlite/index.ts +0 -3
  564. package/src/sqlite/manual-types.d.ts +0 -4
  565. package/src/sqlite/sqliteDialect.spec.ts +0 -155
  566. package/src/sqlite/sqliteDialect.ts +0 -76
  567. package/src/sqlite/sqliteQuerier.spec.ts +0 -36
  568. package/src/sqlite/sqliteQuerier.test.ts +0 -21
  569. package/src/sqlite/sqliteQuerier.ts +0 -37
  570. package/src/sqlite/sqliteQuerierPool.test.ts +0 -12
  571. package/src/sqlite/sqliteQuerierPool.ts +0 -38
  572. package/src/test/entityMock.ts +0 -375
  573. package/src/test/index.ts +0 -3
  574. package/src/test/it.util.ts +0 -69
  575. package/src/test/spec.util.ts +0 -57
  576. package/src/type/entity.ts +0 -218
  577. package/src/type/index.ts +0 -9
  578. package/src/type/migration.ts +0 -241
  579. package/src/type/namingStrategy.ts +0 -17
  580. package/src/type/querier.ts +0 -143
  581. package/src/type/querierPool.ts +0 -26
  582. package/src/type/query.ts +0 -506
  583. package/src/type/repository.ts +0 -142
  584. package/src/type/universalQuerier.ts +0 -133
  585. package/src/type/utility.ts +0 -21
  586. package/src/util/dialect.util-extra.spec.ts +0 -96
  587. package/src/util/dialect.util.spec.ts +0 -23
  588. package/src/util/dialect.util.ts +0 -134
  589. package/src/util/index.ts +0 -5
  590. package/src/util/object.util.spec.ts +0 -29
  591. package/src/util/object.util.ts +0 -27
  592. package/src/util/raw.ts +0 -11
  593. package/src/util/sql.util-extra.spec.ts +0 -17
  594. package/src/util/sql.util.spec.ts +0 -208
  595. package/src/util/sql.util.ts +0 -104
  596. package/src/util/string.util.spec.ts +0 -46
  597. package/src/util/string.util.ts +0 -35
  598. package/tsconfig.build.json +0 -5
  599. package/tsconfig.json +0 -8
@@ -1,478 +0,0 @@
1
- import { AbstractDialect } from '../dialect/index.js';
2
- import { getMeta } from '../entity/index.js';
3
- import type {
4
- ColumnSchema,
5
- ColumnType,
6
- EntityMeta,
7
- FieldKey,
8
- FieldOptions,
9
- IndexSchema,
10
- NamingStrategy,
11
- SchemaDiff,
12
- SchemaGenerator,
13
- TableSchema,
14
- Type,
15
- } from '../type/index.js';
16
- import { escapeSqlId, getKeys } from '../util/index.js';
17
-
18
- /**
19
- * Abstract base class for SQL schema generation
20
- */
21
- export abstract class AbstractSchemaGenerator extends AbstractDialect implements SchemaGenerator {
22
- /**
23
- * Primary key type for auto-increment integer IDs
24
- */
25
- protected abstract readonly serialPrimaryKeyType: string;
26
-
27
- constructor(
28
- namingStrategy?: NamingStrategy,
29
- protected readonly escapeIdChar: '`' | '"' = '`',
30
- ) {
31
- super(namingStrategy);
32
- }
33
-
34
- /**
35
- * Escape an identifier (table name, column name, etc.)
36
- */
37
- protected escapeId(identifier: string): string {
38
- return escapeSqlId(identifier, this.escapeIdChar);
39
- }
40
-
41
- generateCreateTable<E>(entity: Type<E>, options: { ifNotExists?: boolean } = {}): string {
42
- const meta = getMeta(entity);
43
- const tableName = this.resolveTableName(entity, meta);
44
- const columns = this.generateColumnDefinitions(meta);
45
- const constraints = this.generateTableConstraints(meta);
46
-
47
- const ifNotExists = options.ifNotExists ? 'IF NOT EXISTS ' : '';
48
- let sql = `CREATE TABLE ${ifNotExists}${this.escapeId(tableName)} (\n`;
49
- sql += columns.map((col) => ` ${col}`).join(',\n');
50
-
51
- if (constraints.length > 0) {
52
- sql += ',\n';
53
- sql += constraints.map((c: any) => ` ${c}`).join(',\n');
54
- }
55
-
56
- sql += '\n)';
57
- sql += this.getTableOptions(meta);
58
- sql += ';';
59
-
60
- return sql;
61
- }
62
-
63
- generateDropTable<E>(entity: Type<E>): string {
64
- const meta = getMeta(entity);
65
- const tableName = this.resolveTableName(entity, meta);
66
- return `DROP TABLE IF EXISTS ${this.escapeId(tableName)};`;
67
- }
68
-
69
- generateAlterTable(diff: SchemaDiff): string[] {
70
- const statements: string[] = [];
71
- const tableName = this.escapeId(diff.tableName);
72
-
73
- // Add new columns
74
- if (diff.columnsToAdd?.length) {
75
- for (const column of diff.columnsToAdd) {
76
- const colDef = this.generateColumnDefinitionFromSchema(column);
77
- statements.push(`ALTER TABLE ${tableName} ADD COLUMN ${colDef};`);
78
- }
79
- }
80
-
81
- // Alter existing columns
82
- if (diff.columnsToAlter?.length) {
83
- for (const { to } of diff.columnsToAlter) {
84
- const colDef = this.generateColumnDefinitionFromSchema(to);
85
- const colStatements = this.generateAlterColumnStatements(diff.tableName, to, colDef);
86
- statements.push(...colStatements);
87
- }
88
- }
89
-
90
- // Drop columns
91
- if (diff.columnsToDrop?.length) {
92
- for (const columnName of diff.columnsToDrop) {
93
- statements.push(`ALTER TABLE ${tableName} DROP COLUMN ${this.escapeId(columnName)};`);
94
- }
95
- }
96
-
97
- // Add indexes
98
- if (diff.indexesToAdd?.length) {
99
- for (const index of diff.indexesToAdd) {
100
- statements.push(this.generateCreateIndex(diff.tableName, index));
101
- }
102
- }
103
-
104
- // Drop indexes
105
- if (diff.indexesToDrop?.length) {
106
- for (const indexName of diff.indexesToDrop) {
107
- statements.push(this.generateDropIndex(diff.tableName, indexName));
108
- }
109
- }
110
-
111
- return statements;
112
- }
113
-
114
- generateAlterTableDown(diff: SchemaDiff): string[] {
115
- const statements: string[] = [];
116
- const tableName = this.escapeId(diff.tableName);
117
-
118
- // Rollback additions by dropping columns
119
- if (diff.columnsToAdd?.length) {
120
- for (const column of diff.columnsToAdd) {
121
- statements.push(`ALTER TABLE ${tableName} DROP COLUMN ${this.escapeId(column.name)};`);
122
- }
123
- }
124
-
125
- return statements;
126
- }
127
-
128
- generateCreateIndex(tableName: string, index: IndexSchema): string {
129
- const unique = index.unique ? 'UNIQUE ' : '';
130
- const columns = index.columns.map((c: any) => this.escapeId(c)).join(', ');
131
- return `CREATE ${unique}INDEX ${this.escapeId(index.name)} ON ${this.escapeId(tableName)} (${columns});`;
132
- }
133
-
134
- generateDropIndex(tableName: string, indexName: string): string {
135
- return `DROP INDEX IF EXISTS ${this.escapeId(indexName)};`;
136
- }
137
-
138
- /**
139
- * Generate column definitions from entity metadata
140
- */
141
- public generateColumnDefinitions<E>(meta: EntityMeta<E>): string[] {
142
- const columns: string[] = [];
143
- const fieldKeys = getKeys(meta.fields) as FieldKey<E>[];
144
-
145
- for (const key of fieldKeys) {
146
- const field = meta.fields[key];
147
- if (field?.virtual) continue; // Skip virtual fields
148
-
149
- const colDef = this.generateColumnDefinition(key as string, field, meta);
150
- columns.push(colDef);
151
- }
152
-
153
- return columns;
154
- }
155
-
156
- /**
157
- * Generate a single column definition
158
- */
159
- public generateColumnDefinition<E>(fieldKey: string, field: FieldOptions, meta: EntityMeta<E>): string {
160
- const columnName = this.escapeId(this.resolveColumnName(fieldKey, field));
161
- const isId = field.isId === true;
162
- const isPrimaryKey = isId && meta.id === fieldKey;
163
-
164
- // Determine SQL type
165
- let sqlType: string;
166
- if (isPrimaryKey && field.autoIncrement !== false && !field.onInsert) {
167
- // Auto-increment primary key
168
- sqlType = this.serialPrimaryKeyType;
169
- } else {
170
- sqlType = this.getSqlType(field, field.type);
171
- }
172
-
173
- let definition = `${columnName} ${sqlType}`;
174
-
175
- // PRIMARY KEY constraint (for non-serial types)
176
- if (isPrimaryKey && !sqlType.includes('PRIMARY KEY')) {
177
- definition += ' PRIMARY KEY';
178
- }
179
-
180
- // NULL/NOT NULL
181
- if (!isPrimaryKey) {
182
- const nullable = field.nullable ?? true;
183
- if (!nullable) {
184
- definition += ' NOT NULL';
185
- }
186
- }
187
-
188
- // UNIQUE constraint
189
- if (field.unique && !isPrimaryKey) {
190
- definition += ' UNIQUE';
191
- }
192
-
193
- // DEFAULT value
194
- if (field.defaultValue !== undefined) {
195
- definition += ` DEFAULT ${this.formatDefaultValue(field.defaultValue)}`;
196
- }
197
-
198
- // COMMENT (if supported)
199
- if (field.comment) {
200
- definition += this.generateColumnComment(
201
- this.resolveTableName(meta.entity, meta),
202
- this.resolveColumnName(fieldKey, field),
203
- field.comment,
204
- );
205
- }
206
-
207
- return definition;
208
- }
209
-
210
- /**
211
- * Generate column definition from a ColumnSchema object
212
- */
213
- public generateColumnDefinitionFromSchema(column: ColumnSchema): string {
214
- const columnName = this.escapeId(column.name);
215
- let type = column.type;
216
-
217
- if (column.length && !type.includes('(')) {
218
- type = `${type}(${column.length})`;
219
- } else if (column.precision !== undefined && !type.includes('(')) {
220
- if (column.scale !== undefined) {
221
- type = `${type}(${column.precision}, ${column.scale})`;
222
- } else {
223
- type = `${type}(${column.precision})`;
224
- }
225
- }
226
-
227
- let definition = `${columnName} ${type}`;
228
-
229
- if (column.isPrimaryKey) {
230
- definition += ' PRIMARY KEY';
231
- }
232
-
233
- if (!column.nullable && !column.isPrimaryKey) {
234
- definition += ' NOT NULL';
235
- }
236
-
237
- if (column.isUnique && !column.isPrimaryKey) {
238
- definition += ' UNIQUE';
239
- }
240
-
241
- if (column.defaultValue !== undefined) {
242
- definition += ` DEFAULT ${this.formatDefaultValue(column.defaultValue)}`;
243
- }
244
-
245
- return definition;
246
- }
247
-
248
- /**
249
- * Generate table constraints (indexes, foreign keys, etc.)
250
- */
251
- public generateTableConstraints<E>(meta: EntityMeta<E>): string[] {
252
- const constraints: string[] = [];
253
- const fieldKeys = getKeys(meta.fields) as FieldKey<E>[];
254
- const tableName = this.resolveTableName(meta.entity, meta);
255
-
256
- // Generate indexes from field options
257
- for (const key of fieldKeys) {
258
- const field = meta.fields[key];
259
- if (field?.index) {
260
- const columnName = this.resolveColumnName(key as string, field);
261
- const indexName = typeof field.index === 'string' ? field.index : `idx_${tableName}_${columnName}`;
262
- constraints.push(`INDEX ${this.escapeId(indexName)} (${this.escapeId(columnName)})`);
263
- }
264
- }
265
-
266
- // Generate foreign key constraints from references
267
- for (const key of fieldKeys) {
268
- const field = meta.fields[key];
269
- if (field?.reference) {
270
- const refEntity = field.reference();
271
- const refMeta = getMeta(refEntity);
272
- const refIdField = refMeta.fields[refMeta.id];
273
- const columnName = this.resolveColumnName(key as string, field);
274
- const refTableName = this.resolveTableName(refEntity, refMeta);
275
- const refColumnName = this.resolveColumnName(refMeta.id, refIdField);
276
- const fkName = `fk_${tableName}_${columnName}`;
277
-
278
- constraints.push(
279
- `CONSTRAINT ${this.escapeId(fkName)} FOREIGN KEY (${this.escapeId(columnName)}) ` +
280
- `REFERENCES ${this.escapeId(refTableName)} (${this.escapeId(refColumnName)})`,
281
- );
282
- }
283
- }
284
-
285
- return constraints;
286
- }
287
-
288
- getSqlType(field: FieldOptions, fieldType?: unknown): string {
289
- // Use explicit column type if specified
290
- if (field.columnType) {
291
- return this.mapColumnType(field.columnType, field);
292
- }
293
-
294
- // Handle special types
295
- if (field.type === 'json' || field.type === 'jsonb') {
296
- return this.mapColumnType(field.type as ColumnType, field);
297
- }
298
-
299
- if (field.type === 'vector') {
300
- return this.mapColumnType('vector', field);
301
- }
302
-
303
- // Infer from TypeScript type
304
- const type = fieldType ?? field.type;
305
-
306
- if (type === Number || type === 'number') {
307
- return field.precision ? this.mapColumnType('decimal', field) : 'BIGINT';
308
- }
309
-
310
- if (type === String || type === 'string') {
311
- const length = field.length ?? 255;
312
- return `VARCHAR(${length})`;
313
- }
314
-
315
- if (type === Boolean || type === 'boolean') {
316
- return this.getBooleanType();
317
- }
318
-
319
- if (type === Date || type === 'date') {
320
- return 'TIMESTAMP';
321
- }
322
-
323
- if (type === BigInt || type === 'bigint') {
324
- return 'BIGINT';
325
- }
326
-
327
- // Default to VARCHAR
328
- return `VARCHAR(${field.length ?? 255})`;
329
- }
330
-
331
- /**
332
- * Map uql column type to database-specific SQL type
333
- */
334
- public abstract mapColumnType(columnType: ColumnType, field: FieldOptions): string;
335
-
336
- /**
337
- * Get the boolean type for this database
338
- */
339
- public abstract getBooleanType(): string;
340
-
341
- /**
342
- * Generate ALTER COLUMN statements (database-specific)
343
- */
344
- public abstract generateAlterColumnStatements(
345
- tableName: string,
346
- column: ColumnSchema,
347
- newDefinition: string,
348
- ): string[];
349
-
350
- /**
351
- * Get table options (e.g., ENGINE for MySQL)
352
- */
353
- getTableOptions<E>(meta: EntityMeta<E>): string {
354
- return '';
355
- }
356
-
357
- /**
358
- * Generate column comment clause (if supported)
359
- */
360
- public abstract generateColumnComment(tableName: string, columnName: string, comment: string): string;
361
-
362
- /**
363
- * Format a default value for SQL
364
- */
365
- public formatDefaultValue(value: unknown): string {
366
- if (value === null) {
367
- return 'NULL';
368
- }
369
- if (typeof value === 'string') {
370
- return `'${value.replace(/'/g, "''")}'`;
371
- }
372
- if (typeof value === 'boolean') {
373
- return value ? 'TRUE' : 'FALSE';
374
- }
375
- if (typeof value === 'number' || typeof value === 'bigint') {
376
- return String(value);
377
- }
378
- if (value instanceof Date) {
379
- return `'${value.toISOString()}'`;
380
- }
381
- return String(value);
382
- }
383
-
384
- /**
385
- * Compare two schemas and return the differences
386
- */
387
- diffSchema<E>(entity: Type<E>, currentSchema: TableSchema | undefined): SchemaDiff | undefined {
388
- const meta = getMeta(entity);
389
-
390
- if (!currentSchema) {
391
- // Table doesn't exist, need to create
392
- return {
393
- tableName: this.resolveTableName(entity, meta),
394
- type: 'create',
395
- };
396
- }
397
-
398
- const columnsToAdd: ColumnSchema[] = [];
399
- const columnsToAlter: { from: ColumnSchema; to: ColumnSchema }[] = [];
400
- const columnsToDrop: string[] = [];
401
-
402
- const currentColumns = new Map(currentSchema.columns.map((c: any) => [c.name, c]));
403
- const fieldKeys = getKeys(meta.fields) as FieldKey<E>[];
404
-
405
- // Check for new or altered columns
406
- for (const key of fieldKeys) {
407
- const field = meta.fields[key];
408
- if (field?.virtual) continue;
409
-
410
- const columnName = this.resolveColumnName(key as string, field);
411
- const currentColumn = currentColumns.get(columnName);
412
-
413
- if (!currentColumn) {
414
- // Column needs to be added
415
- columnsToAdd.push(this.fieldToColumnSchema(key as string, field, meta));
416
- } else {
417
- // Check if column needs alteration
418
- const desiredColumn = this.fieldToColumnSchema(key as string, field, meta);
419
- if (this.columnsNeedAlteration(currentColumn, desiredColumn)) {
420
- columnsToAlter.push({ from: currentColumn, to: desiredColumn });
421
- }
422
- }
423
- currentColumns.delete(columnName);
424
- }
425
-
426
- // Remaining columns in currentColumns should be dropped
427
- for (const [name] of currentColumns) {
428
- columnsToDrop.push(name);
429
- }
430
-
431
- if (columnsToAdd.length === 0 && columnsToAlter.length === 0 && columnsToDrop.length === 0) {
432
- return undefined; // No changes needed
433
- }
434
-
435
- return {
436
- tableName: this.resolveTableName(entity, meta),
437
- type: 'alter',
438
- columnsToAdd: columnsToAdd.length > 0 ? columnsToAdd : undefined,
439
- columnsToAlter: columnsToAlter.length > 0 ? columnsToAlter : undefined,
440
- columnsToDrop: columnsToDrop.length > 0 ? columnsToDrop : undefined,
441
- };
442
- }
443
-
444
- /**
445
- * Convert field options to ColumnSchema
446
- */
447
- protected fieldToColumnSchema<E>(fieldKey: string, field: FieldOptions, meta: EntityMeta<E>): ColumnSchema {
448
- const isId = field.isId === true;
449
- const isPrimaryKey = isId && meta.id === fieldKey;
450
-
451
- return {
452
- name: this.resolveColumnName(fieldKey, field),
453
- type: this.getSqlType(field, field.type),
454
- nullable: field.nullable ?? !isPrimaryKey,
455
- defaultValue: field.defaultValue,
456
- isPrimaryKey,
457
- isAutoIncrement: isPrimaryKey && field.autoIncrement !== false && !field.onInsert,
458
- isUnique: field.unique ?? false,
459
- length: field.length,
460
- precision: field.precision,
461
- scale: field.scale,
462
- comment: field.comment,
463
- };
464
- }
465
-
466
- /**
467
- * Check if two columns differ enough to require alteration
468
- */
469
- protected columnsNeedAlteration(current: ColumnSchema, desired: ColumnSchema): boolean {
470
- // Compare relevant properties
471
- return (
472
- current.type.toLowerCase() !== desired.type.toLowerCase() ||
473
- current.nullable !== desired.nullable ||
474
- current.isUnique !== desired.isUnique ||
475
- JSON.stringify(current.defaultValue) !== JSON.stringify(desired.defaultValue)
476
- );
477
- }
478
- }
@@ -1,69 +0,0 @@
1
- import { beforeEach, describe, expect, it, jest } from 'bun:test';
2
- import type { QuerierPool, SqlQuerier } from '../../type/index.js';
3
- import { DatabaseMigrationStorage } from './databaseStorage.js';
4
-
5
- describe('DatabaseMigrationStorage', () => {
6
- let storage: DatabaseMigrationStorage;
7
- let pool: QuerierPool;
8
- let querier: SqlQuerier;
9
- let mockAll: ReturnType<typeof jest.fn>;
10
- let mockRun: ReturnType<typeof jest.fn>;
11
-
12
- beforeEach(() => {
13
- mockAll = jest.fn<any>().mockResolvedValue([]);
14
- mockRun = jest.fn<any>().mockResolvedValue({});
15
- querier = {
16
- all: mockAll,
17
- run: mockRun,
18
- release: jest.fn<any>().mockResolvedValue(undefined),
19
- dialect: {
20
- escapeId: (id: string) => `"${id}"`,
21
- placeholder: (index: number) => `$${index}`,
22
- escapeIdChar: '"',
23
- },
24
- } as any;
25
-
26
- pool = {
27
- getQuerier: jest.fn<any>().mockResolvedValue(querier) as any,
28
- } as any;
29
-
30
- storage = new DatabaseMigrationStorage(pool);
31
- });
32
-
33
- it('ensureStorage should create table', async () => {
34
- await storage.ensureStorage();
35
-
36
- expect(querier.run).toHaveBeenCalledWith(expect.stringContaining('CREATE TABLE IF NOT EXISTS "uql_migrations"'));
37
- expect(querier.release).toHaveBeenCalled();
38
- });
39
-
40
- it('executed should return migration names', async () => {
41
- // 1. ensureStorage
42
- mockRun.mockResolvedValueOnce({} as any);
43
- // 2. executed query
44
- mockAll.mockResolvedValueOnce([{ name: 'm1' }, { name: 'm2' }]);
45
-
46
- const executed = await storage.executed();
47
-
48
- expect(executed).toEqual(['m1', 'm2']);
49
- expect(querier.all).toHaveBeenCalledWith(expect.stringContaining('SELECT "name" FROM "uql_migrations"'));
50
- });
51
-
52
- it('logWithQuerier should insert record', async () => {
53
- await storage.logWithQuerier(querier, 'm3');
54
-
55
- expect(querier.run).toHaveBeenCalledWith(
56
- expect.stringContaining('INSERT INTO "uql_migrations" ("name") VALUES ($1)'),
57
- ['m3'],
58
- );
59
- });
60
-
61
- it('unlogWithQuerier should delete record', async () => {
62
- await storage.unlogWithQuerier(querier, 'm3');
63
-
64
- expect(querier.run).toHaveBeenCalledWith(
65
- expect.stringContaining('DELETE FROM "uql_migrations" WHERE "name" = $1'),
66
- ['m3'],
67
- );
68
- });
69
- });
@@ -1,100 +0,0 @@
1
- import type { MigrationStorage, QuerierPool, SqlQuerier } from '../../type/index.js';
2
- import { isSqlQuerier } from '../../type/index.js';
3
-
4
- /**
5
- * Migration metadata stored in the database
6
- */
7
- interface MigrationRecord {
8
- name: string;
9
- executed_at: Date | number;
10
- }
11
-
12
- /**
13
- * Stores migration state in a database table.
14
- * Uses the querier's dialect for escaping and placeholders.
15
- */
16
- export class DatabaseMigrationStorage implements MigrationStorage {
17
- private readonly tableName: string;
18
- private storageInitialized = false;
19
-
20
- constructor(
21
- private readonly querierPool: QuerierPool,
22
- options: {
23
- tableName?: string;
24
- } = {},
25
- ) {
26
- this.tableName = options.tableName ?? 'uql_migrations';
27
- }
28
-
29
- async ensureStorage(): Promise<void> {
30
- if (this.storageInitialized) {
31
- return;
32
- }
33
-
34
- const querier = await this.querierPool.getQuerier();
35
-
36
- if (!isSqlQuerier(querier)) {
37
- await querier.release();
38
- throw new Error('DatabaseMigrationStorage requires a SQL-based querier');
39
- }
40
-
41
- try {
42
- await this.createTableIfNotExists(querier);
43
- this.storageInitialized = true;
44
- } finally {
45
- await querier.release();
46
- }
47
- }
48
-
49
- private async createTableIfNotExists(querier: SqlQuerier): Promise<void> {
50
- const { escapeId } = querier.dialect;
51
- const sql = `
52
- CREATE TABLE IF NOT EXISTS ${escapeId(this.tableName)} (
53
- ${escapeId('name')} VARCHAR(255) PRIMARY KEY,
54
- ${escapeId('executed_at')} TIMESTAMP DEFAULT CURRENT_TIMESTAMP
55
- )
56
- `;
57
-
58
- await querier.run(sql);
59
- }
60
-
61
- async executed(): Promise<string[]> {
62
- await this.ensureStorage();
63
-
64
- const querier = await this.querierPool.getQuerier();
65
-
66
- if (!isSqlQuerier(querier)) {
67
- await querier.release();
68
- throw new Error('DatabaseMigrationStorage requires a SQL-based querier');
69
- }
70
-
71
- try {
72
- const { escapeId } = querier.dialect;
73
- const sql = `SELECT ${escapeId('name')} FROM ${escapeId(this.tableName)} ORDER BY ${escapeId('name')} ASC`;
74
- const results = await querier.all<MigrationRecord>(sql);
75
- return results.map((r: any) => r.name);
76
- } finally {
77
- await querier.release();
78
- }
79
- }
80
-
81
- /**
82
- * Log a migration as executed - uses provided querier (within transaction)
83
- */
84
- async logWithQuerier(querier: SqlQuerier, migrationName: string): Promise<void> {
85
- await this.ensureStorage();
86
- const { escapeId, placeholder } = querier.dialect;
87
- const sql = `INSERT INTO ${escapeId(this.tableName)} (${escapeId('name')}) VALUES (${placeholder(1)})`;
88
- await querier.run(sql, [migrationName]);
89
- }
90
-
91
- /**
92
- * Unlog a migration - uses provided querier (within transaction)
93
- */
94
- async unlogWithQuerier(querier: SqlQuerier, migrationName: string): Promise<void> {
95
- await this.ensureStorage();
96
- const { escapeId, placeholder } = querier.dialect;
97
- const sql = `DELETE FROM ${escapeId(this.tableName)} WHERE ${escapeId('name')} = ${placeholder(1)}`;
98
- await querier.run(sql, [migrationName]);
99
- }
100
- }
@@ -1,2 +0,0 @@
1
- export * from './databaseStorage.js';
2
- export * from './jsonStorage.js';
@@ -1,58 +0,0 @@
1
- import { mkdir, readFile, writeFile } from 'node:fs/promises';
2
- import { dirname } from 'node:path';
3
- import type { MigrationStorage, SqlQuerier } from '../../type/index.js';
4
-
5
- /**
6
- * Stores migration state in a JSON file (useful for development/testing)
7
- */
8
- export class JsonMigrationStorage implements MigrationStorage {
9
- private readonly filePath: string;
10
- private cache: string[] | null = null;
11
-
12
- constructor(filePath = './migrations/.uql-migrations.json') {
13
- this.filePath = filePath;
14
- }
15
-
16
- async ensureStorage(): Promise<void> {
17
- try {
18
- await this.load();
19
- } catch {
20
- // File doesn't exist, create it
21
- await this.save([]);
22
- }
23
- }
24
-
25
- async executed(): Promise<string[]> {
26
- await this.ensureStorage();
27
- return this.cache ?? [];
28
- }
29
-
30
- async logWithQuerier(_querier: SqlQuerier, migrationName: string): Promise<void> {
31
- const executed = await this.executed();
32
- if (!executed.includes(migrationName)) {
33
- executed.push(migrationName);
34
- executed.sort();
35
- await this.save(executed);
36
- }
37
- }
38
-
39
- async unlogWithQuerier(_querier: SqlQuerier, migrationName: string): Promise<void> {
40
- const executed = await this.executed();
41
- const index = executed.indexOf(migrationName);
42
- if (index !== -1) {
43
- executed.splice(index, 1);
44
- await this.save(executed);
45
- }
46
- }
47
-
48
- private async load(): Promise<void> {
49
- const content = await readFile(this.filePath, 'utf-8');
50
- this.cache = JSON.parse(content);
51
- }
52
-
53
- private async save(migrations: string[]): Promise<void> {
54
- await mkdir(dirname(this.filePath), { recursive: true });
55
- await writeFile(this.filePath, JSON.stringify(migrations, null, 2), 'utf-8');
56
- this.cache = migrations;
57
- }
58
- }