@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,805 +0,0 @@
1
- import { getMeta } from '../entity/index.js';
2
- import {
3
- type EntityMeta,
4
- type FieldKey,
5
- type FieldOptions,
6
- type NamingStrategy,
7
- type Query,
8
- type QueryComparisonOptions,
9
- type QueryConflictPaths,
10
- type QueryContext,
11
- type QueryDialect,
12
- type QueryOptions,
13
- type QueryPager,
14
- QueryRaw,
15
- type QueryRawFnOptions,
16
- type QuerySearch,
17
- type QuerySelect,
18
- type QuerySelectArray,
19
- type QuerySelectOptions,
20
- type QuerySort,
21
- type QuerySortDirection,
22
- type QueryTextSearchOptions,
23
- type QueryWhere,
24
- type QueryWhereArray,
25
- type QueryWhereFieldOperatorMap,
26
- type QueryWhereMap,
27
- type QueryWhereOptions,
28
- type SqlQueryDialect,
29
- type Type,
30
- } from '../type/index.js';
31
-
32
- import {
33
- buildSortMap,
34
- buldQueryWhereAsMap,
35
- type CallbackKey,
36
- escapeSqlId,
37
- fillOnFields,
38
- filterFieldKeys,
39
- filterRelationKeys,
40
- flatObject,
41
- getFieldCallbackValue,
42
- getFieldKeys,
43
- getKeys,
44
- hasKeys,
45
- isSelectingRelations,
46
- raw,
47
- } from '../util/index.js';
48
-
49
- import { AbstractDialect } from './abstractDialect.js';
50
- import { SqlQueryContext } from './queryContext.js';
51
-
52
- export abstract class AbstractSqlDialect extends AbstractDialect implements QueryDialect, SqlQueryDialect {
53
- constructor(
54
- namingStrategy?: NamingStrategy,
55
- readonly escapeIdChar: '`' | '"' = '`',
56
- readonly beginTransactionCommand: string = 'START TRANSACTION',
57
- readonly commitTransactionCommand: string = 'COMMIT',
58
- readonly rollbackTransactionCommand: string = 'ROLLBACK',
59
- ) {
60
- super(namingStrategy);
61
- }
62
-
63
- createContext(): QueryContext {
64
- return new SqlQueryContext(this);
65
- }
66
-
67
- addValue(values: unknown[], value: unknown): string {
68
- values.push(value ?? null);
69
- return this.placeholder(values.length);
70
- }
71
-
72
- placeholder(_index: number): string {
73
- return '?';
74
- }
75
-
76
- returningId<E>(entity: Type<E>): string {
77
- const meta = getMeta(entity);
78
- const idName = this.resolveColumnName(meta.id, meta.fields[meta.id]);
79
- return `RETURNING ${this.escapeId(idName)} ${this.escapeId('id')}`;
80
- }
81
-
82
- search<E>(ctx: QueryContext, entity: Type<E>, q: Query<E> = {}, opts: QueryOptions = {}): void {
83
- const meta = getMeta(entity);
84
- const tableName = this.resolveTableName(entity, meta);
85
- const prefix = (opts.prefix ?? (opts.autoPrefix || isSelectingRelations(meta, q.$select))) ? tableName : undefined;
86
- opts = { ...opts, prefix };
87
- this.where<E>(ctx, entity, q.$where, opts);
88
- this.sort<E>(ctx, entity, q.$sort, opts);
89
- this.pager(ctx, q);
90
- }
91
-
92
- selectFields<E>(ctx: QueryContext, entity: Type<E>, select: QuerySelect<E>, opts: QuerySelectOptions = {}): void {
93
- const meta = getMeta(entity);
94
- const prefix = opts.prefix ? opts.prefix + '.' : '';
95
- const escapedPrefix = this.escapeId(opts.prefix, true, true);
96
-
97
- let selectArr: QuerySelectArray<E>;
98
-
99
- if (select) {
100
- if (Array.isArray(select)) {
101
- selectArr = select;
102
- } else {
103
- const selectPositive = getKeys(select).filter((it) => select[it]) as FieldKey<E>[];
104
- selectArr = selectPositive.length
105
- ? selectPositive
106
- : (getFieldKeys(meta.fields).filter((it) => !(it in select)) as FieldKey<E>[]);
107
- }
108
- selectArr = selectArr.filter((it) => it instanceof QueryRaw || it in meta.fields);
109
- if (opts.prefix && !selectArr.includes(meta.id)) {
110
- selectArr = [meta.id, ...selectArr];
111
- }
112
- } else {
113
- selectArr = getFieldKeys(meta.fields) as FieldKey<E>[];
114
- }
115
-
116
- if (!selectArr.length) {
117
- ctx.append(escapedPrefix + '*');
118
- return;
119
- }
120
-
121
- selectArr.forEach((key, index) => {
122
- if (index > 0) ctx.append(', ');
123
- if (key instanceof QueryRaw) {
124
- this.getRawValue(ctx, {
125
- value: key,
126
- prefix: opts.prefix,
127
- escapedPrefix,
128
- autoPrefixAlias: opts.autoPrefixAlias,
129
- });
130
- } else {
131
- const field = meta.fields[key as FieldKey<E>];
132
- const columnName = this.resolveColumnName(key, field);
133
- if (field.virtual) {
134
- this.getRawValue(ctx, {
135
- value: raw(field.virtual.value, key as string),
136
- prefix: opts.prefix,
137
- escapedPrefix,
138
- autoPrefixAlias: opts.autoPrefixAlias,
139
- });
140
- } else {
141
- ctx.append(escapedPrefix + this.escapeId(columnName));
142
- }
143
- if (!field.virtual && (columnName !== key || opts.autoPrefixAlias)) {
144
- const aliasStr = (prefix + key) as string;
145
- // Replace dots with underscores for alias to avoid syntax errors
146
- const safeAlias = aliasStr.replace(/\./g, '_');
147
- ctx.append(' ' + this.escapeId(safeAlias, true));
148
- }
149
- }
150
- });
151
- }
152
-
153
- select<E>(ctx: QueryContext, entity: Type<E>, select: QuerySelect<E>, opts: QueryOptions = {}): void {
154
- const meta = getMeta(entity);
155
- const tableName = this.resolveTableName(entity, meta);
156
- const prefix = (opts.prefix ?? (opts.autoPrefix || isSelectingRelations(meta, select))) ? tableName : undefined;
157
-
158
- ctx.append('SELECT ');
159
- this.selectFields(ctx, entity, select, { prefix });
160
- // Add related fields BEFORE FROM clause
161
- this.selectRelationFields(ctx, entity, select, { prefix });
162
- ctx.append(` FROM ${this.escapeId(tableName)}`);
163
- // Add JOINs AFTER FROM clause
164
- this.selectRelationJoins(ctx, entity, select, { prefix });
165
- }
166
-
167
- protected selectRelationFields<E>(
168
- ctx: QueryContext,
169
- entity: Type<E>,
170
- select: QuerySelect<E>,
171
- opts: { prefix?: string } = {},
172
- ): void {
173
- if (Array.isArray(select)) {
174
- return;
175
- }
176
-
177
- const meta = getMeta(entity);
178
- const tableName = this.resolveTableName(entity, meta);
179
- const relKeys = filterRelationKeys(meta, select);
180
- const isSelectArray = Array.isArray(select);
181
- const prefix = opts.prefix;
182
-
183
- for (const relKey of relKeys) {
184
- const relOpts = meta.relations[relKey];
185
-
186
- if (relOpts.cardinality === '1m' || relOpts.cardinality === 'mm') {
187
- continue;
188
- }
189
-
190
- const isFirstLevel = prefix === tableName;
191
- const joinRelAlias = isFirstLevel ? relKey : prefix ? prefix + '.' + relKey : relKey;
192
- const relEntity = relOpts.entity();
193
- const relSelect = select[relKey as string];
194
- const relQuery = isSelectArray ? {} : Array.isArray(relSelect) ? { $select: relSelect } : relSelect;
195
-
196
- ctx.append(', ');
197
- this.selectFields(ctx, relEntity, relQuery.$select, {
198
- prefix: joinRelAlias,
199
- autoPrefixAlias: true,
200
- });
201
-
202
- // Recursively add nested relation fields
203
- this.selectRelationFields(ctx, relEntity, relQuery.$select, {
204
- prefix: joinRelAlias,
205
- });
206
- }
207
- }
208
-
209
- protected selectRelationJoins<E>(
210
- ctx: QueryContext,
211
- entity: Type<E>,
212
- select: QuerySelect<E>,
213
- opts: { prefix?: string } = {},
214
- ): void {
215
- if (Array.isArray(select)) {
216
- return;
217
- }
218
-
219
- const meta = getMeta(entity);
220
- const tableName = this.resolveTableName(entity, meta);
221
- const relKeys = filterRelationKeys(meta, select);
222
- const isSelectArray = Array.isArray(select);
223
- const prefix = opts.prefix;
224
-
225
- for (const relKey of relKeys) {
226
- const relOpts = meta.relations[relKey];
227
-
228
- if (relOpts.cardinality === '1m' || relOpts.cardinality === 'mm') {
229
- continue;
230
- }
231
-
232
- const isFirstLevel = prefix === tableName;
233
- const joinRelAlias = isFirstLevel ? (relKey as string) : prefix ? prefix + '.' + relKey : (relKey as string);
234
- const relEntity = relOpts.entity();
235
- const relSelect = select[relKey as string];
236
- const relQuery = isSelectArray ? {} : Array.isArray(relSelect) ? { $select: relSelect } : relSelect;
237
-
238
- const relMeta = getMeta(relEntity);
239
- const relTableName = this.resolveTableName(relEntity, relMeta);
240
- const relEntityName = this.escapeId(relTableName);
241
- const relPath = prefix ? this.escapeId(prefix, true) : this.escapeId(tableName);
242
- const joinType = relQuery.$required ? 'INNER' : 'LEFT';
243
- const joinAlias = this.escapeId(joinRelAlias, true);
244
-
245
- ctx.append(` ${joinType} JOIN ${relEntityName} ${joinAlias} ON `);
246
- ctx.append(
247
- relOpts.references
248
- .map((it) => {
249
- const foreignColumnName = this.resolveColumnName(it.foreign, relMeta.fields[it.foreign]);
250
- const localColumnName = this.resolveColumnName(it.local, meta.fields[it.local]);
251
- return `${joinAlias}.${this.escapeId(foreignColumnName)} = ${relPath}.${this.escapeId(localColumnName)}`;
252
- })
253
- .join(' AND '),
254
- );
255
-
256
- if (relQuery.$where) {
257
- ctx.append(' AND ');
258
- this.where(ctx, relEntity, relQuery.$where, { prefix: joinRelAlias, clause: false });
259
- }
260
-
261
- // Recursively add nested relation JOINs
262
- this.selectRelationJoins(ctx, relEntity, relQuery.$select, {
263
- prefix: joinRelAlias,
264
- });
265
- }
266
- }
267
-
268
- where<E>(ctx: QueryContext, entity: Type<E>, where: QueryWhere<E> = {}, opts: QueryWhereOptions = {}): void {
269
- const meta = getMeta(entity);
270
- const { usePrecedence, clause = 'WHERE', softDelete } = opts;
271
-
272
- where = buldQueryWhereAsMap(meta, where);
273
-
274
- if (meta.softDelete && (softDelete || softDelete === undefined) && !where[meta.softDelete as string]) {
275
- where[meta.softDelete as string] = null;
276
- }
277
-
278
- const entries = Object.entries(where);
279
-
280
- if (!entries.length) {
281
- return;
282
- }
283
-
284
- if (clause) {
285
- ctx.append(` ${clause} `);
286
- }
287
-
288
- if (usePrecedence) {
289
- ctx.append('(');
290
- }
291
-
292
- entries.forEach(([key, val], index) => {
293
- if (index > 0) {
294
- ctx.append(' AND ');
295
- }
296
- this.compare(ctx, entity, key as keyof QueryWhereMap<E>, val as any, {
297
- ...opts,
298
- usePrecedence: entries.length > 1,
299
- });
300
- });
301
-
302
- if (usePrecedence) {
303
- ctx.append(')');
304
- }
305
- }
306
-
307
- compare<E, K extends keyof QueryWhereMap<E>>(
308
- ctx: QueryContext,
309
- entity: Type<E>,
310
- key: K,
311
- val: QueryWhereMap<E>[K],
312
- opts: QueryComparisonOptions = {},
313
- ): void {
314
- const meta = getMeta(entity);
315
-
316
- if (val instanceof QueryRaw) {
317
- if (key === '$exists' || key === '$nexists') {
318
- ctx.append(key === '$exists' ? 'EXISTS (' : 'NOT EXISTS (');
319
- const tableName = this.resolveTableName(entity, meta);
320
- this.getRawValue(ctx, {
321
- value: val,
322
- prefix: tableName,
323
- escapedPrefix: this.escapeId(tableName, false, true),
324
- });
325
- ctx.append(')');
326
- return;
327
- }
328
- this.getComparisonKey(ctx, entity, key as FieldKey<E>, opts);
329
- ctx.append(' = ');
330
- this.getRawValue(ctx, { value: val });
331
- return;
332
- }
333
-
334
- if (key === '$text') {
335
- const search = val as QueryTextSearchOptions<E>;
336
- const fields = search.$fields.map((fKey) => {
337
- const field = meta.fields[fKey];
338
- const columnName = this.resolveColumnName(fKey, field);
339
- return this.escapeId(columnName);
340
- });
341
- ctx.append(`MATCH(${fields.join(', ')}) AGAINST(`);
342
- ctx.addValue(search.$value);
343
- ctx.append(')');
344
- return;
345
- }
346
-
347
- if (key === '$and' || key === '$or' || key === '$not' || key === '$nor') {
348
- const negateOperatorMap = {
349
- $not: '$and',
350
- $nor: '$or',
351
- } as const;
352
-
353
- const op: '$and' | '$or' = negateOperatorMap[key as string] ?? key;
354
- const negate = key in negateOperatorMap ? 'NOT' : '';
355
-
356
- const valArr = val as QueryWhereArray<E>;
357
- const hasManyItems = valArr.length > 1;
358
-
359
- if ((opts.usePrecedence || negate) && hasManyItems) {
360
- ctx.append((negate ? negate + ' ' : '') + '(');
361
- } else if (negate) {
362
- ctx.append(negate + ' ');
363
- }
364
-
365
- valArr.forEach((whereEntry, index) => {
366
- if (index > 0) {
367
- ctx.append(op === '$or' ? ' OR ' : ' AND ');
368
- }
369
- if (whereEntry instanceof QueryRaw) {
370
- this.getRawValue(ctx, {
371
- value: whereEntry,
372
- prefix: opts.prefix,
373
- escapedPrefix: this.escapeId(opts.prefix, true, true),
374
- });
375
- } else {
376
- this.where(ctx, entity, whereEntry, {
377
- prefix: opts.prefix,
378
- usePrecedence: hasManyItems && !Array.isArray(whereEntry) && getKeys(whereEntry).length > 1,
379
- clause: false,
380
- });
381
- }
382
- });
383
-
384
- if ((opts.usePrecedence || negate) && hasManyItems) {
385
- ctx.append(')');
386
- }
387
- return;
388
- }
389
-
390
- const value = Array.isArray(val) ? { $in: val } : typeof val === 'object' && val !== null ? val : { $eq: val };
391
- const operators = getKeys(value) as (keyof QueryWhereFieldOperatorMap<E>)[];
392
-
393
- if (operators.length > 1) {
394
- ctx.append('(');
395
- }
396
-
397
- operators.forEach((op, index) => {
398
- if (index > 0) {
399
- ctx.append(' AND ');
400
- }
401
- this.compareFieldOperator(ctx, entity, key as FieldKey<E>, op, value[op], opts);
402
- });
403
-
404
- if (operators.length > 1) {
405
- ctx.append(')');
406
- }
407
- }
408
-
409
- compareFieldOperator<E, K extends keyof QueryWhereFieldOperatorMap<E>>(
410
- ctx: QueryContext,
411
- entity: Type<E>,
412
- key: FieldKey<E>,
413
- op: K,
414
- val: QueryWhereFieldOperatorMap<E>[K],
415
- opts: QueryOptions = {},
416
- ): void {
417
- switch (op) {
418
- case '$eq':
419
- this.getComparisonKey(ctx, entity, key, opts);
420
- if (val === null) {
421
- ctx.append(' IS NULL');
422
- } else {
423
- ctx.append(' = ');
424
- ctx.addValue(val);
425
- }
426
- break;
427
- case '$ne':
428
- this.getComparisonKey(ctx, entity, key, opts);
429
- if (val === null) {
430
- ctx.append(' IS NOT NULL');
431
- } else {
432
- ctx.append(' <> ');
433
- ctx.addValue(val);
434
- }
435
- break;
436
- case '$not':
437
- ctx.append('NOT (');
438
- this.compare(ctx, entity, key as any, val as any, opts);
439
- ctx.append(')');
440
- break;
441
- case '$gt':
442
- this.getComparisonKey(ctx, entity, key, opts);
443
- ctx.append(' > ');
444
- ctx.addValue(val);
445
- break;
446
- case '$gte':
447
- this.getComparisonKey(ctx, entity, key, opts);
448
- ctx.append(' >= ');
449
- ctx.addValue(val);
450
- break;
451
- case '$lt':
452
- this.getComparisonKey(ctx, entity, key, opts);
453
- ctx.append(' < ');
454
- ctx.addValue(val);
455
- break;
456
- case '$lte':
457
- this.getComparisonKey(ctx, entity, key, opts);
458
- ctx.append(' <= ');
459
- ctx.addValue(val);
460
- break;
461
- case '$startsWith':
462
- this.getComparisonKey(ctx, entity, key, opts);
463
- ctx.append(' LIKE ');
464
- ctx.addValue(`${val}%`);
465
- break;
466
- case '$istartsWith':
467
- this.getComparisonKey(ctx, entity, key, opts);
468
- ctx.append(' LIKE ');
469
- ctx.addValue(`${(val as string).toLowerCase()}%`);
470
- break;
471
- case '$endsWith':
472
- this.getComparisonKey(ctx, entity, key, opts);
473
- ctx.append(' LIKE ');
474
- ctx.addValue(`%${val}`);
475
- break;
476
- case '$iendsWith':
477
- this.getComparisonKey(ctx, entity, key, opts);
478
- ctx.append(' LIKE ');
479
- ctx.addValue(`%${(val as string).toLowerCase()}`);
480
- break;
481
- case '$includes':
482
- this.getComparisonKey(ctx, entity, key, opts);
483
- ctx.append(' LIKE ');
484
- ctx.addValue(`%${val}%`);
485
- break;
486
- case '$iincludes':
487
- this.getComparisonKey(ctx, entity, key, opts);
488
- ctx.append(' LIKE ');
489
- ctx.addValue(`%${(val as string).toLowerCase()}%`);
490
- break;
491
- case '$ilike':
492
- this.getComparisonKey(ctx, entity, key, opts);
493
- ctx.append(' LIKE ');
494
- ctx.addValue((val as string).toLowerCase());
495
- break;
496
- case '$like':
497
- this.getComparisonKey(ctx, entity, key, opts);
498
- ctx.append(' LIKE ');
499
- ctx.addValue(val);
500
- break;
501
- case '$in':
502
- this.getComparisonKey(ctx, entity, key, opts);
503
- if (Array.isArray(val) && val.length > 0) {
504
- ctx.append(' IN (');
505
- this.addValues(ctx, val as any[]);
506
- ctx.append(')');
507
- } else {
508
- ctx.append(' IN (NULL)');
509
- }
510
- break;
511
- case '$nin':
512
- this.getComparisonKey(ctx, entity, key, opts);
513
- if (Array.isArray(val) && val.length > 0) {
514
- ctx.append(' NOT IN (');
515
- this.addValues(ctx, val as any[]);
516
- ctx.append(')');
517
- } else {
518
- ctx.append(' NOT IN (NULL)');
519
- }
520
- break;
521
- case '$regex':
522
- this.getComparisonKey(ctx, entity, key, opts);
523
- ctx.append(' REGEXP ');
524
- ctx.addValue(val);
525
- break;
526
- default:
527
- throw TypeError(`unknown operator: ${op}`);
528
- }
529
- }
530
-
531
- protected addValues(ctx: QueryContext, vals: unknown[]): void {
532
- vals.forEach((val, index) => {
533
- if (index > 0) {
534
- ctx.append(', ');
535
- }
536
- ctx.addValue(val);
537
- });
538
- }
539
-
540
- getComparisonKey<E>(ctx: QueryContext, entity: Type<E>, key: FieldKey<E>, { prefix }: QueryOptions = {}): void {
541
- const meta = getMeta(entity);
542
- const escapedPrefix = this.escapeId(prefix, true, true);
543
- const field = meta.fields[key];
544
-
545
- if (field?.virtual) {
546
- this.getRawValue(ctx, {
547
- value: field.virtual,
548
- prefix,
549
- escapedPrefix,
550
- });
551
- return;
552
- }
553
-
554
- const columnName = this.resolveColumnName(key, field);
555
- ctx.append(escapedPrefix + this.escapeId(columnName));
556
- }
557
-
558
- sort<E>(ctx: QueryContext, entity: Type<E>, sort: QuerySort<E>, { prefix }: QueryOptions): void {
559
- const sortMap = buildSortMap(sort);
560
- if (!hasKeys(sortMap)) {
561
- return;
562
- }
563
- const meta = getMeta(entity);
564
- const flattenedSort = flatObject(sortMap, prefix);
565
- const directionMap = { 1: '', asc: '', '-1': ' DESC', desc: ' DESC' } as const;
566
-
567
- ctx.append(' ORDER BY ');
568
-
569
- Object.entries(flattenedSort).forEach(([key, sort], index) => {
570
- if (index > 0) {
571
- ctx.append(', ');
572
- }
573
- const field = meta.fields[key];
574
- const name = this.resolveColumnName(key, field);
575
- const direction = directionMap[sort as QuerySortDirection];
576
- ctx.append(this.escapeId(name) + direction);
577
- });
578
- }
579
-
580
- pager(ctx: QueryContext, opts: QueryPager): void {
581
- if (opts.$limit) {
582
- ctx.append(` LIMIT ${Number(opts.$limit)}`);
583
- }
584
- if (opts.$skip !== undefined) {
585
- ctx.append(` OFFSET ${Number(opts.$skip)}`);
586
- }
587
- }
588
-
589
- count<E>(ctx: QueryContext, entity: Type<E>, q: QuerySearch<E>, opts?: QueryOptions): void {
590
- const search: Query<E> = { ...q };
591
- delete search.$sort;
592
- this.select<E>(ctx, entity, [raw('COUNT(*)', 'count')], undefined);
593
- this.search(ctx, entity, search, opts);
594
- }
595
-
596
- find<E>(ctx: QueryContext, entity: Type<E>, q: Query<E> = {}, opts?: QueryOptions): void {
597
- this.select(ctx, entity, q.$select, opts);
598
- this.search(ctx, entity, q, opts);
599
- }
600
-
601
- insert<E>(ctx: QueryContext, entity: Type<E>, payload: E | E[], opts?: QueryOptions): void {
602
- const meta = getMeta(entity);
603
- const payloads = fillOnFields(meta, payload, 'onInsert');
604
- const keys = filterFieldKeys(meta, payloads[0], 'onInsert');
605
-
606
- const columns = keys.map((key) => {
607
- const field = meta.fields[key];
608
- return this.escapeId(this.resolveColumnName(key, field));
609
- });
610
- const tableName = this.resolveTableName(entity, meta);
611
- ctx.append(`INSERT INTO ${this.escapeId(tableName)} (${columns.join(', ')}) VALUES (`);
612
-
613
- payloads.forEach((it, recordIndex) => {
614
- if (recordIndex > 0) {
615
- ctx.append('), (');
616
- }
617
- keys.forEach((key, keyIndex) => {
618
- if (keyIndex > 0) {
619
- ctx.append(', ');
620
- }
621
- const field = meta.fields[key];
622
- this.formatPersistableValue(ctx, field, it[key]);
623
- });
624
- });
625
- ctx.append(')');
626
- }
627
-
628
- update<E>(ctx: QueryContext, entity: Type<E>, q: QuerySearch<E>, payload: E, opts?: QueryOptions): void {
629
- const meta = getMeta(entity);
630
- const [filledPayload] = fillOnFields(meta, payload, 'onUpdate');
631
- const keys = filterFieldKeys(meta, filledPayload, 'onUpdate');
632
-
633
- const tableName = this.resolveTableName(entity, meta);
634
- ctx.append(`UPDATE ${this.escapeId(tableName)} SET `);
635
- keys.forEach((key, index) => {
636
- if (index > 0) {
637
- ctx.append(', ');
638
- }
639
- const field = meta.fields[key];
640
- const columnName = this.resolveColumnName(key, field);
641
- ctx.append(`${this.escapeId(columnName)} = `);
642
- this.formatPersistableValue(ctx, field, filledPayload[key]);
643
- });
644
-
645
- this.search(ctx, entity, q, opts);
646
- }
647
-
648
- upsert<E>(ctx: QueryContext, entity: Type<E>, conflictPaths: QueryConflictPaths<E>, payload: E): void {
649
- const meta = getMeta(entity);
650
- const update = this.getUpsertUpdateAssignments(ctx, meta, conflictPaths, payload, (name) => `VALUES(${name})`);
651
-
652
- if (update) {
653
- this.insert(ctx, entity, payload);
654
- ctx.append(` ON DUPLICATE KEY UPDATE ${update}`);
655
- } else {
656
- const insertCtx = this.createContext();
657
- this.insert(insertCtx, entity, payload);
658
- ctx.append(insertCtx.sql.replace(/^INSERT/, 'INSERT IGNORE'));
659
- insertCtx.values.forEach((val) => {
660
- ctx.pushValue(val);
661
- });
662
- }
663
- }
664
-
665
- protected getUpsertUpdateAssignments<E>(
666
- ctx: QueryContext,
667
- meta: EntityMeta<E>,
668
- conflictPaths: QueryConflictPaths<E>,
669
- payload: E,
670
- callback?: (columnName: string) => string,
671
- ): string {
672
- const [filledPayload] = fillOnFields(meta, payload, 'onUpdate');
673
- const fields = filterFieldKeys(meta, filledPayload, 'onUpdate');
674
- return fields
675
- .filter((col) => !conflictPaths[col])
676
- .map((col) => {
677
- const field = meta.fields[col];
678
- const columnName = this.resolveColumnName(col, field);
679
- if (callback) {
680
- return `${this.escapeId(columnName)} = ${callback(this.escapeId(columnName))}`;
681
- }
682
- const valCtx = this.createContext();
683
- this.formatPersistableValue(valCtx, field, filledPayload[col]);
684
- valCtx.values.forEach((val) => {
685
- ctx.pushValue(val);
686
- });
687
- return `${this.escapeId(columnName)} = ${valCtx.sql}`;
688
- })
689
- .join(', ');
690
- }
691
-
692
- protected getUpsertConflictPathsStr<E>(meta: EntityMeta<E>, conflictPaths: QueryConflictPaths<E>): string {
693
- return getKeys(conflictPaths)
694
- .map((key) => {
695
- const field = meta.fields[key];
696
- const columnName = this.resolveColumnName(key, field);
697
- return this.escapeId(columnName);
698
- })
699
- .join(', ');
700
- }
701
-
702
- delete<E>(ctx: QueryContext, entity: Type<E>, q: QuerySearch<E>, opts: QueryOptions = {}): void {
703
- const meta = getMeta(entity);
704
- const tableName = this.resolveTableName(entity, meta);
705
-
706
- if (opts.softDelete || opts.softDelete === undefined) {
707
- if (meta.softDelete) {
708
- const field = meta.fields[meta.softDelete];
709
- const value = getFieldCallbackValue(field.onDelete);
710
- const columnName = this.resolveColumnName(meta.softDelete, field);
711
- ctx.append(`UPDATE ${this.escapeId(tableName)} SET ${this.escapeId(columnName)} = `);
712
- ctx.addValue(value);
713
- this.search(ctx, entity, q, opts);
714
- return;
715
- }
716
- if (opts.softDelete) {
717
- throw TypeError(`'${tableName}' has not enabled 'softDelete'`);
718
- }
719
- }
720
-
721
- ctx.append(`DELETE FROM ${this.escapeId(tableName)}`);
722
- this.search(ctx, entity, q, opts);
723
- }
724
-
725
- escapeId(val: string, forbidQualified?: boolean, addDot?: boolean): string {
726
- return escapeSqlId(val, this.escapeIdChar, forbidQualified, addDot);
727
- }
728
-
729
- protected getPersistables<E>(
730
- ctx: QueryContext,
731
- meta: EntityMeta<E>,
732
- payload: E | E[],
733
- callbackKey: CallbackKey,
734
- ): Record<string, unknown>[] {
735
- const payloads = fillOnFields(meta, payload, callbackKey);
736
- return payloads.map((it) => this.getPersistable(ctx, meta, it, callbackKey));
737
- }
738
-
739
- protected getPersistable<E>(
740
- ctx: QueryContext,
741
- meta: EntityMeta<E>,
742
- payload: E,
743
- callbackKey: CallbackKey,
744
- ): Record<string, unknown> {
745
- const filledPayload = fillOnFields(meta, payload, callbackKey)[0];
746
- const keys = filterFieldKeys(meta, filledPayload, callbackKey);
747
- return keys.reduce(
748
- (acc, key) => {
749
- const field = meta.fields[key];
750
- const valCtx = this.createContext();
751
- this.formatPersistableValue(valCtx, field, filledPayload[key]);
752
- valCtx.values.forEach((val) => {
753
- ctx.pushValue(val);
754
- });
755
- acc[key as string] = valCtx.sql;
756
- return acc;
757
- },
758
- {} as Record<string, unknown>,
759
- );
760
- }
761
-
762
- protected formatPersistableValue<E>(ctx: QueryContext, field: FieldOptions, value: unknown): void {
763
- if (value instanceof QueryRaw) {
764
- this.getRawValue(ctx, { value });
765
- return;
766
- }
767
- if (field?.type === 'json' || field?.type === 'jsonb') {
768
- ctx.addValue(value ? JSON.stringify(value) : null);
769
- return;
770
- }
771
- if (field?.type === 'vector' && Array.isArray(value)) {
772
- ctx.addValue(`[${value.join(',')}]`);
773
- return;
774
- }
775
- ctx.addValue(value);
776
- }
777
-
778
- getRawValue(ctx: QueryContext, opts: QueryRawFnOptions & { value: QueryRaw; autoPrefixAlias?: boolean }) {
779
- const { value, prefix = '', escapedPrefix, autoPrefixAlias } = opts;
780
- if (typeof value.value === 'function') {
781
- const res = value.value({
782
- ...opts,
783
- ctx,
784
- dialect: this,
785
- prefix,
786
- escapedPrefix: escapedPrefix ?? this.escapeId(prefix, true, true),
787
- });
788
- if (typeof res === 'string' || (typeof res === 'number' && !Number.isNaN(res))) {
789
- ctx.append(String(res));
790
- }
791
- } else {
792
- ctx.append(prefix + String(value.value));
793
- }
794
- const alias = value.alias;
795
- if (alias) {
796
- const fullAlias = autoPrefixAlias ? prefix + alias : alias;
797
- // Replace dots with underscores for alias to avoid syntax errors
798
- const safeAlias = fullAlias.replace(/\./g, '_');
799
- const escapedFullAlias = this.escapeId(safeAlias, true);
800
- ctx.append(' ' + escapedFullAlias);
801
- }
802
- }
803
-
804
- abstract escape(value: unknown): string;
805
- }