@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
@@ -0,0 +1,362 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.MysqlBase = void 0;
40
+ exports.loadMysql2 = loadMysql2;
41
+ const relq_errors_1 = require("../../../shared/errors/relq-errors.cjs");
42
+ const relq_base_1 = require("../../../core/relq-base.cjs");
43
+ const methods_1 = require("../../../core/helpers/methods.cjs");
44
+ const mysql_dialect_1 = require("./mysql-dialect.cjs");
45
+ const mysql_error_parser_1 = require("./mysql-error-parser.cjs");
46
+ const mysql_table_accessor_1 = require("../../shared/mysql-table-accessor.cjs");
47
+ const MysqlConnectedRawQueryBuilder_1 = require("../../helpers/MysqlConnectedRawQueryBuilder.cjs");
48
+ const native_cte_builder_1 = require("../../../core/cte/native-cte-builder.cjs");
49
+ const cte_types_1 = require("../../../core/cte/cte-types.cjs");
50
+ const condition_collector_1 = require("../../condition/condition-collector.cjs");
51
+ const methods_2 = require("../../../core/helpers/methods.cjs");
52
+ const mysql_format_1 = __importDefault(require("./mysql-format.cjs"));
53
+ let mysql2Module = null;
54
+ async function loadMysql2() {
55
+ if (!mysql2Module) {
56
+ try {
57
+ const mod = await Promise.resolve().then(() => __importStar(require("../../utils/addon/mysql/mysql2.cjs")));
58
+ mysql2Module = (mod.default || mod);
59
+ return mysql2Module;
60
+ }
61
+ catch (error) {
62
+ throw new relq_errors_1.RelqConfigError('Failed to load "mysql2" module. Install it with:\n' +
63
+ ' npm install mysql2\n' +
64
+ ' # or\n' +
65
+ ' bun add mysql2', { field: 'mysql2', value: error instanceof Error ? error.message : String(error) });
66
+ }
67
+ }
68
+ return mysql2Module;
69
+ }
70
+ class MysqlBase extends relq_base_1.RelqBase {
71
+ sqlDialect = mysql_dialect_1.mysqlDialect;
72
+ pool;
73
+ conn;
74
+ usePooling;
75
+ clientConnected = false;
76
+ mysqlConfig;
77
+ poolErrorHandler;
78
+ constructor(schema, config) {
79
+ super(schema, config);
80
+ this.mysqlConfig = config;
81
+ this.usePooling = this.determineMysqlPoolingStrategy();
82
+ }
83
+ async _initialize() {
84
+ const mysql2 = await loadMysql2();
85
+ const connectionConfig = this.buildConnectionConfig();
86
+ if (this.usePooling) {
87
+ this.pool = mysql2.createPool({
88
+ ...connectionConfig,
89
+ waitForConnections: true,
90
+ connectionLimit: 10,
91
+ queueLimit: 0,
92
+ enableKeepAlive: true,
93
+ keepAliveInitialDelay: 10000,
94
+ });
95
+ this.setupPoolErrorHandling();
96
+ (0, methods_1.debugLog)(this.mysqlConfig, 'MySQL pool created', {
97
+ host: connectionConfig.host,
98
+ port: connectionConfig.port,
99
+ database: connectionConfig.database,
100
+ });
101
+ }
102
+ else {
103
+ this.conn = await mysql2.createConnection(connectionConfig);
104
+ this.clientConnected = true;
105
+ this.conn.on('error', (err) => {
106
+ this.clientConnected = false;
107
+ this.emitter.emit('error', err);
108
+ });
109
+ (0, methods_1.debugLog)(this.mysqlConfig, 'MySQL single connection created');
110
+ }
111
+ }
112
+ async _query(sql, isBuilder = true) {
113
+ const executeQuery = async () => {
114
+ if (this.pool) {
115
+ const [rows, fields] = await this.pool.execute(sql);
116
+ return this.toDriverResult(rows, fields, sql);
117
+ }
118
+ else if (this.conn) {
119
+ if (!this.clientConnected) {
120
+ throw new relq_errors_1.RelqConnectionError('MySQL connection is closed');
121
+ }
122
+ const [rows, fields] = await this.conn.execute(sql);
123
+ return this.toDriverResult(rows, fields, sql);
124
+ }
125
+ else {
126
+ throw new relq_errors_1.RelqConfigError('No MySQL connection available');
127
+ }
128
+ };
129
+ try {
130
+ return await executeQuery();
131
+ }
132
+ catch (error) {
133
+ if ((0, mysql_error_parser_1.isMysqlConnectionError)(error) && !this.usePooling && this.conn) {
134
+ this.clientConnected = false;
135
+ try {
136
+ await this.reconnectSingleClient();
137
+ const [rows, fields] = await this.conn.execute(sql);
138
+ return this.toDriverResult(rows, fields, sql);
139
+ }
140
+ catch {
141
+ throw (0, mysql_error_parser_1.parseMysqlError)(error, sql, isBuilder);
142
+ }
143
+ }
144
+ throw (0, mysql_error_parser_1.parseMysqlError)(error, sql, isBuilder);
145
+ }
146
+ }
147
+ async _acquireClient() {
148
+ if (this.pool) {
149
+ const conn = await this.pool.getConnection();
150
+ return { client: conn, release: () => conn.release() };
151
+ }
152
+ else if (this.conn) {
153
+ return { client: this.conn, release: () => { } };
154
+ }
155
+ else {
156
+ throw new relq_errors_1.RelqConnectionError('No MySQL connection available');
157
+ }
158
+ }
159
+ async _close() {
160
+ if (this.pool) {
161
+ if (this.poolErrorHandler) {
162
+ this.pool.removeListener('error', this.poolErrorHandler);
163
+ }
164
+ this.pool.removeAllListeners();
165
+ await this.pool.end();
166
+ this.pool = undefined;
167
+ }
168
+ else if (this.conn) {
169
+ this.conn.removeAllListeners();
170
+ await this.conn.end();
171
+ this.conn = undefined;
172
+ this.clientConnected = false;
173
+ }
174
+ }
175
+ toDriverResult(rows, fields, sql) {
176
+ const command = this.detectCommand(sql);
177
+ if (Array.isArray(rows)) {
178
+ return {
179
+ rows: rows,
180
+ rowCount: rows.length,
181
+ command,
182
+ fields: (fields || []).map((f) => ({
183
+ name: f.name,
184
+ dataTypeID: f.columnType,
185
+ typeName: f.type,
186
+ })),
187
+ };
188
+ }
189
+ const header = rows;
190
+ return {
191
+ rows: [],
192
+ rowCount: header.affectedRows ?? null,
193
+ command,
194
+ fields: [],
195
+ };
196
+ }
197
+ detectCommand(sql) {
198
+ const trimmed = sql.trimStart().toUpperCase();
199
+ if (trimmed.startsWith('SELECT'))
200
+ return 'SELECT';
201
+ if (trimmed.startsWith('INSERT'))
202
+ return 'INSERT';
203
+ if (trimmed.startsWith('UPDATE'))
204
+ return 'UPDATE';
205
+ if (trimmed.startsWith('DELETE'))
206
+ return 'DELETE';
207
+ if (trimmed.startsWith('REPLACE'))
208
+ return 'REPLACE';
209
+ if (trimmed.startsWith('CREATE'))
210
+ return 'CREATE';
211
+ if (trimmed.startsWith('ALTER'))
212
+ return 'ALTER';
213
+ if (trimmed.startsWith('DROP'))
214
+ return 'DROP';
215
+ if (trimmed.startsWith('EXPLAIN'))
216
+ return 'EXPLAIN';
217
+ if (trimmed.startsWith('SHOW'))
218
+ return 'SHOW';
219
+ if (trimmed.startsWith('DESCRIBE') || trimmed.startsWith('DESC'))
220
+ return 'DESCRIBE';
221
+ if (trimmed.startsWith('SET'))
222
+ return 'SET';
223
+ if (trimmed.startsWith('BEGIN') || trimmed.startsWith('START'))
224
+ return 'BEGIN';
225
+ if (trimmed.startsWith('COMMIT'))
226
+ return 'COMMIT';
227
+ if (trimmed.startsWith('ROLLBACK'))
228
+ return 'ROLLBACK';
229
+ return 'UNKNOWN';
230
+ }
231
+ buildConnectionConfig() {
232
+ const config = this.mysqlConfig;
233
+ return {
234
+ host: config.host || process.env['MYSQL_HOST'] || 'localhost',
235
+ port: config.port || Number(process.env['MYSQL_PORT']) || 3306,
236
+ user: config.user || process.env['MYSQL_USER'] || 'root',
237
+ password: config.password || process.env['MYSQL_PASSWORD'] || '',
238
+ database: config.database || process.env['MYSQL_DATABASE'],
239
+ ssl: config.ssl || undefined,
240
+ supportBigNumbers: true,
241
+ bigNumberStrings: true,
242
+ timezone: '+00:00',
243
+ dateStrings: false,
244
+ };
245
+ }
246
+ determineMysqlPoolingStrategy() {
247
+ return true;
248
+ }
249
+ setupPoolErrorHandling() {
250
+ if (!this.pool)
251
+ return;
252
+ this.poolErrorHandler = (err) => {
253
+ this.emitter.emit('error', err);
254
+ if ((0, mysql_error_parser_1.isMysqlPoolRecoverableError)(err)) {
255
+ const logLevel = this.mysqlConfig.logLevel ?? 'info';
256
+ if (logLevel !== 'silent') {
257
+ console.warn('[Relq MySQL Pool] Recoverable connection error (pool will auto-recover):', {
258
+ code: err.errno || err.code,
259
+ message: err.message,
260
+ action: 'Connection removed from pool, will be replaced on next query',
261
+ });
262
+ }
263
+ return;
264
+ }
265
+ const logLevel = this.mysqlConfig.logLevel ?? 'info';
266
+ if (logLevel !== 'silent') {
267
+ console.error('[Relq MySQL Pool] Pool error:', {
268
+ code: err.errno || err.code,
269
+ message: err.message,
270
+ });
271
+ }
272
+ };
273
+ this.pool.on('error', this.poolErrorHandler);
274
+ }
275
+ async reconnectSingleClient() {
276
+ const mysql2 = await loadMysql2();
277
+ const connectionConfig = this.buildConnectionConfig();
278
+ if (this.conn) {
279
+ try {
280
+ this.conn.removeAllListeners();
281
+ this.conn.destroy();
282
+ }
283
+ catch { }
284
+ }
285
+ this.conn = await mysql2.createConnection(connectionConfig);
286
+ this.clientConnected = true;
287
+ this.conn.on('error', (err) => {
288
+ this.clientConnected = false;
289
+ this.emitter.emit('error', err);
290
+ });
291
+ this.emitter.emit('connect', this.conn);
292
+ }
293
+ async lastInsertId() {
294
+ await this.ensureInitialized();
295
+ const result = await this._query('SELECT LAST_INSERT_ID() AS `id`');
296
+ const raw = result.rows[0]?.id;
297
+ return typeof raw === 'string' ? BigInt(raw) : BigInt(raw);
298
+ }
299
+ async executeRaw(sql, params) {
300
+ await this.ensureInitialized();
301
+ const execute = async () => {
302
+ if (this.pool) {
303
+ return await this.pool.execute(sql, params);
304
+ }
305
+ else if (this.conn) {
306
+ return await this.conn.execute(sql, params);
307
+ }
308
+ else {
309
+ throw new relq_errors_1.RelqConnectionError('No MySQL connection available');
310
+ }
311
+ };
312
+ try {
313
+ const [rows, fields] = await execute();
314
+ return this.toDriverResult(rows, fields, sql);
315
+ }
316
+ catch (error) {
317
+ throw (0, mysql_error_parser_1.parseMysqlError)(error, sql);
318
+ }
319
+ }
320
+ get table() {
321
+ return (0, mysql_table_accessor_1.createMysqlTableAccessor)(this, this.schema);
322
+ }
323
+ raw(query, ...params) {
324
+ return new MysqlConnectedRawQueryBuilder_1.MysqlConnectedRawQueryBuilder(query, params, this);
325
+ }
326
+ async transaction(callback, options) {
327
+ const { executeMysqlTransaction } = await Promise.resolve().then(() => __importStar(require("../../helpers/MysqlConnectedTransactionBuilder.cjs")));
328
+ return executeMysqlTransaction(this, callback, options);
329
+ }
330
+ cte() {
331
+ return new native_cte_builder_1.NativeCTEBuilder(this, (0, cte_types_1.createMysqlCTEDialect)(), (relq) => (0, mysql_table_accessor_1.createMysqlTableAccessor)(relq, this._getSchema()));
332
+ }
333
+ async ctAs(tableName, query, options = {}) {
334
+ const queryStr = typeof query === 'string' ? query : query.toString();
335
+ const temp = options.temporary ? 'TEMPORARY ' : '';
336
+ const ifNotExists = options.ifNotExists ? 'IF NOT EXISTS ' : '';
337
+ const sql = `CREATE ${temp}TABLE ${ifNotExists}${mysql_format_1.default.ident(tableName)} AS ${queryStr}`;
338
+ await this[methods_2.INTERNAL].executeQuery(sql);
339
+ }
340
+ async explain(query, options = {}) {
341
+ const queryStr = typeof query === 'string' ? query : query.toString();
342
+ const prefix = options.analyze ? 'EXPLAIN ANALYZE' : 'EXPLAIN';
343
+ const sql = `${prefix} ${queryStr}`;
344
+ const { result } = await this._executeQuery(sql);
345
+ return result.rows;
346
+ }
347
+ scalar(scalars) {
348
+ const { MysqlConnectedScalarSelectBuilder } = require("../../select/scalar-select-builder.cjs");
349
+ const schema = this._getSchema();
350
+ return new MysqlConnectedScalarSelectBuilder(scalars, schema, {
351
+ executeSelectOne: this[methods_2.INTERNAL].executeSelect.bind(this),
352
+ hasColumnMapping: this._hasColumnMapping.bind(this),
353
+ transformToDbColumns: this._transformToDbColumns.bind(this)
354
+ });
355
+ }
356
+ where(tableName) {
357
+ const collector = new condition_collector_1.MysqlConditionCollector();
358
+ collector._tableName = tableName;
359
+ return collector;
360
+ }
361
+ }
362
+ exports.MysqlBase = MysqlBase;
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mysqlDialect = exports.MysqlDialect = void 0;
4
+ exports.getMysqlDialectCapabilities = getMysqlDialectCapabilities;
5
+ const MYSQL_VARIANT_CAPABILITIES = {
6
+ mysql: {
7
+ supportsReturning: false,
8
+ supportsForeignKeys: true,
9
+ supportsCtesRecursive: true,
10
+ supportsWindowFunctions: true,
11
+ supportsJsonTable: true,
12
+ supportsExplainAnalyze: true,
13
+ supportsCheckConstraints: true,
14
+ supportsGeneratedColumns: true,
15
+ supportsInvisibleColumns: true,
16
+ defaultCharset: 'utf8mb4',
17
+ defaultCollation: 'utf8mb4_0900_ai_ci',
18
+ },
19
+ mariadb: {
20
+ supportsReturning: true,
21
+ supportsForeignKeys: true,
22
+ supportsCtesRecursive: true,
23
+ supportsWindowFunctions: true,
24
+ supportsJsonTable: false,
25
+ supportsExplainAnalyze: true,
26
+ supportsCheckConstraints: true,
27
+ supportsGeneratedColumns: true,
28
+ supportsInvisibleColumns: true,
29
+ defaultCharset: 'utf8mb4',
30
+ defaultCollation: 'utf8mb4_uca1400_ai_ci',
31
+ },
32
+ planetscale: {
33
+ supportsReturning: false,
34
+ supportsForeignKeys: false,
35
+ supportsCtesRecursive: true,
36
+ supportsWindowFunctions: true,
37
+ supportsJsonTable: true,
38
+ supportsExplainAnalyze: true,
39
+ supportsCheckConstraints: true,
40
+ supportsGeneratedColumns: true,
41
+ supportsInvisibleColumns: false,
42
+ defaultCharset: 'utf8mb4',
43
+ defaultCollation: 'utf8mb4_0900_ai_ci',
44
+ },
45
+ };
46
+ function getMysqlDialectCapabilities(variant) {
47
+ return MYSQL_VARIANT_CAPABILITIES[variant];
48
+ }
49
+ class MysqlDialect {
50
+ name = 'mysql';
51
+ quoteIdentifier(name) {
52
+ if (name === '*')
53
+ return '*';
54
+ if (name.includes('.')) {
55
+ return name.split('.').map(p => p === '*' ? '*' : `\`${p.replace(/`/g, '``')}\``).join('.');
56
+ }
57
+ return `\`${name.replace(/`/g, '``')}\``;
58
+ }
59
+ quoteString(value) {
60
+ return `'${value.replace(/'/g, "''")}'`;
61
+ }
62
+ formatBoolean(value) {
63
+ return value ? 'TRUE' : 'FALSE';
64
+ }
65
+ returning(columns) {
66
+ return `RETURNING ${columns.map(c => c === '*' ? '*' : this.quoteIdentifier(c)).join(', ')}`;
67
+ }
68
+ upsert(_conflictColumns, updateColumns) {
69
+ const sets = Object.keys(updateColumns)
70
+ .map(c => `${this.quoteIdentifier(c)} = VALUES(${this.quoteIdentifier(c)})`)
71
+ .join(', ');
72
+ return `ON DUPLICATE KEY UPDATE ${sets}`;
73
+ }
74
+ distinctOn(_columns) {
75
+ throw new Error('DISTINCT ON is not supported in MySQL. Use GROUP BY with ANY_VALUE() instead.');
76
+ }
77
+ lateralSubquery(_subquery, _alias) {
78
+ throw new Error('LATERAL JOIN is not used in MySQL family. Use correlated subqueries instead.');
79
+ }
80
+ jsonAgg(expression, alias) {
81
+ return `COALESCE(JSON_ARRAYAGG(${expression}), JSON_ARRAY()) AS ${this.quoteIdentifier(alias)}`;
82
+ }
83
+ rowToJson(alias) {
84
+ return `JSON_OBJECT(${alias}.*)`;
85
+ }
86
+ explain(query, options) {
87
+ const parts = ['EXPLAIN'];
88
+ if (options.format) {
89
+ parts.push(`FORMAT = ${options.format.toUpperCase()}`);
90
+ }
91
+ if (options.analyze) {
92
+ parts.push('ANALYZE');
93
+ }
94
+ return `${parts.join(' ')} ${query}`;
95
+ }
96
+ typeCast(expression, targetType) {
97
+ return `CAST(${expression} AS ${targetType})`;
98
+ }
99
+ currentTimestamp() {
100
+ return 'NOW()';
101
+ }
102
+ randomUuid() {
103
+ return 'UUID()';
104
+ }
105
+ supports(capability) {
106
+ return MYSQL_BASE_CAPABILITIES[capability] === true;
107
+ }
108
+ transformSql(sql) {
109
+ return sql;
110
+ }
111
+ }
112
+ exports.MysqlDialect = MysqlDialect;
113
+ exports.mysqlDialect = new MysqlDialect();
114
+ const MYSQL_BASE_CAPABILITIES = {
115
+ returning: false,
116
+ lateral: false,
117
+ distinctOn: false,
118
+ listenNotify: false,
119
+ pooling: true,
120
+ cursors: true,
121
+ jsonb: false,
122
+ arrays: false,
123
+ ranges: false,
124
+ fullTextSearch: true,
125
+ upsert: true,
126
+ forUpdateSkipLocked: true,
127
+ windowFunctions: true,
128
+ cte: true,
129
+ recursiveCte: true,
130
+ explainAnalyze: true,
131
+ savepoints: true,
132
+ createTableAs: true,
133
+ materializedViews: false,
134
+ storedProcedures: true,
135
+ triggers: true,
136
+ sequences: false,
137
+ copy: false,
138
+ vacuum: false,
139
+ identifierQuote: '`',
140
+ parameterStyle: 'question',
141
+ };