@relq/orm 0.1.3 → 0.1.5

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 (412) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +33 -224
  3. package/dist/cjs/addon/cursor.cjs +2 -1407
  4. package/dist/cjs/addon/mysql2.cjs +21143 -0
  5. package/dist/cjs/addon/pg.cjs +5 -5
  6. package/dist/cjs/cache/query-cache.cjs +1 -4
  7. package/dist/cjs/core/cte/cte-accessor.cjs +80 -0
  8. package/dist/cjs/core/cte/cte-types.cjs +24 -0
  9. package/dist/cjs/core/cte/native-cte-builder.cjs +254 -0
  10. package/dist/cjs/core/helpers/index.cjs +14 -14
  11. package/dist/cjs/core/relq-base.cjs +4 -88
  12. package/dist/cjs/core/relq-client.cjs +59 -41
  13. package/dist/cjs/core/shared/column-mapping.cjs +1 -1
  14. package/dist/cjs/core/shared/table-accessor.cjs +1 -1
  15. package/dist/cjs/core/shared/where.cjs +15 -0
  16. package/dist/cjs/index.cjs +40 -5
  17. package/dist/cjs/mysql/clients/index.cjs +17 -0
  18. package/dist/cjs/mysql/clients/mariadb-client/capabilities.cjs +31 -0
  19. package/dist/cjs/mysql/clients/mariadb-client/index.cjs +7 -0
  20. package/dist/cjs/mysql/clients/mariadb-client/relq-mariadb.cjs +14 -0
  21. package/dist/cjs/mysql/clients/mysql-client/capabilities.cjs +31 -0
  22. package/dist/cjs/mysql/clients/mysql-client/index.cjs +7 -0
  23. package/dist/cjs/mysql/clients/mysql-client/relq-mysql.cjs +14 -0
  24. package/dist/cjs/mysql/clients/planetscale-client/capabilities.cjs +31 -0
  25. package/dist/cjs/mysql/clients/planetscale-client/index.cjs +7 -0
  26. package/dist/cjs/mysql/clients/planetscale-client/relq-planetscale.cjs +32 -0
  27. package/dist/cjs/mysql/clients/shared/index.cjs +32 -0
  28. package/dist/cjs/mysql/clients/shared/mysql-base.cjs +362 -0
  29. package/dist/cjs/mysql/clients/shared/mysql-dialect.cjs +141 -0
  30. package/dist/cjs/mysql/clients/shared/mysql-error-parser.cjs +195 -0
  31. package/dist/cjs/mysql/clients/shared/mysql-format.cjs +95 -0
  32. package/dist/cjs/mysql/clients/shared/mysql-type-coercion.cjs +14 -0
  33. package/dist/cjs/mysql/condition/condition-collector.cjs +377 -0
  34. package/dist/cjs/mysql/condition/fulltext-condition-builder.cjs +63 -0
  35. package/dist/cjs/mysql/condition/index.cjs +16 -0
  36. package/dist/cjs/mysql/condition/json-condition-builder.cjs +144 -0
  37. package/dist/cjs/mysql/condition/json-path-proxy.cjs +520 -0
  38. package/dist/cjs/mysql/count/count-builder.cjs +109 -0
  39. package/dist/cjs/mysql/count/index.cjs +5 -0
  40. package/dist/cjs/mysql/delete/delete-builder.cjs +105 -0
  41. package/dist/cjs/mysql/delete/index.cjs +5 -0
  42. package/dist/cjs/mysql/explain/explain-builder.cjs +43 -0
  43. package/dist/cjs/mysql/explain/index.cjs +5 -0
  44. package/dist/cjs/mysql/helpers/MysqlConnectedAggregateBuilder.cjs +132 -0
  45. package/dist/cjs/mysql/helpers/MysqlConnectedCountBuilder.cjs +83 -0
  46. package/dist/cjs/mysql/helpers/MysqlConnectedDeleteBuilder.cjs +91 -0
  47. package/dist/cjs/mysql/helpers/MysqlConnectedInsertBuilder.cjs +75 -0
  48. package/dist/cjs/mysql/helpers/MysqlConnectedInsertFromSelectBuilder.cjs +57 -0
  49. package/dist/cjs/mysql/helpers/MysqlConnectedQueryBuilder.cjs +141 -0
  50. package/dist/cjs/mysql/helpers/MysqlConnectedRawQueryBuilder.cjs +60 -0
  51. package/dist/cjs/mysql/helpers/MysqlConnectedSelectBuilder.cjs +398 -0
  52. package/dist/cjs/mysql/helpers/MysqlConnectedTransactionBuilder.cjs +128 -0
  53. package/dist/cjs/mysql/helpers/MysqlConnectedUpdateBuilder.cjs +92 -0
  54. package/dist/cjs/mysql/helpers/MysqlPaginateBuilder.cjs +186 -0
  55. package/dist/cjs/mysql/helpers/MysqlReturningExecutor.cjs +69 -0
  56. package/dist/cjs/mysql/helpers/index.cjs +45 -0
  57. package/dist/cjs/mysql/helpers/query-convenience.cjs +210 -0
  58. package/dist/cjs/mysql/helpers/select-joins.cjs +465 -0
  59. package/dist/cjs/mysql/helpers/select-pagination.cjs +190 -0
  60. package/dist/cjs/mysql/index.cjs +154 -0
  61. package/dist/cjs/mysql/insert/duplicate-key-builder.cjs +185 -0
  62. package/dist/cjs/mysql/insert/index.cjs +13 -0
  63. package/dist/cjs/mysql/insert/insert-builder.cjs +169 -0
  64. package/dist/cjs/mysql/insert/insert-from-select-builder.cjs +74 -0
  65. package/dist/cjs/mysql/raw/index.cjs +8 -0
  66. package/dist/cjs/mysql/raw/raw-query-builder.cjs +27 -0
  67. package/dist/cjs/mysql/raw/sql-template.cjs +65 -0
  68. package/dist/cjs/mysql/select/aggregate-builder.cjs +211 -0
  69. package/dist/cjs/mysql/select/index.cjs +32 -0
  70. package/dist/cjs/mysql/select/join-builder.cjs +206 -0
  71. package/dist/cjs/mysql/select/join-condition-builder.cjs +205 -0
  72. package/dist/cjs/mysql/select/join-internals.cjs +5 -0
  73. package/dist/cjs/mysql/select/scalar-query-builder.cjs +164 -0
  74. package/dist/cjs/mysql/select/scalar-select-builder.cjs +78 -0
  75. package/dist/cjs/mysql/select/select-builder.cjs +414 -0
  76. package/dist/cjs/mysql/select/sql-expression.cjs +56 -0
  77. package/dist/cjs/mysql/select/table-proxy.cjs +99 -0
  78. package/dist/cjs/mysql/shared/mysql-table-accessor.cjs +22 -0
  79. package/dist/cjs/mysql/transaction/index.cjs +6 -0
  80. package/dist/cjs/mysql/transaction/transaction-builder.cjs +64 -0
  81. package/dist/cjs/mysql/update/column-expression-builder.cjs +49 -0
  82. package/dist/cjs/mysql/update/index.cjs +7 -0
  83. package/dist/cjs/mysql/update/mysql-json-update-builder.cjs +200 -0
  84. package/dist/cjs/mysql/update/update-builder.cjs +167 -0
  85. package/dist/cjs/mysql/utils/addon/mysql/mysql2.cjs +23 -0
  86. package/dist/cjs/mysql/utils/fk-resolver.cjs +187 -0
  87. package/dist/cjs/mysql/utils/index.cjs +16 -0
  88. package/dist/cjs/mysql/utils/type-coercion.cjs +158 -0
  89. package/dist/cjs/mysql/window/index.cjs +5 -0
  90. package/dist/cjs/mysql/window/window-builder.cjs +80 -0
  91. package/dist/cjs/pg/clients/alloydb-client/capabilities.cjs +31 -0
  92. package/dist/cjs/pg/clients/alloydb-client/index.cjs +7 -0
  93. package/dist/cjs/pg/clients/alloydb-client/relq-alloydb.cjs +43 -0
  94. package/dist/cjs/pg/clients/aurora-client/capabilities.cjs +31 -0
  95. package/dist/cjs/pg/clients/aurora-client/index.cjs +7 -0
  96. package/dist/cjs/pg/clients/aurora-client/relq-aurora.cjs +43 -0
  97. package/dist/cjs/pg/clients/citus-client/capabilities.cjs +31 -0
  98. package/dist/cjs/pg/clients/citus-client/index.cjs +7 -0
  99. package/dist/cjs/pg/clients/citus-client/relq-citus.cjs +43 -0
  100. package/dist/cjs/pg/clients/neon-client/capabilities.cjs +31 -0
  101. package/dist/cjs/pg/clients/neon-client/index.cjs +7 -0
  102. package/dist/cjs/pg/clients/neon-client/relq-neon.cjs +43 -0
  103. package/dist/cjs/pg/clients/pg-client/relq-postgres.cjs +56 -0
  104. package/dist/cjs/{core/pg-family → pg/clients}/shared/pg-base.cjs +64 -7
  105. package/dist/cjs/{core/pg-family → pg/clients}/shared/pg-type-coercion.cjs +1 -1
  106. package/dist/cjs/pg/clients/supabase-client/capabilities.cjs +31 -0
  107. package/dist/cjs/pg/clients/supabase-client/index.cjs +7 -0
  108. package/dist/cjs/{core/pg-family/pg-client/relq-postgres.cjs → pg/clients/supabase-client/relq-supabase.cjs} +9 -9
  109. package/dist/cjs/pg/clients/timescale-client/capabilities.cjs +31 -0
  110. package/dist/cjs/pg/clients/timescale-client/index.cjs +7 -0
  111. package/dist/cjs/pg/clients/timescale-client/relq-timescale.cjs +43 -0
  112. package/dist/cjs/pg/clients/yugabytedb-client/capabilities.cjs +31 -0
  113. package/dist/cjs/pg/clients/yugabytedb-client/index.cjs +7 -0
  114. package/dist/cjs/pg/clients/yugabytedb-client/relq-yugabytedb.cjs +16 -0
  115. package/dist/cjs/{condition → pg/condition}/array-condition-builder.cjs +1 -1
  116. package/dist/cjs/pg/condition/array-path-proxy.cjs +379 -0
  117. package/dist/cjs/{condition → pg/condition}/condition-collector.cjs +18 -9
  118. package/dist/cjs/{condition → pg/condition}/fulltext-condition-builder.cjs +1 -1
  119. package/dist/cjs/{condition → pg/condition}/geometric-condition-builder.cjs +1 -1
  120. package/dist/cjs/pg/condition/json-path-proxy.cjs +480 -0
  121. package/dist/cjs/{condition → pg/condition}/jsonb-condition-builder.cjs +1 -1
  122. package/dist/cjs/{condition → pg/condition}/network-condition-builder.cjs +1 -1
  123. package/dist/cjs/{condition → pg/condition}/postgis-condition-builder.cjs +1 -1
  124. package/dist/cjs/{condition → pg/condition}/range-condition-builder.cjs +1 -1
  125. package/dist/cjs/{count → pg/count}/count-builder.cjs +10 -5
  126. package/dist/cjs/{delete → pg/delete}/delete-builder.cjs +10 -5
  127. package/dist/cjs/{core → pg}/helpers/ConnectedAggregateBuilder.cjs +16 -3
  128. package/dist/cjs/{core → pg}/helpers/ConnectedCountBuilder.cjs +16 -3
  129. package/dist/cjs/{core → pg}/helpers/ConnectedDeleteBuilder.cjs +27 -7
  130. package/dist/cjs/{core → pg}/helpers/ConnectedInsertBuilder.cjs +16 -8
  131. package/dist/cjs/{core → pg}/helpers/ConnectedInsertFromSelectBuilder.cjs +9 -5
  132. package/dist/cjs/{core → pg}/helpers/ConnectedQueryBuilder.cjs +14 -19
  133. package/dist/cjs/pg/helpers/ConnectedRawQueryBuilder.cjs +67 -0
  134. package/dist/cjs/{core → pg}/helpers/ConnectedSelectBuilder.cjs +121 -25
  135. package/dist/cjs/{core → pg}/helpers/ConnectedTransactionBuilder.cjs +34 -4
  136. package/dist/cjs/{core → pg}/helpers/ConnectedUpdateBuilder.cjs +27 -7
  137. package/dist/cjs/{core → pg}/helpers/PaginateBuilder.cjs +3 -3
  138. package/dist/cjs/{core → pg}/helpers/ReturningExecutor.cjs +3 -3
  139. package/dist/cjs/{core → pg}/helpers/query-convenience.cjs +11 -12
  140. package/dist/cjs/{core → pg}/helpers/select-joins.cjs +17 -14
  141. package/dist/cjs/{core → pg}/helpers/select-pagination.cjs +1 -1
  142. package/dist/cjs/{insert → pg/insert}/conflict-builder.cjs +2 -2
  143. package/dist/cjs/{insert → pg/insert}/insert-builder.cjs +8 -5
  144. package/dist/cjs/{insert → pg/insert}/insert-from-select-builder.cjs +1 -1
  145. package/dist/cjs/{pubsub → pg/pubsub}/listen-notify-builder.cjs +1 -1
  146. package/dist/cjs/{pubsub → pg/pubsub}/listener-connection.cjs +2 -2
  147. package/dist/cjs/{raw → pg/raw}/raw-query-builder.cjs +2 -2
  148. package/dist/cjs/{raw → pg/raw}/sql-template.cjs +1 -6
  149. package/dist/cjs/{select → pg/select}/aggregate-builder.cjs +10 -5
  150. package/dist/cjs/{select → pg/select}/join-builder.cjs +2 -2
  151. package/dist/cjs/{select → pg/select}/join-condition-builder.cjs +11 -1
  152. package/dist/cjs/{select → pg/select}/join-many-condition-builder.cjs +3 -4
  153. package/dist/cjs/{select → pg/select}/scalar-query-builder.cjs +31 -1
  154. package/dist/cjs/{select → pg/select}/scalar-select-builder.cjs +1 -1
  155. package/dist/cjs/{select → pg/select}/select-builder.cjs +40 -7
  156. package/dist/cjs/pg/select/sql-expression.cjs +56 -0
  157. package/dist/cjs/{transaction → pg/transaction}/transaction-builder.cjs +1 -1
  158. package/dist/cjs/{update → pg/update}/array-update-builder.cjs +2 -5
  159. package/dist/cjs/pg/update/column-expression-builder.cjs +49 -0
  160. package/dist/cjs/{update → pg/update}/jsonb-update-builder.cjs +1 -1
  161. package/dist/cjs/{update → pg/update}/update-builder.cjs +14 -7
  162. package/dist/cjs/{utils → pg/utils}/addon/pg/cursor.cjs +1 -1
  163. package/dist/cjs/{utils → pg/utils}/addon/pg/pg.cjs +2 -2
  164. package/dist/cjs/{utils → pg/utils}/fk-resolver.cjs +47 -30
  165. package/dist/cjs/{window → pg/window}/window-builder.cjs +1 -1
  166. package/dist/cjs/shared/errors/relq-errors.cjs +496 -35
  167. package/dist/cjs/shared/types/config-types.cjs +2 -2
  168. package/dist/cjs/utils/env-resolver.cjs +76 -13
  169. package/dist/cjs/utils/index.cjs +1 -1
  170. package/dist/esm/addon/cursor.js +1 -1438
  171. package/dist/esm/addon/mysql2.js +21129 -0
  172. package/dist/esm/addon/pg.js +5 -5
  173. package/dist/esm/cache/query-cache.js +1 -4
  174. package/dist/esm/core/cte/cte-accessor.js +75 -0
  175. package/dist/esm/core/cte/cte-types.js +20 -0
  176. package/dist/esm/core/cte/native-cte-builder.js +250 -0
  177. package/dist/esm/core/helpers/index.js +12 -12
  178. package/dist/esm/core/relq-base.js +5 -56
  179. package/dist/esm/core/relq-client.js +54 -32
  180. package/dist/esm/core/shared/column-mapping.js +1 -1
  181. package/dist/esm/core/shared/table-accessor.js +1 -1
  182. package/dist/esm/core/shared/where.js +12 -0
  183. package/dist/esm/index.js +17 -5
  184. package/dist/esm/mysql/clients/index.js +5 -0
  185. package/dist/esm/mysql/clients/mariadb-client/capabilities.js +28 -0
  186. package/dist/esm/mysql/clients/mariadb-client/index.js +2 -0
  187. package/dist/esm/mysql/clients/mariadb-client/relq-mariadb.js +10 -0
  188. package/dist/esm/mysql/clients/mysql-client/capabilities.js +28 -0
  189. package/dist/esm/mysql/clients/mysql-client/index.js +2 -0
  190. package/dist/esm/mysql/clients/mysql-client/relq-mysql.js +10 -0
  191. package/dist/esm/mysql/clients/planetscale-client/capabilities.js +28 -0
  192. package/dist/esm/mysql/clients/planetscale-client/index.js +2 -0
  193. package/dist/esm/mysql/clients/planetscale-client/relq-planetscale.js +28 -0
  194. package/dist/esm/mysql/clients/shared/index.js +7 -0
  195. package/dist/esm/mysql/clients/shared/mysql-base.js +321 -0
  196. package/dist/esm/mysql/clients/shared/mysql-dialect.js +136 -0
  197. package/dist/esm/mysql/clients/shared/mysql-error-parser.js +188 -0
  198. package/dist/esm/mysql/clients/shared/mysql-format.js +92 -0
  199. package/dist/esm/mysql/clients/shared/mysql-type-coercion.js +6 -0
  200. package/dist/esm/mysql/condition/condition-collector.js +368 -0
  201. package/dist/esm/mysql/condition/fulltext-condition-builder.js +55 -0
  202. package/dist/esm/mysql/condition/index.js +4 -0
  203. package/dist/esm/mysql/condition/json-condition-builder.js +136 -0
  204. package/dist/esm/mysql/condition/json-path-proxy.js +513 -0
  205. package/dist/esm/mysql/count/count-builder.js +102 -0
  206. package/dist/esm/mysql/count/index.js +1 -0
  207. package/dist/esm/mysql/delete/delete-builder.js +98 -0
  208. package/dist/esm/mysql/delete/index.js +1 -0
  209. package/dist/esm/mysql/explain/explain-builder.js +39 -0
  210. package/dist/esm/mysql/explain/index.js +1 -0
  211. package/dist/esm/mysql/helpers/MysqlConnectedAggregateBuilder.js +128 -0
  212. package/dist/esm/{core/helpers/ConnectedCountBuilder.js → mysql/helpers/MysqlConnectedCountBuilder.js} +15 -5
  213. package/dist/esm/mysql/helpers/MysqlConnectedDeleteBuilder.js +87 -0
  214. package/dist/esm/mysql/helpers/MysqlConnectedInsertBuilder.js +71 -0
  215. package/dist/esm/mysql/helpers/MysqlConnectedInsertFromSelectBuilder.js +53 -0
  216. package/dist/esm/mysql/helpers/MysqlConnectedQueryBuilder.js +137 -0
  217. package/dist/esm/mysql/helpers/MysqlConnectedRawQueryBuilder.js +56 -0
  218. package/dist/esm/mysql/helpers/MysqlConnectedSelectBuilder.js +391 -0
  219. package/dist/esm/mysql/helpers/MysqlConnectedTransactionBuilder.js +123 -0
  220. package/dist/esm/mysql/helpers/MysqlConnectedUpdateBuilder.js +88 -0
  221. package/dist/esm/mysql/helpers/MysqlPaginateBuilder.js +182 -0
  222. package/dist/esm/mysql/helpers/MysqlReturningExecutor.js +65 -0
  223. package/dist/esm/mysql/helpers/index.js +15 -0
  224. package/dist/esm/mysql/helpers/query-convenience.js +199 -0
  225. package/dist/esm/mysql/helpers/select-joins.js +455 -0
  226. package/dist/esm/mysql/helpers/select-pagination.js +186 -0
  227. package/dist/esm/mysql/index.js +47 -0
  228. package/dist/esm/mysql/insert/duplicate-key-builder.js +174 -0
  229. package/dist/esm/mysql/insert/index.js +3 -0
  230. package/dist/esm/mysql/insert/insert-builder.js +162 -0
  231. package/dist/esm/mysql/insert/insert-from-select-builder.js +67 -0
  232. package/dist/esm/mysql/raw/index.js +2 -0
  233. package/dist/esm/mysql/raw/raw-query-builder.js +20 -0
  234. package/dist/esm/mysql/raw/sql-template.js +58 -0
  235. package/dist/esm/mysql/select/aggregate-builder.js +204 -0
  236. package/dist/esm/mysql/select/index.js +9 -0
  237. package/dist/esm/mysql/select/join-builder.js +198 -0
  238. package/dist/esm/mysql/select/join-condition-builder.js +197 -0
  239. package/dist/esm/mysql/select/join-internals.js +2 -0
  240. package/dist/esm/mysql/select/scalar-query-builder.js +156 -0
  241. package/dist/esm/mysql/select/scalar-select-builder.js +70 -0
  242. package/dist/esm/mysql/select/select-builder.js +407 -0
  243. package/dist/esm/mysql/select/sql-expression.js +51 -0
  244. package/dist/esm/mysql/select/table-proxy.js +91 -0
  245. package/dist/esm/mysql/shared/mysql-table-accessor.js +19 -0
  246. package/dist/esm/mysql/transaction/index.js +1 -0
  247. package/dist/esm/mysql/transaction/transaction-builder.js +56 -0
  248. package/dist/esm/mysql/update/column-expression-builder.js +42 -0
  249. package/dist/esm/mysql/update/index.js +2 -0
  250. package/dist/esm/mysql/update/mysql-json-update-builder.js +193 -0
  251. package/dist/esm/mysql/update/update-builder.js +160 -0
  252. package/dist/esm/mysql/utils/addon/mysql/mysql2.js +2 -0
  253. package/dist/esm/mysql/utils/fk-resolver.js +179 -0
  254. package/dist/esm/mysql/utils/index.js +2 -0
  255. package/dist/esm/mysql/utils/type-coercion.js +150 -0
  256. package/dist/esm/mysql/window/index.js +1 -0
  257. package/dist/esm/mysql/window/window-builder.js +73 -0
  258. package/dist/esm/pg/clients/alloydb-client/capabilities.js +28 -0
  259. package/dist/esm/pg/clients/alloydb-client/index.js +2 -0
  260. package/dist/esm/{core/pg-family/pg-client/relq-postgres.js → pg/clients/alloydb-client/relq-alloydb.js} +8 -8
  261. package/dist/esm/pg/clients/aurora-client/capabilities.js +28 -0
  262. package/dist/esm/pg/clients/aurora-client/index.js +2 -0
  263. package/dist/esm/pg/clients/aurora-client/relq-aurora.js +39 -0
  264. package/dist/esm/pg/clients/citus-client/capabilities.js +28 -0
  265. package/dist/esm/pg/clients/citus-client/index.js +2 -0
  266. package/dist/esm/pg/clients/citus-client/relq-citus.js +39 -0
  267. package/dist/esm/pg/clients/neon-client/capabilities.js +28 -0
  268. package/dist/esm/pg/clients/neon-client/index.js +2 -0
  269. package/dist/esm/pg/clients/neon-client/relq-neon.js +39 -0
  270. package/dist/esm/pg/clients/pg-client/relq-postgres.js +52 -0
  271. package/dist/esm/{core/pg-family → pg/clients}/shared/pg-base.js +64 -7
  272. package/dist/esm/{core/pg-family → pg/clients}/shared/pg-type-coercion.js +1 -1
  273. package/dist/esm/pg/clients/supabase-client/capabilities.js +28 -0
  274. package/dist/esm/pg/clients/supabase-client/index.js +2 -0
  275. package/dist/esm/pg/clients/supabase-client/relq-supabase.js +39 -0
  276. package/dist/esm/pg/clients/timescale-client/capabilities.js +28 -0
  277. package/dist/esm/pg/clients/timescale-client/index.js +2 -0
  278. package/dist/esm/pg/clients/timescale-client/relq-timescale.js +39 -0
  279. package/dist/esm/pg/clients/yugabytedb-client/capabilities.js +28 -0
  280. package/dist/esm/pg/clients/yugabytedb-client/index.js +2 -0
  281. package/dist/esm/pg/clients/yugabytedb-client/relq-yugabytedb.js +12 -0
  282. package/dist/esm/{condition → pg/condition}/array-condition-builder.js +1 -1
  283. package/dist/esm/pg/condition/array-path-proxy.js +372 -0
  284. package/dist/esm/{condition → pg/condition}/condition-collector.js +20 -11
  285. package/dist/esm/{condition → pg/condition}/fulltext-condition-builder.js +1 -1
  286. package/dist/esm/{condition → pg/condition}/geometric-condition-builder.js +1 -1
  287. package/dist/esm/pg/condition/json-path-proxy.js +473 -0
  288. package/dist/esm/{condition → pg/condition}/jsonb-condition-builder.js +1 -1
  289. package/dist/esm/{condition → pg/condition}/network-condition-builder.js +1 -1
  290. package/dist/esm/{condition → pg/condition}/postgis-condition-builder.js +1 -1
  291. package/dist/esm/{condition → pg/condition}/range-condition-builder.js +1 -1
  292. package/dist/esm/{count → pg/count}/count-builder.js +10 -5
  293. package/dist/esm/{delete → pg/delete}/delete-builder.js +10 -5
  294. package/dist/esm/{core → pg}/helpers/ConnectedAggregateBuilder.js +16 -3
  295. package/dist/esm/pg/helpers/ConnectedCountBuilder.js +82 -0
  296. package/dist/esm/{core → pg}/helpers/ConnectedDeleteBuilder.js +27 -7
  297. package/dist/esm/{core → pg}/helpers/ConnectedInsertBuilder.js +16 -8
  298. package/dist/esm/{core → pg}/helpers/ConnectedInsertFromSelectBuilder.js +9 -5
  299. package/dist/esm/{core → pg}/helpers/ConnectedQueryBuilder.js +15 -20
  300. package/dist/esm/pg/helpers/ConnectedRawQueryBuilder.js +63 -0
  301. package/dist/esm/{core → pg}/helpers/ConnectedSelectBuilder.js +118 -25
  302. package/dist/esm/{core → pg}/helpers/ConnectedTransactionBuilder.js +34 -4
  303. package/dist/esm/{core → pg}/helpers/ConnectedUpdateBuilder.js +27 -7
  304. package/dist/esm/{core → pg}/helpers/PaginateBuilder.js +3 -3
  305. package/dist/esm/{core → pg}/helpers/ReturningExecutor.js +3 -3
  306. package/dist/esm/{core → pg}/helpers/query-convenience.js +11 -12
  307. package/dist/esm/{core → pg}/helpers/select-joins.js +18 -15
  308. package/dist/esm/{core → pg}/helpers/select-pagination.js +1 -1
  309. package/dist/esm/{insert → pg/insert}/conflict-builder.js +2 -2
  310. package/dist/esm/{insert → pg/insert}/insert-builder.js +8 -5
  311. package/dist/esm/{insert → pg/insert}/insert-from-select-builder.js +1 -1
  312. package/dist/esm/{pubsub → pg/pubsub}/listen-notify-builder.js +1 -1
  313. package/dist/esm/{pubsub → pg/pubsub}/listener-connection.js +2 -2
  314. package/dist/esm/{raw → pg/raw}/raw-query-builder.js +2 -2
  315. package/dist/esm/{raw → pg/raw}/sql-template.js +1 -6
  316. package/dist/esm/{select → pg/select}/aggregate-builder.js +10 -5
  317. package/dist/esm/{select → pg/select}/join-builder.js +2 -2
  318. package/dist/esm/{select → pg/select}/join-condition-builder.js +11 -1
  319. package/dist/esm/{select → pg/select}/join-many-condition-builder.js +3 -4
  320. package/dist/esm/{select → pg/select}/scalar-query-builder.js +31 -1
  321. package/dist/esm/{select → pg/select}/scalar-select-builder.js +1 -1
  322. package/dist/esm/{select → pg/select}/select-builder.js +40 -7
  323. package/dist/esm/pg/select/sql-expression.js +51 -0
  324. package/dist/esm/{transaction → pg/transaction}/transaction-builder.js +1 -1
  325. package/dist/esm/{update → pg/update}/array-update-builder.js +2 -5
  326. package/dist/esm/pg/update/column-expression-builder.js +42 -0
  327. package/dist/esm/{update → pg/update}/jsonb-update-builder.js +1 -1
  328. package/dist/esm/{update → pg/update}/update-builder.js +14 -7
  329. package/dist/esm/pg/utils/addon/pg/cursor.js +1 -0
  330. package/dist/esm/pg/utils/addon/pg/pg.js +2 -0
  331. package/dist/esm/{utils → pg/utils}/fk-resolver.js +47 -30
  332. package/dist/esm/{window → pg/window}/window-builder.js +1 -1
  333. package/dist/esm/shared/errors/relq-errors.js +486 -34
  334. package/dist/esm/shared/types/config-types.js +2 -2
  335. package/dist/esm/utils/env-resolver.js +74 -13
  336. package/dist/esm/utils/index.js +1 -1
  337. package/dist/index.d.ts +9629 -3974
  338. package/package.json +6 -3
  339. package/dist/cjs/core/helpers/ConnectedCTEBuilder.cjs +0 -53
  340. package/dist/cjs/core/helpers/ConnectedRawQueryBuilder.cjs +0 -46
  341. package/dist/cjs/select/sql-expression.cjs +0 -38
  342. package/dist/esm/core/helpers/ConnectedCTEBuilder.js +0 -49
  343. package/dist/esm/core/helpers/ConnectedRawQueryBuilder.js +0 -42
  344. package/dist/esm/select/sql-expression.js +0 -33
  345. package/dist/esm/utils/addon/pg/cursor.js +0 -1
  346. package/dist/esm/utils/addon/pg/pg.js +0 -2
  347. /package/dist/cjs/{core/pg-family → pg/clients}/cockroachdb-client/capabilities.cjs +0 -0
  348. /package/dist/cjs/{core/pg-family → pg/clients}/cockroachdb-client/index.cjs +0 -0
  349. /package/dist/cjs/{core/pg-family → pg/clients}/cockroachdb-client/relq-cockroach.cjs +0 -0
  350. /package/dist/cjs/{core/pg-family → pg/clients}/dsql-client/capabilities.cjs +0 -0
  351. /package/dist/cjs/{core/pg-family → pg/clients}/dsql-client/index.cjs +0 -0
  352. /package/dist/cjs/{core/pg-family → pg/clients}/dsql-client/relq-dsql.cjs +0 -0
  353. /package/dist/cjs/{core/pg-family → pg/clients}/index.cjs +0 -0
  354. /package/dist/cjs/{core/pg-family → pg/clients}/nile-client/capabilities.cjs +0 -0
  355. /package/dist/cjs/{core/pg-family → pg/clients}/nile-client/index.cjs +0 -0
  356. /package/dist/cjs/{core/pg-family → pg/clients}/nile-client/relq-nile.cjs +0 -0
  357. /package/dist/cjs/{core/pg-family → pg/clients}/nile-client/tenant-context.cjs +0 -0
  358. /package/dist/cjs/{core/pg-family → pg/clients}/pg-client/capabilities.cjs +0 -0
  359. /package/dist/cjs/{core/pg-family → pg/clients}/pg-client/index.cjs +0 -0
  360. /package/dist/cjs/{core/pg-family → pg/clients}/shared/pg-dialect.cjs +0 -0
  361. /package/dist/cjs/{core/pg-family → pg/clients}/shared/pg-error-parser.cjs +0 -0
  362. /package/dist/cjs/{condition → pg/condition}/array-numeric-condition-builder.cjs +0 -0
  363. /package/dist/cjs/{condition → pg/condition}/array-specialized-condition-builder.cjs +0 -0
  364. /package/dist/cjs/{condition → pg/condition}/array-string-condition-builder.cjs +0 -0
  365. /package/dist/cjs/{condition → pg/condition}/index.cjs +0 -0
  366. /package/dist/cjs/{count → pg/count}/index.cjs +0 -0
  367. /package/dist/cjs/{delete → pg/delete}/index.cjs +0 -0
  368. /package/dist/cjs/{explain → pg/explain}/explain-builder.cjs +0 -0
  369. /package/dist/cjs/{explain → pg/explain}/index.cjs +0 -0
  370. /package/dist/cjs/{insert → pg/insert}/index.cjs +0 -0
  371. /package/dist/cjs/{pubsub → pg/pubsub}/index.cjs +0 -0
  372. /package/dist/cjs/{raw → pg/raw}/index.cjs +0 -0
  373. /package/dist/cjs/{select → pg/select}/index.cjs +0 -0
  374. /package/dist/cjs/{select → pg/select}/join-internals.cjs +0 -0
  375. /package/dist/cjs/{select → pg/select}/table-proxy.cjs +0 -0
  376. /package/dist/cjs/{transaction → pg/transaction}/index.cjs +0 -0
  377. /package/dist/cjs/{update → pg/update}/index.cjs +0 -0
  378. /package/dist/cjs/{utils → pg/utils}/type-coercion.cjs +0 -0
  379. /package/dist/cjs/{window → pg/window}/index.cjs +0 -0
  380. /package/dist/esm/{core/pg-family → pg/clients}/cockroachdb-client/capabilities.js +0 -0
  381. /package/dist/esm/{core/pg-family → pg/clients}/cockroachdb-client/index.js +0 -0
  382. /package/dist/esm/{core/pg-family → pg/clients}/cockroachdb-client/relq-cockroach.js +0 -0
  383. /package/dist/esm/{core/pg-family → pg/clients}/dsql-client/capabilities.js +0 -0
  384. /package/dist/esm/{core/pg-family → pg/clients}/dsql-client/index.js +0 -0
  385. /package/dist/esm/{core/pg-family → pg/clients}/dsql-client/relq-dsql.js +0 -0
  386. /package/dist/esm/{core/pg-family → pg/clients}/index.js +0 -0
  387. /package/dist/esm/{core/pg-family → pg/clients}/nile-client/capabilities.js +0 -0
  388. /package/dist/esm/{core/pg-family → pg/clients}/nile-client/index.js +0 -0
  389. /package/dist/esm/{core/pg-family → pg/clients}/nile-client/relq-nile.js +0 -0
  390. /package/dist/esm/{core/pg-family → pg/clients}/nile-client/tenant-context.js +0 -0
  391. /package/dist/esm/{core/pg-family → pg/clients}/pg-client/capabilities.js +0 -0
  392. /package/dist/esm/{core/pg-family → pg/clients}/pg-client/index.js +0 -0
  393. /package/dist/esm/{core/pg-family → pg/clients}/shared/pg-dialect.js +0 -0
  394. /package/dist/esm/{core/pg-family → pg/clients}/shared/pg-error-parser.js +0 -0
  395. /package/dist/esm/{condition → pg/condition}/array-numeric-condition-builder.js +0 -0
  396. /package/dist/esm/{condition → pg/condition}/array-specialized-condition-builder.js +0 -0
  397. /package/dist/esm/{condition → pg/condition}/array-string-condition-builder.js +0 -0
  398. /package/dist/esm/{condition → pg/condition}/index.js +0 -0
  399. /package/dist/esm/{count → pg/count}/index.js +0 -0
  400. /package/dist/esm/{delete → pg/delete}/index.js +0 -0
  401. /package/dist/esm/{explain → pg/explain}/explain-builder.js +0 -0
  402. /package/dist/esm/{explain → pg/explain}/index.js +0 -0
  403. /package/dist/esm/{insert → pg/insert}/index.js +0 -0
  404. /package/dist/esm/{pubsub → pg/pubsub}/index.js +0 -0
  405. /package/dist/esm/{raw → pg/raw}/index.js +0 -0
  406. /package/dist/esm/{select → pg/select}/index.js +0 -0
  407. /package/dist/esm/{select → pg/select}/join-internals.js +0 -0
  408. /package/dist/esm/{select → pg/select}/table-proxy.js +0 -0
  409. /package/dist/esm/{transaction → pg/transaction}/index.js +0 -0
  410. /package/dist/esm/{update → pg/update}/index.js +0 -0
  411. /package/dist/esm/{utils → pg/utils}/type-coercion.js +0 -0
  412. /package/dist/esm/{window → pg/window}/index.js +0 -0
@@ -367,9 +367,10 @@ var require_postgres_interval = __commonJS((exports2, module2) => {
367
367
 
368
368
  // node_modules/postgres-bytea/index.js
369
369
  var require_postgres_bytea = __commonJS((exports2, module2) => {
370
+ var bufferFrom = Buffer.from || Buffer;
370
371
  module2.exports = function parseBytea(input) {
371
372
  if (/^\\x/.test(input)) {
372
- return new Buffer(input.substr(2), "hex");
373
+ return bufferFrom(input.substr(2), "hex");
373
374
  }
374
375
  var output = "";
375
376
  var i = 0;
@@ -393,7 +394,7 @@ var require_postgres_bytea = __commonJS((exports2, module2) => {
393
394
  }
394
395
  }
395
396
  }
396
- return new Buffer(output, "binary");
397
+ return bufferFrom(output, "binary");
397
398
  };
398
399
  });
399
400
 
@@ -4935,14 +4936,14 @@ var require_lib2 = __commonJS((exports2, module2) => {
4935
4936
  });
4936
4937
  });
4937
4938
 
4938
- // src/orm/utils/addon/pg/pg.ts
4939
+ // src/orm/pg/utils/addon/pg/pg.ts
4939
4940
  var exports_pg = {};
4940
4941
  __export(exports_pg, {
4941
4942
  types: () => types,
4942
4943
  escapeLiteral: () => escapeLiteral,
4943
4944
  escapeIdentifier: () => escapeIdentifier,
4944
4945
  defaults: () => defaults,
4945
- default: () => esm_default,
4946
+ default: () => import_pg.default,
4946
4947
  TypeOverrides: () => TypeOverrides,
4947
4948
  Result: () => Result,
4948
4949
  Query: () => Query,
@@ -4966,4 +4967,3 @@ var escapeLiteral = import_lib.default.escapeLiteral;
4966
4967
  var Result = import_lib.default.Result;
4967
4968
  var TypeOverrides = import_lib.default.TypeOverrides;
4968
4969
  var defaults = import_lib.default.defaults;
4969
- var esm_default = import_lib.default;
@@ -149,7 +149,6 @@ class QueryCache {
149
149
  if (this.cache.size === 0)
150
150
  return;
151
151
  let keyToEvict;
152
- let entryToEvict;
153
152
  switch (this.options.strategy) {
154
153
  case 'lru':
155
154
  keyToEvict = this.cache.keys().next().value;
@@ -160,7 +159,6 @@ class QueryCache {
160
159
  if (entry.createdAt < oldestTime) {
161
160
  oldestTime = entry.createdAt;
162
161
  keyToEvict = key;
163
- entryToEvict = entry;
164
162
  }
165
163
  });
166
164
  break;
@@ -170,7 +168,6 @@ class QueryCache {
170
168
  if (entry.size > largestSize) {
171
169
  largestSize = entry.size;
172
170
  keyToEvict = key;
173
- entryToEvict = entry;
174
171
  }
175
172
  });
176
173
  break;
@@ -285,7 +282,7 @@ function createQueryCacheMiddleware(options) {
285
282
  }
286
283
  };
287
284
  }
288
- function withCache(cache, key, fn, ttl) {
285
+ function withCache(cache, key, fn, _ttl) {
289
286
  const cached = cache.get(key);
290
287
  if (cached !== undefined) {
291
288
  return cached;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CTERefBuilder = void 0;
4
+ exports.createCTEAccessor = createCTEAccessor;
5
+ class CTERefBuilder {
6
+ cteName;
7
+ dialect;
8
+ resolveColumn;
9
+ selectedColumns = [];
10
+ whereConditions = [];
11
+ orderByClauses = [];
12
+ limitCount;
13
+ _sourceTableKey;
14
+ constructor(cteName, dialect, resolveColumn = (c) => c, sourceTableKey) {
15
+ this.cteName = cteName;
16
+ this.dialect = dialect;
17
+ this.resolveColumn = resolveColumn;
18
+ this._sourceTableKey = sourceTableKey;
19
+ }
20
+ select(...columns) {
21
+ this.selectedColumns = columns.map(c => this.resolveColumn(c));
22
+ return this;
23
+ }
24
+ where(callback) {
25
+ const collector = this.dialect.createCollector();
26
+ callback(collector);
27
+ const conditions = collector.getConditions();
28
+ this.whereConditions.push(...this.transformConditions(conditions));
29
+ return this;
30
+ }
31
+ orderBy(column, direction = 'ASC') {
32
+ this.orderByClauses.push(`${this.dialect.quoteIdent(this.resolveColumn(column))} ${direction}`);
33
+ return this;
34
+ }
35
+ limit(count) {
36
+ this.limitCount = count;
37
+ return this;
38
+ }
39
+ toString() {
40
+ const q = this.dialect.quoteIdent;
41
+ const cols = this.selectedColumns.length > 0
42
+ ? this.selectedColumns.map(c => q(c)).join(', ')
43
+ : '*';
44
+ let sql = `SELECT ${cols} FROM ${q(this.cteName)}`;
45
+ if (this.whereConditions.length > 0) {
46
+ sql += ` WHERE ${this.dialect.buildConditionsSQL(this.whereConditions)}`;
47
+ }
48
+ if (this.orderByClauses.length > 0) {
49
+ sql += ` ORDER BY ${this.orderByClauses.join(', ')}`;
50
+ }
51
+ if (this.limitCount !== undefined) {
52
+ sql += ` LIMIT ${this.limitCount}`;
53
+ }
54
+ return sql;
55
+ }
56
+ transformConditions(conditions) {
57
+ return conditions.map((cond) => {
58
+ if (!cond.column)
59
+ return cond;
60
+ if (cond.method === 'or' || cond.method === 'and' || cond.method === 'not') {
61
+ return { ...cond, values: this.transformConditions(cond.values) };
62
+ }
63
+ return { ...cond, column: this.resolveColumn(cond.column) };
64
+ });
65
+ }
66
+ }
67
+ exports.CTERefBuilder = CTERefBuilder;
68
+ function createCTEAccessor(cteNames, dialect, cteMetas) {
69
+ return new Proxy({}, {
70
+ get(_, prop) {
71
+ if (typeof prop === 'symbol')
72
+ return undefined;
73
+ if (!cteNames.has(prop)) {
74
+ throw new Error(`CTE "${prop}" is not defined. Available CTEs: ${[...cteNames].join(', ')}.`);
75
+ }
76
+ const meta = cteMetas?.get(prop);
77
+ return new CTERefBuilder(prop, dialect, meta?.columnResolver || ((c) => c), meta?.sourceTableKey);
78
+ }
79
+ });
80
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPgCTEDialect = createPgCTEDialect;
4
+ exports.createMysqlCTEDialect = createMysqlCTEDialect;
5
+ function createPgCTEDialect() {
6
+ const { ConditionCollector, buildConditionsSQL } = require("../../pg/condition/condition-collector.cjs");
7
+ return {
8
+ quoteIdent: (name) => `"${name}"`,
9
+ supportsMaterialized: true,
10
+ supportsRecursive: true,
11
+ createCollector: () => new ConditionCollector(),
12
+ buildConditionsSQL: (conditions) => buildConditionsSQL(conditions),
13
+ };
14
+ }
15
+ function createMysqlCTEDialect() {
16
+ const { MysqlConditionCollector, buildMysqlConditionsSQL } = require("../../mysql/condition/condition-collector.cjs");
17
+ return {
18
+ quoteIdent: (name) => `\`${name}\``,
19
+ supportsMaterialized: false,
20
+ supportsRecursive: true,
21
+ createCollector: () => new MysqlConditionCollector(),
22
+ buildConditionsSQL: (conditions) => buildMysqlConditionsSQL(conditions),
23
+ };
24
+ }
@@ -0,0 +1,254 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NativeCTEBuilder = void 0;
4
+ const cte_accessor_1 = require("./cte-accessor.cjs");
5
+ const methods_1 = require("../helpers/methods.cjs");
6
+ const relq_errors_1 = require("../../shared/errors/relq-errors.cjs");
7
+ class CTEFromQuery {
8
+ cteName;
9
+ cteDefinitions;
10
+ dialect;
11
+ relq;
12
+ selectedColumns = [];
13
+ whereConditions = [];
14
+ orderByClauses = [];
15
+ limitCount;
16
+ offsetCount;
17
+ sourceTableKey;
18
+ numericAliases;
19
+ constructor(cteName, cteDefinitions, dialect, relq) {
20
+ this.cteName = cteName;
21
+ this.cteDefinitions = cteDefinitions;
22
+ this.dialect = dialect;
23
+ this.relq = relq;
24
+ const cteDef = cteDefinitions.find(c => c.name === cteName);
25
+ this.sourceTableKey = cteDef?.sourceTableKey;
26
+ this.numericAliases = cteDef?.numericAliases;
27
+ }
28
+ select(...columns) {
29
+ this.selectedColumns = columns.map(c => this.resolveColumn(c));
30
+ return this;
31
+ }
32
+ where(callback) {
33
+ const collector = this.dialect.createCollector();
34
+ callback(collector);
35
+ const conditions = collector.getConditions();
36
+ this.whereConditions.push(...this.transformConditions(conditions));
37
+ return this;
38
+ }
39
+ orderBy(column, direction = 'ASC') {
40
+ const dbCol = this.resolveColumn(column);
41
+ this.orderByClauses.push(`${this.dialect.quoteIdent(dbCol)} ${direction}`);
42
+ return this;
43
+ }
44
+ resolveColumn(propName) {
45
+ if (!this.sourceTableKey)
46
+ return propName;
47
+ try {
48
+ const mapped = this.relq[methods_1.INTERNAL].transformToDbColumns(this.sourceTableKey, { [propName]: true });
49
+ const keys = Object.keys(mapped);
50
+ return keys.length > 0 ? keys[0] : propName;
51
+ }
52
+ catch {
53
+ return propName;
54
+ }
55
+ }
56
+ transformConditions(conditions) {
57
+ if (!this.sourceTableKey)
58
+ return conditions;
59
+ return conditions.map((cond) => {
60
+ if (!cond.column)
61
+ return cond;
62
+ if (cond.method === 'or' || cond.method === 'and' || cond.method === 'not') {
63
+ return { ...cond, values: this.transformConditions(cond.values) };
64
+ }
65
+ return { ...cond, column: this.resolveColumn(cond.column) };
66
+ });
67
+ }
68
+ limit(count) {
69
+ this.limitCount = count;
70
+ return this;
71
+ }
72
+ offset(count) {
73
+ this.offsetCount = count;
74
+ return this;
75
+ }
76
+ toString() {
77
+ return `${this.buildWithClause()} ${this.buildMainQuery()}`;
78
+ }
79
+ async all(withMetadata) {
80
+ const sql = this.toString();
81
+ const result = await this.relq[methods_1.INTERNAL].executeSelect(sql, this.sourceTableKey);
82
+ this.coerceNumericResults(result.data);
83
+ if (withMetadata)
84
+ return { data: result.data, metadata: result.metadata };
85
+ return result.data;
86
+ }
87
+ async get(withMetadata) {
88
+ const sql = this.toString();
89
+ const result = await this.relq[methods_1.INTERNAL].executeSelectOne(sql, this.sourceTableKey);
90
+ if (result.data)
91
+ this.coerceNumericResults([result.data]);
92
+ if (withMetadata)
93
+ return { data: result.data, metadata: result.metadata };
94
+ return result.data;
95
+ }
96
+ coerceNumericResults(rows) {
97
+ if (!this.numericAliases || this.numericAliases.length === 0)
98
+ return;
99
+ for (const row of rows) {
100
+ if (!row)
101
+ continue;
102
+ for (const alias of this.numericAliases) {
103
+ if (alias in row && typeof row[alias] === 'string') {
104
+ row[alias] = Number(row[alias]);
105
+ }
106
+ }
107
+ }
108
+ }
109
+ buildWithClause() {
110
+ if (this.cteDefinitions.length === 0)
111
+ return '';
112
+ const hasRecursive = this.cteDefinitions.some(c => c.recursive);
113
+ const keyword = hasRecursive ? 'WITH RECURSIVE' : 'WITH';
114
+ const q = this.dialect.quoteIdent;
115
+ const parts = this.cteDefinitions.map(cte => {
116
+ const name = q(cte.name);
117
+ if (cte.materialized && this.dialect.supportsMaterialized) {
118
+ return `${name} AS MATERIALIZED (${cte.sql})`;
119
+ }
120
+ return `${name} AS (${cte.sql})`;
121
+ });
122
+ return `${keyword} ${parts.join(', ')}`;
123
+ }
124
+ buildMainQuery() {
125
+ const q = this.dialect.quoteIdent;
126
+ const cols = this.selectedColumns.length > 0
127
+ ? this.selectedColumns.map(c => q(c)).join(', ')
128
+ : '*';
129
+ let sql = `SELECT ${cols} FROM ${q(this.cteName)}`;
130
+ if (this.whereConditions.length > 0) {
131
+ sql += ` WHERE ${this.dialect.buildConditionsSQL(this.whereConditions)}`;
132
+ }
133
+ if (this.orderByClauses.length > 0) {
134
+ sql += ` ORDER BY ${this.orderByClauses.join(', ')}`;
135
+ }
136
+ if (this.limitCount !== undefined)
137
+ sql += ` LIMIT ${this.limitCount}`;
138
+ if (this.offsetCount !== undefined)
139
+ sql += ` OFFSET ${this.offsetCount}`;
140
+ return sql;
141
+ }
142
+ }
143
+ class NativeCTEBuilder {
144
+ relq;
145
+ dialect;
146
+ tableAccessorFactory;
147
+ cteDefinitions = [];
148
+ cteNames = new Set();
149
+ cteMetas = new Map();
150
+ constructor(relq, dialect, tableAccessorFactory) {
151
+ this.relq = relq;
152
+ this.dialect = dialect;
153
+ this.tableAccessorFactory = tableAccessorFactory;
154
+ }
155
+ with(name, callback) {
156
+ this.addCTE(name, callback, false);
157
+ return this;
158
+ }
159
+ withMaterialized(name, callback) {
160
+ if (!this.dialect.supportsMaterialized) {
161
+ throw new relq_errors_1.RelqBuilderError('MATERIALIZED CTEs are not supported on MySQL.', { builder: 'cte', hint: 'PostgreSQL 12+ only' });
162
+ }
163
+ this.addCTE(name, callback, true);
164
+ return this;
165
+ }
166
+ withRecursive(name, options) {
167
+ if (!this.dialect.supportsRecursive) {
168
+ throw new relq_errors_1.RelqBuilderError('Recursive CTEs are not supported on this dialect.', { builder: 'cte' });
169
+ }
170
+ this.validateName(name);
171
+ const tableAccessor = this.tableAccessorFactory(this.relq);
172
+ const baseBuilder = options.base(tableAccessor);
173
+ const baseSql = baseBuilder.toString();
174
+ const sourceTableKey = baseBuilder?._sourceTableKey;
175
+ const q = this.dialect.quoteIdent;
176
+ const selfResolve = sourceTableKey
177
+ ? (prop) => {
178
+ try {
179
+ const mapped = this.relq[methods_1.INTERNAL].transformToDbColumns(sourceTableKey, { [prop]: true });
180
+ const keys = Object.keys(mapped);
181
+ return keys.length > 0 ? keys[0] : prop;
182
+ }
183
+ catch {
184
+ return prop;
185
+ }
186
+ }
187
+ : (prop) => prop;
188
+ const selfRef = {
189
+ select: (...cols) => ({
190
+ toString: () => {
191
+ const colsSql = cols.length > 0 ? cols.map(c => q(selfResolve(c))).join(', ') : '*';
192
+ return `SELECT ${colsSql} FROM ${q(name)}`;
193
+ }
194
+ })
195
+ };
196
+ const recursiveSql = options.recursive(tableAccessor, selfRef).toString();
197
+ let columnResolver;
198
+ if (sourceTableKey) {
199
+ columnResolver = (prop) => {
200
+ try {
201
+ const mapped = this.relq[methods_1.INTERNAL].transformToDbColumns(sourceTableKey, { [prop]: true });
202
+ const keys = Object.keys(mapped);
203
+ return keys.length > 0 ? keys[0] : prop;
204
+ }
205
+ catch {
206
+ return prop;
207
+ }
208
+ };
209
+ }
210
+ this.cteMetas.set(name, { sourceTableKey, columnResolver });
211
+ this.cteDefinitions.push({ name, sql: `${baseSql} UNION ALL ${recursiveSql}`, materialized: false, recursive: true, sourceTableKey });
212
+ this.cteNames.add(name);
213
+ return this;
214
+ }
215
+ from(cteName) {
216
+ if (!this.cteNames.has(cteName)) {
217
+ throw new relq_errors_1.RelqBuilderError(`CTE "${cteName}" is not defined.`, { builder: 'cte' });
218
+ }
219
+ return new CTEFromQuery(cteName, [...this.cteDefinitions], this.dialect, this.relq);
220
+ }
221
+ validateName(name) {
222
+ if (this.cteNames.has(name)) {
223
+ throw new relq_errors_1.RelqBuilderError(`CTE "${name}" is already defined.`, { builder: 'cte' });
224
+ }
225
+ }
226
+ addCTE(name, callback, materialized) {
227
+ this.validateName(name);
228
+ const tableAccessor = this.tableAccessorFactory(this.relq);
229
+ const cteAccessor = (0, cte_accessor_1.createCTEAccessor)(this.cteNames, this.dialect, this.cteMetas);
230
+ const builder = callback(tableAccessor, cteAccessor);
231
+ const sourceTableKey = builder?._sourceTableKey;
232
+ const innerBuilder = builder?.builder;
233
+ const numericAliases = typeof innerBuilder?.getNumericAliases === 'function'
234
+ ? innerBuilder.getNumericAliases()
235
+ : undefined;
236
+ let columnResolver;
237
+ if (sourceTableKey) {
238
+ columnResolver = (prop) => {
239
+ try {
240
+ const mapped = this.relq[methods_1.INTERNAL].transformToDbColumns(sourceTableKey, { [prop]: true });
241
+ const keys = Object.keys(mapped);
242
+ return keys.length > 0 ? keys[0] : prop;
243
+ }
244
+ catch {
245
+ return prop;
246
+ }
247
+ };
248
+ }
249
+ this.cteMetas.set(name, { sourceTableKey, columnResolver });
250
+ this.cteDefinitions.push({ name, sql: builder.toString(), materialized, recursive: false, sourceTableKey, numericAliases });
251
+ this.cteNames.add(name);
252
+ }
253
+ }
254
+ exports.NativeCTEBuilder = NativeCTEBuilder;
@@ -1,30 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.debugLog = exports.INTERNAL = exports.ReturningExecutor = exports.PaginateBuilder = exports.ConnectedRawQueryBuilder = exports.ConnectedQueryBuilder = exports.executeTransaction = exports.TransactionClient = exports.ConnectedCountBuilder = exports.ConnectedInsertBuilder = exports.ConnectedDeleteBuilder = exports.ConnectedUpdateBuilder = exports.ConnectedSelectBuilder = exports.ConnectedCTEBuilder = exports.ConnectedAggregateBuilder = void 0;
4
- var ConnectedAggregateBuilder_1 = require("./ConnectedAggregateBuilder.cjs");
3
+ exports.debugLog = exports.INTERNAL = exports.ReturningExecutor = exports.PaginateBuilder = exports.ConnectedRawQueryBuilder = exports.ConnectedQueryBuilder = exports.executeTransaction = exports.TransactionClient = exports.ConnectedCountBuilder = exports.ConnectedInsertBuilder = exports.ConnectedDeleteBuilder = exports.ConnectedUpdateBuilder = exports.ConnectedSelectBuilder = exports.NativeCTEBuilder = exports.ConnectedAggregateBuilder = void 0;
4
+ var ConnectedAggregateBuilder_1 = require("../../pg/helpers/ConnectedAggregateBuilder.cjs");
5
5
  Object.defineProperty(exports, "ConnectedAggregateBuilder", { enumerable: true, get: function () { return ConnectedAggregateBuilder_1.ConnectedAggregateBuilder; } });
6
- var ConnectedCTEBuilder_1 = require("./ConnectedCTEBuilder.cjs");
7
- Object.defineProperty(exports, "ConnectedCTEBuilder", { enumerable: true, get: function () { return ConnectedCTEBuilder_1.ConnectedCTEBuilder; } });
8
- var ConnectedSelectBuilder_1 = require("./ConnectedSelectBuilder.cjs");
6
+ var native_cte_builder_1 = require("../cte/native-cte-builder.cjs");
7
+ Object.defineProperty(exports, "NativeCTEBuilder", { enumerable: true, get: function () { return native_cte_builder_1.NativeCTEBuilder; } });
8
+ var ConnectedSelectBuilder_1 = require("../../pg/helpers/ConnectedSelectBuilder.cjs");
9
9
  Object.defineProperty(exports, "ConnectedSelectBuilder", { enumerable: true, get: function () { return ConnectedSelectBuilder_1.ConnectedSelectBuilder; } });
10
- var ConnectedUpdateBuilder_1 = require("./ConnectedUpdateBuilder.cjs");
10
+ var ConnectedUpdateBuilder_1 = require("../../pg/helpers/ConnectedUpdateBuilder.cjs");
11
11
  Object.defineProperty(exports, "ConnectedUpdateBuilder", { enumerable: true, get: function () { return ConnectedUpdateBuilder_1.ConnectedUpdateBuilder; } });
12
- var ConnectedDeleteBuilder_1 = require("./ConnectedDeleteBuilder.cjs");
12
+ var ConnectedDeleteBuilder_1 = require("../../pg/helpers/ConnectedDeleteBuilder.cjs");
13
13
  Object.defineProperty(exports, "ConnectedDeleteBuilder", { enumerable: true, get: function () { return ConnectedDeleteBuilder_1.ConnectedDeleteBuilder; } });
14
- var ConnectedInsertBuilder_1 = require("./ConnectedInsertBuilder.cjs");
14
+ var ConnectedInsertBuilder_1 = require("../../pg/helpers/ConnectedInsertBuilder.cjs");
15
15
  Object.defineProperty(exports, "ConnectedInsertBuilder", { enumerable: true, get: function () { return ConnectedInsertBuilder_1.ConnectedInsertBuilder; } });
16
- var ConnectedCountBuilder_1 = require("./ConnectedCountBuilder.cjs");
16
+ var ConnectedCountBuilder_1 = require("../../pg/helpers/ConnectedCountBuilder.cjs");
17
17
  Object.defineProperty(exports, "ConnectedCountBuilder", { enumerable: true, get: function () { return ConnectedCountBuilder_1.ConnectedCountBuilder; } });
18
- var ConnectedTransactionBuilder_1 = require("./ConnectedTransactionBuilder.cjs");
18
+ var ConnectedTransactionBuilder_1 = require("../../pg/helpers/ConnectedTransactionBuilder.cjs");
19
19
  Object.defineProperty(exports, "TransactionClient", { enumerable: true, get: function () { return ConnectedTransactionBuilder_1.TransactionClient; } });
20
20
  Object.defineProperty(exports, "executeTransaction", { enumerable: true, get: function () { return ConnectedTransactionBuilder_1.executeTransaction; } });
21
- var ConnectedQueryBuilder_1 = require("./ConnectedQueryBuilder.cjs");
21
+ var ConnectedQueryBuilder_1 = require("../../pg/helpers/ConnectedQueryBuilder.cjs");
22
22
  Object.defineProperty(exports, "ConnectedQueryBuilder", { enumerable: true, get: function () { return ConnectedQueryBuilder_1.ConnectedQueryBuilder; } });
23
- var ConnectedRawQueryBuilder_1 = require("./ConnectedRawQueryBuilder.cjs");
23
+ var ConnectedRawQueryBuilder_1 = require("../../pg/helpers/ConnectedRawQueryBuilder.cjs");
24
24
  Object.defineProperty(exports, "ConnectedRawQueryBuilder", { enumerable: true, get: function () { return ConnectedRawQueryBuilder_1.ConnectedRawQueryBuilder; } });
25
- var PaginateBuilder_1 = require("./PaginateBuilder.cjs");
25
+ var PaginateBuilder_1 = require("../../pg/helpers/PaginateBuilder.cjs");
26
26
  Object.defineProperty(exports, "PaginateBuilder", { enumerable: true, get: function () { return PaginateBuilder_1.PaginateBuilder; } });
27
- var ReturningExecutor_1 = require("./ReturningExecutor.cjs");
27
+ var ReturningExecutor_1 = require("../../pg/helpers/ReturningExecutor.cjs");
28
28
  Object.defineProperty(exports, "ReturningExecutor", { enumerable: true, get: function () { return ReturningExecutor_1.ReturningExecutor; } });
29
29
  var methods_1 = require("./methods.cjs");
30
30
  Object.defineProperty(exports, "INTERNAL", { enumerable: true, get: function () { return methods_1.INTERNAL; } });
@@ -1,47 +1,11 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
3
  exports.RelqBase = void 0;
37
4
  const node_events_1 = require("node:events");
38
5
  const relq_errors_1 = require("../shared/errors/relq-errors.cjs");
39
- const condition_collector_1 = require("../condition/condition-collector.cjs");
40
6
  const helpers_1 = require("./helpers/index.cjs");
41
- const scalar_select_builder_1 = require("../select/scalar-select-builder.cjs");
42
7
  const column_mapping_1 = require("./shared/column-mapping.cjs");
43
8
  const validation_1 = require("./shared/validation.cjs");
44
- const table_accessor_1 = require("./shared/table-accessor.cjs");
45
9
  const cleanup_1 = require("./shared/cleanup.cjs");
46
10
  class RelqBase {
47
11
  config;
@@ -111,6 +75,7 @@ class RelqBase {
111
75
  executeCount: this._executeCount.bind(this),
112
76
  executeRun: this._executeRun.bind(this),
113
77
  executeQuery: this._executeQuery.bind(this),
78
+ executeRawQuery: (sql) => this._executeQuery(sql, false),
114
79
  transformToDbColumns: this._transformToDbColumns.bind(this),
115
80
  transformFromDbColumns: this._transformFromDbColumns.bind(this),
116
81
  transformResultsFromDb: this._transformResultsFromDb.bind(this),
@@ -122,7 +87,7 @@ class RelqBase {
122
87
  getTableDef: this._getTableDef.bind(this)
123
88
  };
124
89
  }
125
- async _executeQuery(sql) {
90
+ async _executeQuery(sql, isBuilder = true) {
126
91
  if (!sql || typeof sql !== 'string' || sql.trim() === '') {
127
92
  throw new relq_errors_1.RelqConnectionError(`Invalid SQL query: ${sql === null ? 'null' : sql === undefined ? 'undefined' : 'empty string'}`);
128
93
  }
@@ -130,7 +95,7 @@ class RelqBase {
130
95
  const startTime = performance.now();
131
96
  const retryConfig = this.config.retry;
132
97
  if (!retryConfig) {
133
- const result = await this._query(sql);
98
+ const result = await this._query(sql, isBuilder);
134
99
  return { result, duration: performance.now() - startTime };
135
100
  }
136
101
  const opts = typeof retryConfig === 'object'
@@ -139,7 +104,7 @@ class RelqBase {
139
104
  let lastError;
140
105
  for (let attempt = 0; attempt <= opts.maxRetries; attempt++) {
141
106
  try {
142
- const result = await this._query(sql);
107
+ const result = await this._query(sql, isBuilder);
143
108
  return { result, duration: performance.now() - startTime };
144
109
  }
145
110
  catch (error) {
@@ -200,55 +165,6 @@ class RelqBase {
200
165
  metadata: this.buildMetadata(result, duration)
201
166
  };
202
167
  }
203
- get table() {
204
- return (0, table_accessor_1.createTableAccessor)(this, this.schema);
205
- }
206
- raw(query, ...params) {
207
- return new helpers_1.ConnectedRawQueryBuilder(query, params, this);
208
- }
209
- async transaction(callback) {
210
- const { executeTransaction } = await Promise.resolve().then(() => __importStar(require("./helpers/ConnectedTransactionBuilder.cjs")));
211
- return executeTransaction(this, callback);
212
- }
213
- with(name, query) {
214
- return new helpers_1.ConnectedCTEBuilder(this).with(name, query);
215
- }
216
- async ctAs(tableName, query, options = {}) {
217
- const queryStr = typeof query === 'string' ? query : query.toString();
218
- const temp = options.temporary ? 'TEMPORARY ' : '';
219
- const ifNotExists = options.ifNotExists ? 'IF NOT EXISTS ' : '';
220
- const sql = `CREATE ${temp}TABLE ${ifNotExists}"${tableName}" AS ${queryStr}`;
221
- await this[helpers_1.INTERNAL].executeQuery(sql);
222
- }
223
- async explain(query, options = {}) {
224
- const queryStr = typeof query === 'string' ? query : query.toString();
225
- const parts = ['EXPLAIN'];
226
- if (options.format)
227
- parts.push(`(FORMAT ${options.format.toUpperCase()}`);
228
- if (options.analyze)
229
- parts.push(options.format ? ', ANALYZE' : '(ANALYZE');
230
- if (options.verbose)
231
- parts.push(options.format || options.analyze ? ', VERBOSE' : '(VERBOSE');
232
- if (options.format || options.analyze || options.verbose)
233
- parts.push(')');
234
- const sql = `${parts.join(' ')} ${queryStr}`;
235
- const { result } = await this._executeQuery(sql);
236
- if (options.format === 'json') {
237
- return result.rows;
238
- }
239
- return result.rows.map((r) => r['QUERY PLAN'] || Object.values(r)[0]).join('\n');
240
- }
241
- scalar(scalars) {
242
- const schema = this._getSchema();
243
- return new scalar_select_builder_1.ConnectedScalarSelectBuilder(scalars, schema, {
244
- executeSelectOne: this[helpers_1.INTERNAL].executeSelect.bind(this),
245
- hasColumnMapping: this._hasColumnMapping.bind(this),
246
- transformToDbColumns: this._transformToDbColumns.bind(this)
247
- });
248
- }
249
- where(_tableName) {
250
- return new condition_collector_1.ConditionCollector();
251
- }
252
168
  on(event, listener) {
253
169
  this.emitter.on(event, listener);
254
170
  return this;