@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,75 +0,0 @@
1
- import { beforeEach, describe, expect, it, jest } from 'bun:test';
2
- import type { MongoQuerier, QuerierPool } from '../../type/index.js';
3
- import { MongoSchemaIntrospector } from './mongoIntrospector.js';
4
-
5
- describe('MongoSchemaIntrospector', () => {
6
- let introspector: MongoSchemaIntrospector;
7
- let pool: QuerierPool;
8
- let querier: MongoQuerier;
9
- let db: any;
10
-
11
- beforeEach(() => {
12
- db = {
13
- listCollections: jest.fn<any>().mockReturnValue({
14
- toArray: jest.fn<any>().mockResolvedValue([]),
15
- }),
16
- collection: jest.fn<any>().mockReturnValue({
17
- indexes: jest.fn<any>().mockResolvedValue([]),
18
- }),
19
- };
20
-
21
- querier = {
22
- db,
23
- release: jest.fn<any>().mockResolvedValue(undefined) as any,
24
- } as any;
25
-
26
- pool = {
27
- getQuerier: jest.fn<any>().mockResolvedValue(querier) as any,
28
- } as any;
29
-
30
- introspector = new MongoSchemaIntrospector(pool);
31
- });
32
-
33
- it('getTableNames should return collection names', async () => {
34
- db.listCollections.mockReturnValueOnce({
35
- toArray: jest.fn<any>().mockResolvedValue([{ name: 'users' }, { name: 'posts' }]),
36
- });
37
-
38
- const names = await introspector.getTableNames();
39
-
40
- expect(names).toEqual(['users', 'posts']);
41
- });
42
-
43
- it('getTableSchema should return collection details', async () => {
44
- db.listCollections.mockReturnValueOnce({
45
- toArray: jest.fn<any>().mockResolvedValue([{ name: 'users' }]),
46
- });
47
- db.collection.mockReturnValueOnce({
48
- indexes: jest.fn<any>().mockResolvedValue([
49
- { name: '_id_', key: { _id: 1 } },
50
- { name: 'idx_username', key: { username: 1 }, unique: true },
51
- ]),
52
- });
53
-
54
- const schema = await introspector.getTableSchema('users');
55
-
56
- expect(schema).toBeDefined();
57
- expect(schema?.name).toBe('users');
58
- expect(schema?.indexes).toHaveLength(2);
59
- expect(schema?.indexes?.[1]).toMatchObject({
60
- name: 'idx_username',
61
- columns: ['username'],
62
- unique: true,
63
- });
64
- });
65
-
66
- it('getTableSchema should return undefined for non-existent collection', async () => {
67
- db.listCollections.mockReturnValueOnce({
68
- toArray: jest.fn<any>().mockResolvedValue([]),
69
- });
70
-
71
- const schema = await introspector.getTableSchema('non_existent');
72
-
73
- expect(schema).toBeUndefined();
74
- });
75
- });
@@ -1,47 +0,0 @@
1
- import type { MongoQuerier, QuerierPool, SchemaIntrospector, TableSchema } from '../../type/index.js';
2
-
3
- export class MongoSchemaIntrospector implements SchemaIntrospector {
4
- constructor(private readonly querierPool: QuerierPool) {}
5
-
6
- async getTableSchema(tableName: string): Promise<TableSchema | undefined> {
7
- const querier = await this.querierPool.getQuerier();
8
- try {
9
- const { db } = querier as MongoQuerier;
10
- const collections = await db.listCollections({ name: tableName }).toArray();
11
- if (collections.length === 0) {
12
- return undefined;
13
- }
14
-
15
- // MongoDB doesn't have a fixed schema, but we can look at the indexes
16
- const indexes = await db.collection(tableName).indexes();
17
-
18
- return {
19
- name: tableName,
20
- columns: [], // We don't have columns in Mongo
21
- indexes: indexes.map((idx: any) => ({
22
- name: idx.name,
23
- columns: Object.keys(idx.key),
24
- unique: !!idx.unique,
25
- })),
26
- };
27
- } finally {
28
- await querier.release();
29
- }
30
- }
31
-
32
- async getTableNames(): Promise<string[]> {
33
- const querier = await this.querierPool.getQuerier();
34
- try {
35
- const { db } = querier as MongoQuerier;
36
- const collections = await db.listCollections().toArray();
37
- return collections.map((c: any) => c.name);
38
- } finally {
39
- await querier.release();
40
- }
41
- }
42
-
43
- async tableExists(tableName: string): Promise<boolean> {
44
- const names = await this.getTableNames();
45
- return names.includes(tableName);
46
- }
47
- }
@@ -1,113 +0,0 @@
1
- import { beforeEach, describe, expect, it, jest } from 'bun:test';
2
- import type { QuerierPool, SqlQuerier } from '../../type/index.js';
3
- import { MysqlSchemaIntrospector } from './mysqlIntrospector.js';
4
-
5
- describe('MysqlSchemaIntrospector', () => {
6
- let introspector: MysqlSchemaIntrospector;
7
- let pool: QuerierPool;
8
- let querier: SqlQuerier;
9
-
10
- let mockAll: ReturnType<typeof jest.fn>;
11
- let mockRun: ReturnType<typeof jest.fn>;
12
- let mockRelease: ReturnType<typeof jest.fn>;
13
- let mockGetQuerier: ReturnType<typeof jest.fn>;
14
-
15
- beforeEach(() => {
16
- mockAll = jest.fn<any>().mockResolvedValue([]);
17
- mockRun = jest.fn<any>().mockResolvedValue({});
18
- mockRelease = jest.fn<any>().mockResolvedValue(undefined);
19
-
20
- querier = {
21
- all: mockAll,
22
- run: mockRun,
23
- release: mockRelease,
24
- dialect: { escapeIdChar: '`' },
25
- } as any;
26
-
27
- mockGetQuerier = jest.fn<any>().mockResolvedValue(querier);
28
- pool = {
29
- getQuerier: mockGetQuerier,
30
- } as any;
31
-
32
- introspector = new MysqlSchemaIntrospector(pool);
33
- });
34
-
35
- it('getTableNames should return a list of tables', async () => {
36
- mockAll.mockResolvedValueOnce([{ table_name: 'users' }, { table_name: 'posts' }]);
37
-
38
- const names = await introspector.getTableNames();
39
-
40
- expect(names).toEqual(['users', 'posts']);
41
- expect(querier.all).toHaveBeenCalledWith(expect.stringContaining('information_schema.TABLES'));
42
- });
43
-
44
- it('getTableSchema should return table details', async () => {
45
- // 1. tableExists check
46
- mockAll.mockResolvedValueOnce([{ count: 1 }]);
47
- // 2. getColumns
48
- mockAll.mockResolvedValueOnce([
49
- {
50
- column_name: 'id',
51
- data_type: 'int',
52
- column_type: 'int(11)',
53
- is_nullable: 'NO',
54
- column_default: null,
55
- character_maximum_length: null,
56
- numeric_precision: 10,
57
- numeric_scale: 0,
58
- column_key: 'PRI',
59
- extra: 'auto_increment',
60
- column_comment: 'User ID',
61
- },
62
- {
63
- column_name: 'email',
64
- data_type: 'varchar',
65
- column_type: 'varchar(255)',
66
- is_nullable: 'YES',
67
- column_default: null,
68
- character_maximum_length: 255,
69
- numeric_precision: null,
70
- numeric_scale: null,
71
- column_key: 'UNI',
72
- extra: '',
73
- column_comment: null,
74
- },
75
- ]);
76
- // 3. getIndexes
77
- mockAll.mockResolvedValueOnce([
78
- {
79
- index_name: 'email_unique',
80
- columns: 'email',
81
- is_unique: 1,
82
- },
83
- ]);
84
- // 4. getForeignKeys
85
- mockAll.mockResolvedValueOnce([]);
86
- // 5. getPrimaryKey
87
- mockAll.mockResolvedValueOnce([{ column_name: 'id' }]);
88
-
89
- const schema = await introspector.getTableSchema('users');
90
-
91
- expect(schema).toBeDefined();
92
- expect(schema?.name).toBe('users');
93
- expect(schema?.columns).toHaveLength(2);
94
- expect(schema?.columns[0]).toMatchObject({
95
- name: 'id',
96
- type: 'INT',
97
- nullable: false,
98
- isAutoIncrement: true,
99
- isPrimaryKey: true,
100
- });
101
- expect(schema?.indexes).toHaveLength(1);
102
- expect(schema?.indexes?.[0].name).toBe('email_unique');
103
- expect(schema?.indexes?.[0].unique).toBe(true);
104
- });
105
-
106
- it('getTableSchema should return undefined for non-existent table', async () => {
107
- mockAll.mockResolvedValueOnce([{ count: 0 }]);
108
-
109
- const schema = await introspector.getTableSchema('non_existent');
110
-
111
- expect(schema).toBeUndefined();
112
- });
113
- });
@@ -1,278 +0,0 @@
1
- import type {
2
- ColumnSchema,
3
- ForeignKeySchema,
4
- IndexSchema,
5
- QuerierPool,
6
- SchemaIntrospector,
7
- SqlQuerier,
8
- TableSchema,
9
- } from '../../type/index.js';
10
- import { isSqlQuerier } from '../../type/index.js';
11
-
12
- /**
13
- * MySQL/MariaDB schema introspector.
14
- * Works with both MySQL and MariaDB as they share the same information_schema structure.
15
- */
16
- export class MysqlSchemaIntrospector implements SchemaIntrospector {
17
- constructor(private readonly querierPool: QuerierPool) {}
18
-
19
- async getTableSchema(tableName: string): Promise<TableSchema | undefined> {
20
- const querier = await this.getQuerier();
21
-
22
- try {
23
- const exists = await this.tableExistsInternal(querier, tableName);
24
- if (!exists) {
25
- return undefined;
26
- }
27
-
28
- const [columns, indexes, foreignKeys, primaryKey] = await Promise.all([
29
- this.getColumns(querier, tableName),
30
- this.getIndexes(querier, tableName),
31
- this.getForeignKeys(querier, tableName),
32
- this.getPrimaryKey(querier, tableName),
33
- ]);
34
-
35
- return {
36
- name: tableName,
37
- columns,
38
- primaryKey,
39
- indexes,
40
- foreignKeys,
41
- };
42
- } finally {
43
- await querier.release();
44
- }
45
- }
46
-
47
- async getTableNames(): Promise<string[]> {
48
- const querier = await this.getQuerier();
49
-
50
- try {
51
- const sql = `
52
- SELECT TABLE_NAME as table_name
53
- FROM information_schema.TABLES
54
- WHERE TABLE_SCHEMA = DATABASE()
55
- AND TABLE_TYPE = 'BASE TABLE'
56
- ORDER BY TABLE_NAME
57
- `;
58
-
59
- const results = await querier.all<{ table_name: string }>(sql);
60
- return results.map((r: any) => r.table_name);
61
- } finally {
62
- await querier.release();
63
- }
64
- }
65
-
66
- async tableExists(tableName: string): Promise<boolean> {
67
- const querier = await this.getQuerier();
68
-
69
- try {
70
- return this.tableExistsInternal(querier, tableName);
71
- } finally {
72
- await querier.release();
73
- }
74
- }
75
-
76
- private async tableExistsInternal(querier: SqlQuerier, tableName: string): Promise<boolean> {
77
- const sql = `
78
- SELECT COUNT(*) as count
79
- FROM information_schema.TABLES
80
- WHERE TABLE_SCHEMA = DATABASE()
81
- AND TABLE_NAME = ?
82
- `;
83
-
84
- const results = await querier.all<{ count: number }>(sql, [tableName]);
85
- return (results[0]?.count ?? 0) > 0;
86
- }
87
-
88
- private async getQuerier(): Promise<SqlQuerier> {
89
- const querier = await this.querierPool.getQuerier();
90
-
91
- if (!isSqlQuerier(querier)) {
92
- await querier.release();
93
- throw new Error('MysqlSchemaIntrospector requires a SQL-based querier');
94
- }
95
-
96
- return querier;
97
- }
98
-
99
- private async getColumns(querier: SqlQuerier, tableName: string): Promise<ColumnSchema[]> {
100
- const sql = `
101
- SELECT
102
- COLUMN_NAME as column_name,
103
- DATA_TYPE as data_type,
104
- COLUMN_TYPE as column_type,
105
- IS_NULLABLE as is_nullable,
106
- COLUMN_DEFAULT as column_default,
107
- CHARACTER_MAXIMUM_LENGTH as character_maximum_length,
108
- NUMERIC_PRECISION as numeric_precision,
109
- NUMERIC_SCALE as numeric_scale,
110
- COLUMN_KEY as column_key,
111
- EXTRA as extra,
112
- COLUMN_COMMENT as column_comment
113
- FROM information_schema.COLUMNS
114
- WHERE TABLE_SCHEMA = DATABASE()
115
- AND TABLE_NAME = ?
116
- ORDER BY ORDINAL_POSITION
117
- `;
118
-
119
- const results = await querier.all<{
120
- column_name: string;
121
- data_type: string;
122
- column_type: string;
123
- is_nullable: string;
124
- column_default: string | null;
125
- character_maximum_length: number | null;
126
- numeric_precision: number | null;
127
- numeric_scale: number | null;
128
- column_key: string;
129
- extra: string;
130
- column_comment: string | null;
131
- }>(sql, [tableName]);
132
-
133
- return results.map((row: any) => ({
134
- name: row.column_name,
135
- type: row.data_type.toUpperCase(),
136
- nullable: row.is_nullable === 'YES',
137
- defaultValue: this.parseDefaultValue(row.column_default),
138
- isPrimaryKey: row.column_key === 'PRI',
139
- isAutoIncrement: row.extra.toLowerCase().includes('auto_increment'),
140
- isUnique: row.column_key === 'UNI',
141
- length: row.character_maximum_length ?? undefined,
142
- precision: row.numeric_precision ?? undefined,
143
- scale: row.numeric_scale ?? undefined,
144
- comment: row.column_comment || undefined,
145
- }));
146
- }
147
-
148
- private async getIndexes(querier: SqlQuerier, tableName: string): Promise<IndexSchema[]> {
149
- const sql = `
150
- SELECT
151
- INDEX_NAME as index_name,
152
- GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX) as columns,
153
- NOT NON_UNIQUE as is_unique
154
- FROM information_schema.STATISTICS
155
- WHERE TABLE_SCHEMA = DATABASE()
156
- AND TABLE_NAME = ?
157
- AND INDEX_NAME != 'PRIMARY'
158
- GROUP BY INDEX_NAME, NON_UNIQUE
159
- ORDER BY INDEX_NAME
160
- `;
161
-
162
- const results = await querier.all<{
163
- index_name: string;
164
- columns: string;
165
- is_unique: number;
166
- }>(sql, [tableName]);
167
-
168
- return results.map((row: any) => ({
169
- name: row.index_name,
170
- columns: row.columns.split(','),
171
- unique: Boolean(row.is_unique),
172
- }));
173
- }
174
-
175
- private async getForeignKeys(querier: SqlQuerier, tableName: string): Promise<ForeignKeySchema[]> {
176
- const sql = `
177
- SELECT
178
- kcu.CONSTRAINT_NAME as constraint_name,
179
- GROUP_CONCAT(kcu.COLUMN_NAME ORDER BY kcu.ORDINAL_POSITION) as columns,
180
- kcu.REFERENCED_TABLE_NAME as referenced_table,
181
- GROUP_CONCAT(kcu.REFERENCED_COLUMN_NAME ORDER BY kcu.ORDINAL_POSITION) as referenced_columns,
182
- rc.DELETE_RULE as delete_rule,
183
- rc.UPDATE_RULE as update_rule
184
- FROM information_schema.KEY_COLUMN_USAGE kcu
185
- JOIN information_schema.REFERENTIAL_CONSTRAINTS rc
186
- ON kcu.CONSTRAINT_NAME = rc.CONSTRAINT_NAME
187
- AND kcu.TABLE_SCHEMA = rc.CONSTRAINT_SCHEMA
188
- WHERE kcu.TABLE_SCHEMA = DATABASE()
189
- AND kcu.TABLE_NAME = ?
190
- AND kcu.REFERENCED_TABLE_NAME IS NOT NULL
191
- GROUP BY kcu.CONSTRAINT_NAME, kcu.REFERENCED_TABLE_NAME, rc.DELETE_RULE, rc.UPDATE_RULE
192
- ORDER BY kcu.CONSTRAINT_NAME
193
- `;
194
-
195
- const results = await querier.all<{
196
- constraint_name: string;
197
- columns: string;
198
- referenced_table: string;
199
- referenced_columns: string;
200
- delete_rule: string;
201
- update_rule: string;
202
- }>(sql, [tableName]);
203
-
204
- return results.map((row: any) => ({
205
- name: row.constraint_name,
206
- columns: row.columns.split(','),
207
- referencedTable: row.referenced_table,
208
- referencedColumns: row.referenced_columns.split(','),
209
- onDelete: this.normalizeReferentialAction(row.delete_rule),
210
- onUpdate: this.normalizeReferentialAction(row.update_rule),
211
- }));
212
- }
213
-
214
- private async getPrimaryKey(querier: SqlQuerier, tableName: string): Promise<string[] | undefined> {
215
- const sql = `
216
- SELECT COLUMN_NAME as column_name
217
- FROM information_schema.KEY_COLUMN_USAGE
218
- WHERE TABLE_SCHEMA = DATABASE()
219
- AND TABLE_NAME = ?
220
- AND CONSTRAINT_NAME = 'PRIMARY'
221
- ORDER BY ORDINAL_POSITION
222
- `;
223
-
224
- const results = await querier.all<{ column_name: string }>(sql, [tableName]);
225
-
226
- if (results.length === 0) {
227
- return undefined;
228
- }
229
-
230
- return results.map((r: any) => r.column_name);
231
- }
232
-
233
- private parseDefaultValue(defaultValue: string | null): unknown {
234
- if (defaultValue === null) {
235
- return undefined;
236
- }
237
-
238
- // Check for common patterns
239
- if (defaultValue === 'NULL') {
240
- return null;
241
- }
242
- if (defaultValue === 'CURRENT_TIMESTAMP') {
243
- return defaultValue;
244
- }
245
- if (/^'.*'$/.test(defaultValue)) {
246
- return defaultValue.slice(1, -1);
247
- }
248
- if (/^-?\d+$/.test(defaultValue)) {
249
- return Number.parseInt(defaultValue, 10);
250
- }
251
- if (/^-?\d+\.\d+$/.test(defaultValue)) {
252
- return Number.parseFloat(defaultValue);
253
- }
254
-
255
- return defaultValue;
256
- }
257
-
258
- private normalizeReferentialAction(action: string): 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION' | undefined {
259
- switch (action.toUpperCase()) {
260
- case 'CASCADE':
261
- return 'CASCADE';
262
- case 'SET NULL':
263
- return 'SET NULL';
264
- case 'RESTRICT':
265
- return 'RESTRICT';
266
- case 'NO ACTION':
267
- return 'NO ACTION';
268
- default:
269
- return undefined;
270
- }
271
- }
272
- }
273
-
274
- /**
275
- * Alias for MysqlSchemaIntrospector.
276
- * MariaDB uses the same information_schema structure as MySQL.
277
- */
278
- export const MariadbSchemaIntrospector = MysqlSchemaIntrospector;
@@ -1,112 +0,0 @@
1
- import { beforeEach, describe, expect, it, jest } from 'bun:test';
2
- import type { QuerierPool, SqlQuerier } from '../../type/index.js';
3
- import { PostgresSchemaIntrospector } from './postgresIntrospector.js';
4
-
5
- describe('PostgresSchemaIntrospector', () => {
6
- let introspector: PostgresSchemaIntrospector;
7
- let pool: QuerierPool;
8
- let querier: SqlQuerier;
9
-
10
- let mockAll: ReturnType<typeof jest.fn>;
11
- let mockRun: ReturnType<typeof jest.fn>;
12
- let mockRelease: ReturnType<typeof jest.fn>;
13
- let mockGetQuerier: ReturnType<typeof jest.fn>;
14
-
15
- beforeEach(() => {
16
- mockAll = jest.fn<any>().mockResolvedValue([]);
17
- mockRun = jest.fn<any>().mockResolvedValue({});
18
- mockRelease = jest.fn<any>().mockResolvedValue(undefined);
19
-
20
- querier = {
21
- all: mockAll,
22
- run: mockRun,
23
- release: mockRelease,
24
- dialect: { escapeIdChar: '"' },
25
- } as any;
26
-
27
- mockGetQuerier = jest.fn<any>().mockResolvedValue(querier);
28
- pool = {
29
- getQuerier: mockGetQuerier,
30
- } as any;
31
-
32
- introspector = new PostgresSchemaIntrospector(pool);
33
- });
34
-
35
- it('getTableNames should return a list of tables', async () => {
36
- mockAll.mockResolvedValueOnce([{ table_name: 'users' }, { table_name: 'posts' }]);
37
-
38
- const names = await introspector.getTableNames();
39
-
40
- expect(names).toEqual(['users', 'posts']);
41
- expect(querier.all).toHaveBeenCalledWith(expect.stringContaining('information_schema.tables'));
42
- });
43
-
44
- it('getTableSchema should return table details', async () => {
45
- // 1. tableExists check
46
- mockAll.mockResolvedValueOnce([{ exists: true }]);
47
- // 2. getColumns
48
- mockAll.mockResolvedValueOnce([
49
- {
50
- column_name: 'id',
51
- data_type: 'integer',
52
- udt_name: 'int4',
53
- is_nullable: 'NO',
54
- column_default: "nextval('users_id_seq'::regclass)",
55
- character_maximum_length: null,
56
- numeric_precision: 32,
57
- numeric_scale: 0,
58
- is_primary_key: true,
59
- is_unique: false,
60
- column_comment: 'User ID',
61
- },
62
- {
63
- column_name: 'name',
64
- data_type: 'character varying',
65
- udt_name: 'varchar',
66
- is_nullable: 'YES',
67
- column_default: null,
68
- character_maximum_length: 255,
69
- numeric_precision: null,
70
- numeric_scale: null,
71
- is_primary_key: false,
72
- is_unique: false,
73
- column_comment: null,
74
- },
75
- ]);
76
- // 3. getIndexes
77
- mockAll.mockResolvedValueOnce([
78
- {
79
- index_name: 'idx_users_name',
80
- columns: ['name'],
81
- is_unique: false,
82
- },
83
- ]);
84
- // 4. getForeignKeys
85
- mockAll.mockResolvedValueOnce([]);
86
- // 5. getPrimaryKey
87
- mockAll.mockResolvedValueOnce([{ column_name: 'id' }]);
88
-
89
- const schema = await introspector.getTableSchema('users');
90
-
91
- expect(schema).toBeDefined();
92
- expect(schema?.name).toBe('users');
93
- expect(schema?.columns).toHaveLength(2);
94
- expect(schema?.columns[0]).toMatchObject({
95
- name: 'id',
96
- type: 'INTEGER',
97
- nullable: false,
98
- isAutoIncrement: true,
99
- isPrimaryKey: true,
100
- });
101
- expect(schema?.indexes).toHaveLength(1);
102
- expect(schema?.indexes?.[0].name).toBe('idx_users_name');
103
- });
104
-
105
- it('getTableSchema should return undefined for non-existent table', async () => {
106
- mockAll.mockResolvedValueOnce([{ exists: false }]);
107
-
108
- const schema = await introspector.getTableSchema('non_existent');
109
-
110
- expect(schema).toBeUndefined();
111
- });
112
- });