neoorm 0.8.0 → 0.8.2

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 (380) hide show
  1. package/README.md +13 -6
  2. package/dist/bin/neoorm.d.ts +1 -1
  3. package/dist/bin/neoorm.d.ts.map +1 -1
  4. package/dist/bin/neoorm.js +148 -75
  5. package/dist/bin/neoorm.js.map +1 -1
  6. package/dist/codegen/diff-manifest.d.ts.map +1 -1
  7. package/dist/codegen/diff-manifest.js +106 -4
  8. package/dist/codegen/diff-manifest.js.map +1 -1
  9. package/dist/codegen/generate-summary.d.ts +5 -1
  10. package/dist/codegen/generate-summary.d.ts.map +1 -1
  11. package/dist/codegen/generate-summary.js +10 -1
  12. package/dist/codegen/generate-summary.js.map +1 -1
  13. package/dist/codegen/generate.d.ts +24 -4
  14. package/dist/codegen/generate.d.ts.map +1 -1
  15. package/dist/codegen/generate.js +150 -13
  16. package/dist/codegen/generate.js.map +1 -1
  17. package/dist/codegen/manifest-relations.d.ts +2 -0
  18. package/dist/codegen/manifest-relations.d.ts.map +1 -1
  19. package/dist/codegen/manifest-relations.js +2 -1
  20. package/dist/codegen/manifest-relations.js.map +1 -1
  21. package/dist/codegen/schema-to-manifest.d.ts +1 -1
  22. package/dist/codegen/schema-to-manifest.d.ts.map +1 -1
  23. package/dist/codegen/schema-to-manifest.js +349 -29
  24. package/dist/codegen/schema-to-manifest.js.map +1 -1
  25. package/dist/codegen/validation/emit-elysia.d.ts +4 -0
  26. package/dist/codegen/validation/emit-elysia.d.ts.map +1 -0
  27. package/dist/codegen/validation/emit-elysia.js +304 -0
  28. package/dist/codegen/validation/emit-elysia.js.map +1 -0
  29. package/dist/codegen/validation/emit-typebox.d.ts +4 -0
  30. package/dist/codegen/validation/emit-typebox.d.ts.map +1 -0
  31. package/dist/codegen/validation/emit-typebox.js +360 -0
  32. package/dist/codegen/validation/emit-typebox.js.map +1 -0
  33. package/dist/codegen/validation/emit-zod.d.ts +4 -0
  34. package/dist/codegen/validation/emit-zod.d.ts.map +1 -0
  35. package/dist/codegen/validation/emit-zod.js +288 -0
  36. package/dist/codegen/validation/emit-zod.js.map +1 -0
  37. package/dist/codegen/validation/from-manifest.d.ts +5 -0
  38. package/dist/codegen/validation/from-manifest.d.ts.map +1 -0
  39. package/dist/codegen/validation/from-manifest.js +284 -0
  40. package/dist/codegen/validation/from-manifest.js.map +1 -0
  41. package/dist/codegen/validation/infer.d.ts +47 -0
  42. package/dist/codegen/validation/infer.d.ts.map +1 -0
  43. package/dist/codegen/validation/infer.js +2 -0
  44. package/dist/codegen/validation/infer.js.map +1 -0
  45. package/dist/codegen/validation/json-generic-types.d.ts +7 -0
  46. package/dist/codegen/validation/json-generic-types.d.ts.map +1 -0
  47. package/dist/codegen/validation/json-generic-types.js +295 -0
  48. package/dist/codegen/validation/json-generic-types.js.map +1 -0
  49. package/dist/codegen/validation/types.d.ts +84 -0
  50. package/dist/codegen/validation/types.d.ts.map +1 -0
  51. package/dist/codegen/validation/types.js +6 -0
  52. package/dist/codegen/validation/types.js.map +1 -0
  53. package/dist/config.d.ts +8 -0
  54. package/dist/config.d.ts.map +1 -1
  55. package/dist/config.js +30 -0
  56. package/dist/config.js.map +1 -1
  57. package/dist/datasource-provider.d.ts +5 -1
  58. package/dist/datasource-provider.d.ts.map +1 -1
  59. package/dist/datasource-provider.js +21 -2
  60. package/dist/datasource-provider.js.map +1 -1
  61. package/dist/dialect/column-kind-support.d.ts +9 -0
  62. package/dist/dialect/column-kind-support.d.ts.map +1 -0
  63. package/dist/dialect/column-kind-support.js +25 -0
  64. package/dist/dialect/column-kind-support.js.map +1 -0
  65. package/dist/dialect/fk.d.ts +30 -1
  66. package/dist/dialect/fk.d.ts.map +1 -1
  67. package/dist/dialect/fk.js +113 -0
  68. package/dist/dialect/fk.js.map +1 -1
  69. package/dist/dialect/index.d.ts +6 -1
  70. package/dist/dialect/index.d.ts.map +1 -1
  71. package/dist/dialect/index.js +5 -0
  72. package/dist/dialect/index.js.map +1 -1
  73. package/dist/dialect/mariadb.d.ts +4 -0
  74. package/dist/dialect/mariadb.d.ts.map +1 -0
  75. package/dist/dialect/mariadb.js +15 -0
  76. package/dist/dialect/mariadb.js.map +1 -0
  77. package/dist/dialect/mariadb.test.d.ts +2 -0
  78. package/dist/dialect/mariadb.test.d.ts.map +1 -0
  79. package/dist/dialect/mariadb.test.js +151 -0
  80. package/dist/dialect/mariadb.test.js.map +1 -0
  81. package/dist/dialect/mysql-family.d.ts +14 -0
  82. package/dist/dialect/mysql-family.d.ts.map +1 -0
  83. package/dist/dialect/mysql-family.js +453 -0
  84. package/dist/dialect/mysql-family.js.map +1 -0
  85. package/dist/dialect/mysql.d.ts +6 -0
  86. package/dist/dialect/mysql.d.ts.map +1 -0
  87. package/dist/dialect/mysql.js +16 -0
  88. package/dist/dialect/mysql.js.map +1 -0
  89. package/dist/dialect/mysql.test.d.ts +2 -0
  90. package/dist/dialect/mysql.test.d.ts.map +1 -0
  91. package/dist/dialect/mysql.test.js +211 -0
  92. package/dist/dialect/mysql.test.js.map +1 -0
  93. package/dist/dialect/placeholders.d.ts +7 -0
  94. package/dist/dialect/placeholders.d.ts.map +1 -0
  95. package/dist/dialect/placeholders.js +18 -0
  96. package/dist/dialect/placeholders.js.map +1 -0
  97. package/dist/dialect/postgres.d.ts +2 -1
  98. package/dist/dialect/postgres.d.ts.map +1 -1
  99. package/dist/dialect/postgres.js +93 -30
  100. package/dist/dialect/postgres.js.map +1 -1
  101. package/dist/dialect/resolve.d.ts +13 -0
  102. package/dist/dialect/resolve.d.ts.map +1 -0
  103. package/dist/dialect/resolve.js +66 -0
  104. package/dist/dialect/resolve.js.map +1 -0
  105. package/dist/dialect/shared.d.ts +8 -1
  106. package/dist/dialect/shared.d.ts.map +1 -1
  107. package/dist/dialect/shared.js +37 -0
  108. package/dist/dialect/shared.js.map +1 -1
  109. package/dist/dialect/sqlite.d.ts.map +1 -1
  110. package/dist/dialect/sqlite.js +50 -18
  111. package/dist/dialect/sqlite.js.map +1 -1
  112. package/dist/dialect/sqlite.test.js +43 -1
  113. package/dist/dialect/sqlite.test.js.map +1 -1
  114. package/dist/dialect/types.d.ts +60 -3
  115. package/dist/dialect/types.d.ts.map +1 -1
  116. package/dist/docs/pages.d.ts.map +1 -1
  117. package/dist/docs/pages.js +5 -0
  118. package/dist/docs/pages.js.map +1 -1
  119. package/dist/docs/render.js +1 -1
  120. package/dist/index.d.ts +6 -3
  121. package/dist/index.d.ts.map +1 -1
  122. package/dist/index.js +5 -2
  123. package/dist/index.js.map +1 -1
  124. package/dist/init/scaffold.d.ts +2 -1
  125. package/dist/init/scaffold.d.ts.map +1 -1
  126. package/dist/init/scaffold.js.map +1 -1
  127. package/dist/init/templates.d.ts +3 -2
  128. package/dist/init/templates.d.ts.map +1 -1
  129. package/dist/init/templates.js +19 -9
  130. package/dist/init/templates.js.map +1 -1
  131. package/dist/introspect/group-fks.d.ts +24 -0
  132. package/dist/introspect/group-fks.d.ts.map +1 -0
  133. package/dist/introspect/group-fks.js +48 -0
  134. package/dist/introspect/group-fks.js.map +1 -0
  135. package/dist/introspect/mysql/to-manifest.d.ts +4 -0
  136. package/dist/introspect/mysql/to-manifest.d.ts.map +1 -0
  137. package/dist/introspect/mysql/to-manifest.js +317 -0
  138. package/dist/introspect/mysql/to-manifest.js.map +1 -0
  139. package/dist/introspect/pull.d.ts +1 -0
  140. package/dist/introspect/pull.d.ts.map +1 -1
  141. package/dist/introspect/pull.js +186 -9
  142. package/dist/introspect/pull.js.map +1 -1
  143. package/dist/introspect/queries.d.ts +11 -1
  144. package/dist/introspect/queries.d.ts.map +1 -1
  145. package/dist/introspect/queries.js +43 -12
  146. package/dist/introspect/queries.js.map +1 -1
  147. package/dist/introspect/sqlite/to-manifest.d.ts.map +1 -1
  148. package/dist/introspect/sqlite/to-manifest.js +99 -26
  149. package/dist/introspect/sqlite/to-manifest.js.map +1 -1
  150. package/dist/introspect/to-manifest.d.ts.map +1 -1
  151. package/dist/introspect/to-manifest.js +154 -28
  152. package/dist/introspect/to-manifest.js.map +1 -1
  153. package/dist/migrate/dev-lock.d.ts +15 -0
  154. package/dist/migrate/dev-lock.d.ts.map +1 -0
  155. package/dist/migrate/dev-lock.js +101 -0
  156. package/dist/migrate/dev-lock.js.map +1 -0
  157. package/dist/migrate/runner.d.ts.map +1 -1
  158. package/dist/migrate/runner.js +143 -51
  159. package/dist/migrate/runner.js.map +1 -1
  160. package/dist/plugins/builtin.d.ts +62 -12
  161. package/dist/plugins/builtin.d.ts.map +1 -1
  162. package/dist/plugins/builtin.js +378 -30
  163. package/dist/plugins/builtin.js.map +1 -1
  164. package/dist/plugins/index.d.ts +1 -0
  165. package/dist/plugins/index.d.ts.map +1 -1
  166. package/dist/plugins/index.js.map +1 -1
  167. package/dist/plugins/json/operators.d.ts.map +1 -1
  168. package/dist/plugins/json/operators.js +69 -3
  169. package/dist/plugins/json/operators.js.map +1 -1
  170. package/dist/plugins/postgis/columns.d.ts.map +1 -1
  171. package/dist/plugins/postgis/columns.js +52 -0
  172. package/dist/plugins/postgis/columns.js.map +1 -1
  173. package/dist/plugins/postgis/columns.test.js +13 -0
  174. package/dist/plugins/postgis/columns.test.js.map +1 -1
  175. package/dist/plugins/postgis/operators.d.ts.map +1 -1
  176. package/dist/plugins/postgis/operators.js +15 -3
  177. package/dist/plugins/postgis/operators.js.map +1 -1
  178. package/dist/plugins/types.d.ts +3 -0
  179. package/dist/plugins/types.d.ts.map +1 -1
  180. package/dist/runtime/client.d.ts +31 -4
  181. package/dist/runtime/client.d.ts.map +1 -1
  182. package/dist/runtime/client.js +131 -6
  183. package/dist/runtime/client.js.map +1 -1
  184. package/dist/runtime/driver.d.ts +2 -0
  185. package/dist/runtime/driver.d.ts.map +1 -1
  186. package/dist/runtime/driver.js +12 -0
  187. package/dist/runtime/driver.js.map +1 -1
  188. package/dist/runtime/error-hints.d.ts.map +1 -1
  189. package/dist/runtime/error-hints.js +37 -10
  190. package/dist/runtime/error-hints.js.map +1 -1
  191. package/dist/runtime/executor.d.ts +1 -0
  192. package/dist/runtime/executor.d.ts.map +1 -1
  193. package/dist/runtime/executor.js +7 -1
  194. package/dist/runtime/executor.js.map +1 -1
  195. package/dist/runtime/mariadb-driver.d.ts +25 -0
  196. package/dist/runtime/mariadb-driver.d.ts.map +1 -0
  197. package/dist/runtime/mariadb-driver.js +103 -0
  198. package/dist/runtime/mariadb-driver.js.map +1 -0
  199. package/dist/runtime/mysql-driver.d.ts +25 -0
  200. package/dist/runtime/mysql-driver.d.ts.map +1 -0
  201. package/dist/runtime/mysql-driver.js +101 -0
  202. package/dist/runtime/mysql-driver.js.map +1 -0
  203. package/dist/runtime/mysql-error.d.ts +15 -0
  204. package/dist/runtime/mysql-error.d.ts.map +1 -0
  205. package/dist/runtime/mysql-error.js +119 -0
  206. package/dist/runtime/mysql-error.js.map +1 -0
  207. package/dist/runtime/mysql-family-pool.d.ts +50 -0
  208. package/dist/runtime/mysql-family-pool.d.ts.map +1 -0
  209. package/dist/runtime/mysql-family-pool.js +52 -0
  210. package/dist/runtime/mysql-family-pool.js.map +1 -0
  211. package/dist/runtime/mysql-family-pool.test.d.ts +2 -0
  212. package/dist/runtime/mysql-family-pool.test.d.ts.map +1 -0
  213. package/dist/runtime/mysql-family-pool.test.js +169 -0
  214. package/dist/runtime/mysql-family-pool.test.js.map +1 -0
  215. package/dist/runtime/mysql-placeholders.d.ts +18 -0
  216. package/dist/runtime/mysql-placeholders.d.ts.map +1 -0
  217. package/dist/runtime/mysql-placeholders.js +133 -0
  218. package/dist/runtime/mysql-placeholders.js.map +1 -0
  219. package/dist/runtime/mysql-placeholders.test.d.ts +2 -0
  220. package/dist/runtime/mysql-placeholders.test.d.ts.map +1 -0
  221. package/dist/runtime/mysql-placeholders.test.js +33 -0
  222. package/dist/runtime/mysql-placeholders.test.js.map +1 -0
  223. package/dist/runtime/query/aggregate.d.ts.map +1 -1
  224. package/dist/runtime/query/aggregate.js +3 -3
  225. package/dist/runtime/query/aggregate.js.map +1 -1
  226. package/dist/runtime/query/compile-aggregate.d.ts +1 -1
  227. package/dist/runtime/query/compile-aggregate.d.ts.map +1 -1
  228. package/dist/runtime/query/compile-aggregate.js +33 -28
  229. package/dist/runtime/query/compile-aggregate.js.map +1 -1
  230. package/dist/runtime/query/compile-where.d.ts +9 -9
  231. package/dist/runtime/query/compile-where.d.ts.map +1 -1
  232. package/dist/runtime/query/compile-where.js +108 -76
  233. package/dist/runtime/query/compile-where.js.map +1 -1
  234. package/dist/runtime/query/compile-write.d.ts +9 -9
  235. package/dist/runtime/query/compile-write.d.ts.map +1 -1
  236. package/dist/runtime/query/compile-write.js +77 -63
  237. package/dist/runtime/query/compile-write.js.map +1 -1
  238. package/dist/runtime/query/count.d.ts.map +1 -1
  239. package/dist/runtime/query/count.js +4 -1
  240. package/dist/runtime/query/count.js.map +1 -1
  241. package/dist/runtime/query/create.d.ts.map +1 -1
  242. package/dist/runtime/query/create.js +38 -12
  243. package/dist/runtime/query/create.js.map +1 -1
  244. package/dist/runtime/query/cursor.d.ts +1 -1
  245. package/dist/runtime/query/cursor.d.ts.map +1 -1
  246. package/dist/runtime/query/cursor.js +6 -7
  247. package/dist/runtime/query/cursor.js.map +1 -1
  248. package/dist/runtime/query/delete.d.ts.map +1 -1
  249. package/dist/runtime/query/delete.js +41 -15
  250. package/dist/runtime/query/delete.js.map +1 -1
  251. package/dist/runtime/query/execute.d.ts +1 -0
  252. package/dist/runtime/query/execute.d.ts.map +1 -1
  253. package/dist/runtime/query/execute.js +23 -8
  254. package/dist/runtime/query/execute.js.map +1 -1
  255. package/dist/runtime/query/find-or-create.d.ts +1 -1
  256. package/dist/runtime/query/find-or-create.d.ts.map +1 -1
  257. package/dist/runtime/query/find-or-create.js +16 -8
  258. package/dist/runtime/query/find-or-create.js.map +1 -1
  259. package/dist/runtime/query/find.d.ts +2 -0
  260. package/dist/runtime/query/find.d.ts.map +1 -1
  261. package/dist/runtime/query/find.js +116 -68
  262. package/dist/runtime/query/find.js.map +1 -1
  263. package/dist/runtime/query/group-by.d.ts.map +1 -1
  264. package/dist/runtime/query/group-by.js.map +1 -1
  265. package/dist/runtime/query/mutation-returning.d.ts +10 -0
  266. package/dist/runtime/query/mutation-returning.d.ts.map +1 -0
  267. package/dist/runtime/query/mutation-returning.js +85 -0
  268. package/dist/runtime/query/mutation-returning.js.map +1 -0
  269. package/dist/runtime/query/paginate.d.ts.map +1 -1
  270. package/dist/runtime/query/paginate.js +3 -3
  271. package/dist/runtime/query/paginate.js.map +1 -1
  272. package/dist/runtime/query/projection.d.ts.map +1 -1
  273. package/dist/runtime/query/projection.js +1 -1
  274. package/dist/runtime/query/projection.js.map +1 -1
  275. package/dist/runtime/query/relation-join.d.ts +5 -0
  276. package/dist/runtime/query/relation-join.d.ts.map +1 -0
  277. package/dist/runtime/query/relation-join.js +26 -0
  278. package/dist/runtime/query/relation-join.js.map +1 -0
  279. package/dist/runtime/query/relation-planner.d.ts +1 -1
  280. package/dist/runtime/query/relation-planner.d.ts.map +1 -1
  281. package/dist/runtime/query/relation-planner.js +72 -58
  282. package/dist/runtime/query/relation-planner.js.map +1 -1
  283. package/dist/runtime/query/relation-writes.d.ts +2 -2
  284. package/dist/runtime/query/relation-writes.d.ts.map +1 -1
  285. package/dist/runtime/query/relation-writes.js +272 -116
  286. package/dist/runtime/query/relation-writes.js.map +1 -1
  287. package/dist/runtime/query/table-index.d.ts +1 -1
  288. package/dist/runtime/query/table-index.d.ts.map +1 -1
  289. package/dist/runtime/query/table-index.js +17 -10
  290. package/dist/runtime/query/table-index.js.map +1 -1
  291. package/dist/runtime/query/unique.d.ts +3 -0
  292. package/dist/runtime/query/unique.d.ts.map +1 -1
  293. package/dist/runtime/query/unique.js +26 -6
  294. package/dist/runtime/query/unique.js.map +1 -1
  295. package/dist/runtime/query/unique.test.js +110 -7
  296. package/dist/runtime/query/unique.test.js.map +1 -1
  297. package/dist/runtime/query/update.d.ts.map +1 -1
  298. package/dist/runtime/query/update.js +89 -23
  299. package/dist/runtime/query/update.js.map +1 -1
  300. package/dist/runtime/query/updated-at.js +2 -2
  301. package/dist/runtime/query/updated-at.js.map +1 -1
  302. package/dist/runtime/query/upsert.d.ts.map +1 -1
  303. package/dist/runtime/query/upsert.js +29 -5
  304. package/dist/runtime/query/upsert.js.map +1 -1
  305. package/dist/runtime/sqlite-open.js +1 -1
  306. package/dist/runtime/sqlite-open.js.map +1 -1
  307. package/dist/runtime/transaction.d.ts +1 -0
  308. package/dist/runtime/transaction.d.ts.map +1 -1
  309. package/dist/runtime/transaction.js +8 -0
  310. package/dist/runtime/transaction.js.map +1 -1
  311. package/dist/runtime/types.d.ts +10 -2
  312. package/dist/runtime/types.d.ts.map +1 -1
  313. package/dist/schema/column-constraints.d.ts +26 -0
  314. package/dist/schema/column-constraints.d.ts.map +1 -0
  315. package/dist/schema/column-constraints.js +143 -0
  316. package/dist/schema/column-constraints.js.map +1 -0
  317. package/dist/schema/column.d.ts +92 -3
  318. package/dist/schema/column.d.ts.map +1 -1
  319. package/dist/schema/column.js +17 -11
  320. package/dist/schema/column.js.map +1 -1
  321. package/dist/schema/index.d.ts +9 -6
  322. package/dist/schema/index.d.ts.map +1 -1
  323. package/dist/schema/index.js +8 -2
  324. package/dist/schema/index.js.map +1 -1
  325. package/dist/schema/json-column.d.ts +9 -0
  326. package/dist/schema/json-column.d.ts.map +1 -0
  327. package/dist/schema/json-column.js +11 -0
  328. package/dist/schema/json-column.js.map +1 -0
  329. package/dist/schema/many-to-many.d.ts +1 -1
  330. package/dist/schema/many-to-many.d.ts.map +1 -1
  331. package/dist/schema/nested-relation-types.d.ts +10 -9
  332. package/dist/schema/nested-relation-types.d.ts.map +1 -1
  333. package/dist/schema/relation-types.d.ts +80 -19
  334. package/dist/schema/relation-types.d.ts.map +1 -1
  335. package/dist/schema/relation.d.ts +11 -1
  336. package/dist/schema/relation.d.ts.map +1 -1
  337. package/dist/schema/relation.js +6 -0
  338. package/dist/schema/relation.js.map +1 -1
  339. package/dist/schema/table.d.ts +74 -11
  340. package/dist/schema/table.d.ts.map +1 -1
  341. package/dist/schema/table.js +93 -7
  342. package/dist/schema/table.js.map +1 -1
  343. package/dist/schema/types.d.ts +7 -6
  344. package/dist/schema/types.d.ts.map +1 -1
  345. package/dist/sql/builder.d.ts +13 -3
  346. package/dist/sql/builder.d.ts.map +1 -1
  347. package/dist/sql/builder.js +155 -5
  348. package/dist/sql/builder.js.map +1 -1
  349. package/dist/sql/index.d.ts +1 -0
  350. package/dist/sql/index.d.ts.map +1 -1
  351. package/dist/sql/index.js.map +1 -1
  352. package/dist/sql/qualify-tables.d.ts +15 -0
  353. package/dist/sql/qualify-tables.d.ts.map +1 -0
  354. package/dist/sql/qualify-tables.js +206 -0
  355. package/dist/sql/qualify-tables.js.map +1 -0
  356. package/dist/sql/template.d.ts +5 -0
  357. package/dist/sql/template.d.ts.map +1 -1
  358. package/dist/sql/template.js +23 -3
  359. package/dist/sql/template.js.map +1 -1
  360. package/dist/utils/load-ts.d.ts +2 -1
  361. package/dist/utils/load-ts.d.ts.map +1 -1
  362. package/dist/utils/load-ts.js +13 -1
  363. package/dist/utils/load-ts.js.map +1 -1
  364. package/docs/cli.md +4 -4
  365. package/docs/configuration.md +12 -5
  366. package/docs/elysia.md +131 -0
  367. package/docs/errors.md +1 -1
  368. package/docs/examples.md +4 -2
  369. package/docs/getting-started.md +28 -2
  370. package/docs/mariadb.md +149 -0
  371. package/docs/migrations.md +5 -3
  372. package/docs/mysql.md +134 -0
  373. package/docs/plugins.md +2 -0
  374. package/docs/queries.md +14 -11
  375. package/docs/relations.md +19 -4
  376. package/docs/schema.md +100 -9
  377. package/docs/sqlite.md +14 -2
  378. package/docs/typebox.md +139 -0
  379. package/docs/zod.md +128 -0
  380. package/package.json +33 -3
@@ -1,7 +1,8 @@
1
1
  import { postgresDialect } from "../../dialect/postgres.js";
2
2
  import { getAppliedMigrations, listPendingMigrations, } from "../../migrate/runner.js";
3
3
  import { SCHEMA_DRIFT_QUERY_CODES, } from "../error-codes.js";
4
- import { createQueryError, NeoOrmQueryError, } from "../errors.js";
4
+ import { createQueryError, NeoOrmDriverError, NeoOrmQueryError, } from "../errors.js";
5
+ import { enrichMysqlError, isMysqlError } from "../mysql-error.js";
5
6
  import { emptyReturningContext, enrichPgError, isPgError, isSchemaDriftPgCode, } from "../pg-error.js";
6
7
  import { enrichSqliteError, isSqliteError } from "../sqlite-error.js";
7
8
  async function resolveMigrationHint(driver, dialect, migrationsDir, schema, driftCode) {
@@ -32,6 +33,16 @@ async function resolveMigrationHint(driver, dialect, migrationsDir, schema, drif
32
33
  return undefined;
33
34
  }
34
35
  }
36
+ function unwrapDriverError(err) {
37
+ if (err instanceof NeoOrmDriverError) {
38
+ return err.cause ?? err;
39
+ }
40
+ return err;
41
+ }
42
+ function isKnownDriverError(err) {
43
+ const inner = unwrapDriverError(err);
44
+ return isSqliteError(inner) || isPgError(inner) || isMysqlError(inner);
45
+ }
35
46
  function isSchemaDriftCode(code) {
36
47
  if (isSchemaDriftPgCode(code)) {
37
48
  return true;
@@ -40,11 +51,15 @@ function isSchemaDriftCode(code) {
40
51
  }
41
52
  async function enrichQueryError(runtime, ctx, sql, err) {
42
53
  const base = queryBaseContext(ctx, sql);
43
- if (isSqliteError(err)) {
44
- return enrichSqliteError(err, runtime.manifest, base);
54
+ const inner = unwrapDriverError(err);
55
+ if (isSqliteError(inner)) {
56
+ return enrichSqliteError(inner, runtime.manifest, base);
57
+ }
58
+ if (isPgError(inner)) {
59
+ return enrichPgError(inner, runtime.manifest, base);
45
60
  }
46
- if (isPgError(err)) {
47
- return enrichPgError(err, runtime.manifest, base);
61
+ if (isMysqlError(inner)) {
62
+ return enrichMysqlError(inner, runtime.manifest, base);
48
63
  }
49
64
  throw err;
50
65
  }
@@ -62,7 +77,7 @@ export async function runQuery(executor, runtime, ctx, sql, params = []) {
62
77
  return await executor.query(sql, params);
63
78
  }
64
79
  catch (err) {
65
- if (isSqliteError(err) || isPgError(err)) {
80
+ if (isKnownDriverError(err)) {
66
81
  const enriched = await enrichQueryError(runtime, ctx, sql, err);
67
82
  await throwQueryError(runtime, enriched, err);
68
83
  }
@@ -74,7 +89,7 @@ export async function runExecute(executor, runtime, ctx, sql, params = []) {
74
89
  return await executor.execute(sql, params);
75
90
  }
76
91
  catch (err) {
77
- if (isSqliteError(err) || isPgError(err)) {
92
+ if (isKnownDriverError(err)) {
78
93
  const enriched = await enrichQueryError(runtime, ctx, sql, err);
79
94
  await throwQueryError(runtime, enriched, err);
80
95
  }
@@ -97,7 +112,7 @@ export async function runQueryOne(executor, runtime, ctx, sql, params = []) {
97
112
  if (err instanceof NeoOrmQueryError) {
98
113
  throw err;
99
114
  }
100
- if (isSqliteError(err) || isPgError(err)) {
115
+ if (isKnownDriverError(err)) {
101
116
  const enriched = await enrichQueryError(runtime, ctx, sql, err);
102
117
  await throwQueryError(runtime, enriched, err);
103
118
  }
@@ -1 +1 @@
1
- {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/runtime/query/execute.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/runtime/query/execute.ts"],"names":[],"mappings":"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"}
@@ -15,5 +15,5 @@ export declare function findOrCreateRecord(executor: Executor, runtime: QueryRun
15
15
  export declare function findOrCreatePk(executor: Executor, runtime: QueryRuntime, tableAccessor: string, item: {
16
16
  where: Record<string, unknown>;
17
17
  create: Record<string, unknown>;
18
- }): Promise<string>;
18
+ }, fkTsName?: string): Promise<unknown>;
19
19
  //# sourceMappingURL=find-or-create.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"find-or-create.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/find-or-create.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAO/C,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,cAAc,CAAC;AAC9D,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAGpE,OAAO,EACN,KAAK,oBAAoB,EAGzB,MAAM,iBAAiB,CAAC;AAIzB,MAAM,MAAM,kBAAkB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACjC,GAAG,oBAAoB,CAAC;AAgDzB,wBAAsB,kBAAkB,CACvC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,YAAY,EACrB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,gBAAgB,GACpB,OAAO,CAAC,kBAAkB,CAAC,CAiE7B;AA6DD,wBAAgB,cAAc,CAC7B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,YAAY,EACrB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE;IACL,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,GACC,OAAO,CAAC,MAAM,CAAC,CASjB"}
1
+ {"version":3,"file":"find-or-create.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/find-or-create.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAO/C,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,cAAc,CAAC;AAC9D,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAGpE,OAAO,EACN,KAAK,oBAAoB,EAGzB,MAAM,iBAAiB,CAAC;AAIzB,MAAM,MAAM,kBAAkB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACjC,GAAG,oBAAoB,CAAC;AAkDzB,wBAAsB,kBAAkB,CACvC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,YAAY,EACrB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,gBAAgB,GACpB,OAAO,CAAC,kBAAkB,CAAC,CAoE7B;AA8DD,wBAAgB,cAAc,CAC7B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,YAAY,EACrB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE;IACL,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,EACD,QAAQ,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CAkBlB"}
@@ -10,7 +10,7 @@ import { fillMissingPrimaryKeys, rowScalarPkValue } from "./primary-key.js";
10
10
  import { projectFindRow, resolveParentProjection, } from "./projection.js";
11
11
  import { getTableIndex, requireTable } from "./table-index.js";
12
12
  import { assertUniqueWhere } from "./unique.js";
13
- function toFindLookupArgs(args) {
13
+ function toFindLookupArgs(args, andSql) {
14
14
  return {
15
15
  where: args.where,
16
16
  take: 1,
@@ -20,6 +20,7 @@ function toFindLookupArgs(args) {
20
20
  ...(args.includeHidden !== undefined
21
21
  ? { includeHidden: args.includeHidden }
22
22
  : {}),
23
+ ...(andSql !== undefined ? { andSql } : {}),
23
24
  };
24
25
  }
25
26
  async function finalizeFindOrCreateRecord(executor, runtime, table, tableAccessor, args, row, created, options = {}) {
@@ -45,20 +46,20 @@ export async function findOrCreateRecord(executor, runtime, tableAccessor, args)
45
46
  const lookupArgs = { ...args, where: uniqueWhere };
46
47
  const createData = { ...args.create, ...uniqueWhere };
47
48
  fillMissingPrimaryKeys(table, createData, tableIndex);
48
- if (dialect.name === "sqlite") {
49
- return findOrCreateSqlite(executor, runtime, tableAccessor, lookupArgs, createData);
49
+ if (!dialect.supportsXmax) {
50
+ return findOrCreateWithoutReturning(executor, runtime, tableAccessor, lookupArgs, createData, constraint.whereSql);
50
51
  }
51
52
  const { keys: insertKeys, values: insertValues } = dataToSqlValues(table, createData, undefined, runtime.tableIndex, dialect);
52
- const findOrCreateSql = buildFindOrCreateQuery(table, insertKeys, constraint.sqlColumns, runtime.tableIndex, projection.hasProjection ? projection.sqlColumns : undefined, projection.includeHidden);
53
+ const findOrCreateSql = buildFindOrCreateQuery(table, insertKeys, constraint.sqlColumns, runtime.tableIndex, projection.hasProjection ? projection.sqlColumns : undefined, projection.includeHidden, dialect, constraint.whereSql);
53
54
  const row = await runQueryOne(executor, runtime, { operation: "findOrCreate", tableAccessor }, findOrCreateSql, insertValues);
54
55
  const created = row[FIND_OR_CREATE_FLAG] === true;
55
56
  const { [FIND_OR_CREATE_FLAG]: _createdFlag, ...rawRow } = row;
56
57
  return finalizeFindOrCreateRecord(executor, runtime, table, tableAccessor, args, rawRow, created);
57
58
  }
58
- async function findOrCreateSqlite(executor, runtime, tableAccessor, args, createData) {
59
+ async function findOrCreateWithoutReturning(executor, runtime, tableAccessor, args, createData, andSql) {
59
60
  const { manifest } = runtime;
60
61
  const table = requireTable(manifest, tableAccessor, "select");
61
- const existing = await findMany(executor, runtime, tableAccessor, toFindLookupArgs(args));
62
+ const existing = await findMany(executor, runtime, tableAccessor, toFindLookupArgs(args, andSql));
62
63
  if (existing.length > 0) {
63
64
  const existingRow = existing[0];
64
65
  if (existingRow) {
@@ -77,7 +78,7 @@ async function findOrCreateSqlite(executor, runtime, tableAccessor, args, create
77
78
  if (!isUniqueViolation(err)) {
78
79
  throw err;
79
80
  }
80
- const retry = await findMany(executor, runtime, tableAccessor, toFindLookupArgs(args));
81
+ const retry = await findMany(executor, runtime, tableAccessor, toFindLookupArgs(args, andSql));
81
82
  if (retry.length > 0) {
82
83
  const retryRow = retry[0];
83
84
  if (retryRow) {
@@ -87,7 +88,7 @@ async function findOrCreateSqlite(executor, runtime, tableAccessor, args, create
87
88
  compileError("findOrCreate insert failed and record was not found");
88
89
  }
89
90
  }
90
- export function findOrCreatePk(executor, runtime, tableAccessor, item) {
91
+ export function findOrCreatePk(executor, runtime, tableAccessor, item, fkTsName) {
91
92
  return findOrCreateRecord(executor, runtime, tableAccessor, {
92
93
  where: item.where,
93
94
  create: item.create,
@@ -95,6 +96,13 @@ export function findOrCreatePk(executor, runtime, tableAccessor, item) {
95
96
  const table = runtime.manifest.tables[tableAccessor];
96
97
  if (!table)
97
98
  compileError(`Unknown table: ${tableAccessor}`);
99
+ if (fkTsName) {
100
+ const value = record[fkTsName];
101
+ if (value == null) {
102
+ compileError(`Missing primary key "${fkTsName}" on table "${tableAccessor}"`);
103
+ }
104
+ return value;
105
+ }
98
106
  return rowScalarPkValue(record, table);
99
107
  });
100
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"find-or-create.js","sourceRoot":"","sources":["../../../src/runtime/query/find-or-create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"find-or-create.js","sourceRoot":"","sources":["../../../src/runtime/query/find-or-create.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,8 @@ type FindManyArgs = {
28
28
  omit?: readonly string[] | Record<string, boolean | undefined>;
29
29
  with?: Record<string, WithInput>;
30
30
  includeHidden?: boolean;
31
+ /** Extra AND predicate (partial unique index `WHERE`). */
32
+ andSql?: string;
31
33
  };
32
34
  type FindByIdArgs = {
33
35
  select?: readonly string[] | Record<string, boolean | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/find.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/find.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
- import { postgresDialect, quoteIdentifier, tableRef, } from "../../dialect/postgres.js";
1
+ import { relationFkPairs } from "../../dialect/fk.js";
2
+ import { joinPlaceholders } from "../../dialect/placeholders.js";
3
+ import { postgresDialect } from "../../dialect/postgres.js";
4
+ import { dialectDisplayName, dialectSupportsDistinctOn, } from "../../dialect/resolve.js";
2
5
  import { rebaseParamRefs } from "../../sql/template.js";
3
6
  import { compileError } from "../compile-error.js";
4
7
  import { buildFindByIdQuery, buildFindManyQuery, buildSelectColumns, compileOrderBy, compileWhere, getCachedFindManyQuery, getCachedOrderByClause, getCachedWhereClause, isImpossibleWhere, normalizeLimitOffset, normalizeSelectColumns, } from "./compile.js";
@@ -9,6 +12,7 @@ import { primaryKeyTsNames, requireScalarPrimaryKey, resolvePkWhere, rowPkKey, t
9
12
  import { projectFindRow, projectFindRows, projectionSignature, resolveParentProjection, } from "./projection.js";
10
13
  import { buildCountAggregateGroupBy, buildPlanExtraSelectCols, compileCountOrderBy, getCachedFindByIdWithQuery, getCachedRelationPlan, hydrateRowsWithPlan, planRelationLoad, withShapeSignature, } from "./relation-planner.js";
11
14
  import { columnBySqlName, getTableIndex, requireTable, } from "./table-index.js";
15
+ import { appendUniquePredicate } from "./unique.js";
12
16
  function isRelationSpec(withSpec) {
13
17
  if (typeof withSpec !== "object" || withSpec === null)
14
18
  return false;
@@ -20,6 +24,13 @@ function isRelationSpec(withSpec) {
20
24
  "with" in withSpec ||
21
25
  "includeHidden" in withSpec);
22
26
  }
27
+ function assertDistinctOnSupported(distinctOn, dialect) {
28
+ if (!distinctOn || distinctOn.length === 0)
29
+ return;
30
+ if (dialectSupportsDistinctOn(dialect))
31
+ return;
32
+ compileError(`distinct is not supported on ${dialectDisplayName(dialect.name)} (DISTINCT ON is PostgreSQL-only). Use groupBy or orderBy + a manual query instead.`);
33
+ }
23
34
  function validateDistinctOrderBy(distinct, orderBy) {
24
35
  if (!distinct || distinct.length === 0)
25
36
  return;
@@ -77,10 +88,9 @@ async function loadRelationCounts(executor, runtime, parentTable, parentRows, co
77
88
  const counts = await countRelationLinks(executor, runtime, parentTable, relationName, parentIds, whereFilter);
78
89
  for (const parent of parentRows) {
79
90
  const parentKey = rowPkKey(parent, parentTable);
80
- const bucket = parent["_count"] ??
81
- {};
91
+ const bucket = parent._count ?? {};
82
92
  bucket[relationName] = counts.get(parentKey) ?? 0;
83
- parent["_count"] = bucket;
93
+ parent._count = bucket;
84
94
  }
85
95
  }));
86
96
  }
@@ -92,14 +102,14 @@ async function countRelationLinks(executor, runtime, parentTable, relationName,
92
102
  return countM2MLinks(executor, runtime, parentTable, m2m, parentIds, whereFilter);
93
103
  }
94
104
  const relation = findRelation(parentTable, relationName);
95
- if (!relation || relation.cardinality !== "many") {
105
+ if (relation?.cardinality !== "many") {
96
106
  return new Map();
97
107
  }
98
108
  const targetTable = manifest.tables[relation.targetAccessor];
99
109
  if (!targetTable)
100
110
  return new Map();
101
- const fkCol = quoteIdentifier(relation.fkSqlColumn);
102
- const placeholders = parentIds.map((_, i) => `$${i + 1}`).join(", ");
111
+ const fkCol = dialect.quoteIdentifier(relation.fkSqlColumn);
112
+ const placeholders = joinPlaceholders(dialect, parentIds.length);
103
113
  let extraWhere = "";
104
114
  let extraParams = [];
105
115
  if (whereFilter) {
@@ -110,7 +120,7 @@ async function countRelationLinks(executor, runtime, parentTable, relationName,
110
120
  extraParams = compiled.params;
111
121
  }
112
122
  }
113
- const sql = `SELECT ${fkCol} AS parent_id, ${dialect.castToInt("COUNT(*)")} AS count FROM ${tableRef(targetTable)} WHERE ${fkCol} IN (${placeholders})${extraWhere} GROUP BY ${fkCol}`;
123
+ const sql = `SELECT ${fkCol} AS parent_id, ${dialect.castToInt("COUNT(*)")} AS count FROM ${dialect.tableRef(targetTable)} WHERE ${fkCol} IN (${placeholders})${extraWhere} GROUP BY ${fkCol}`;
114
124
  const rows = await runQuery(executor, runtime, { operation: "select", tableAccessor: targetTable.accessor }, sql, [...parentIds, ...extraParams]);
115
125
  return new Map(rows.map((row) => [String(row.parent_id), row.count]));
116
126
  }
@@ -125,27 +135,27 @@ async function countM2MLinks(executor, runtime, parentTable, m2m, parentIds, whe
125
135
  return new Map();
126
136
  const parentFkCol = isLeft ? m2m.leftFkColumn : m2m.rightFkColumn;
127
137
  const targetFkCol = isLeft ? m2m.rightFkColumn : m2m.leftFkColumn;
128
- const placeholders = parentIds.map((_, i) => `$${i + 1}`).join(", ");
138
+ const placeholders = joinPlaceholders(dialect, parentIds.length);
129
139
  let joinSql = "";
130
140
  let extraWhere = "";
131
141
  let extraParams = [];
132
142
  if (whereFilter) {
133
143
  const compiled = compileWhere(manifest, targetTable, whereFilter, dialect, 1, runtime.tableIndex);
134
- joinSql = ` JOIN ${tableRef(targetTable)} t ON t.${quoteIdentifier(targetRelationPkSql(targetTable))} = j.${quoteIdentifier(targetFkCol)}`;
144
+ joinSql = ` JOIN ${dialect.tableRef(targetTable)} t ON t.${dialect.quoteIdentifier(targetRelationPkSql(targetTable))} = j.${dialect.quoteIdentifier(targetFkCol)}`;
135
145
  if (compiled.sql) {
136
146
  const adjusted = rebaseParamRefs(compiled.sql, parentIds.length);
137
147
  extraWhere = ` AND ${adjusted.replace(/^WHERE\s+/i, "")}`;
138
148
  extraParams = compiled.params;
139
149
  }
140
150
  }
141
- const sql = `SELECT j.${quoteIdentifier(parentFkCol)} AS parent_id, ${dialect.castToInt("COUNT(*)")} AS count FROM ${tableRef(throughTable)} j${joinSql} WHERE j.${quoteIdentifier(parentFkCol)} IN (${placeholders})${extraWhere} GROUP BY j.${quoteIdentifier(parentFkCol)}`;
151
+ const sql = `SELECT j.${dialect.quoteIdentifier(parentFkCol)} AS parent_id, ${dialect.castToInt("COUNT(*)")} AS count FROM ${dialect.tableRef(throughTable)} j${joinSql} WHERE j.${dialect.quoteIdentifier(parentFkCol)} IN (${placeholders})${extraWhere} GROUP BY j.${dialect.quoteIdentifier(parentFkCol)}`;
142
152
  const rows = await runQuery(executor, runtime, { operation: "select", tableAccessor: throughTable.accessor }, sql, [...parentIds, ...extraParams]);
143
153
  return new Map(rows.map((row) => [String(row.parent_id), row.count]));
144
154
  }
145
- function columnsForSelect(table, withSpec, manifestIndex, tableAlias) {
155
+ function columnsForSelect(table, withSpec, manifestIndex, tableAlias, dialect = postgresDialect) {
146
156
  const nestedSpec = isRelationSpec(withSpec) ? withSpec : undefined;
147
157
  const selectKeys = normalizeSelectColumns(nestedSpec?.select);
148
- return buildSelectColumns(table, selectKeys ? [...selectKeys] : undefined, manifestIndex, nestedSpec?.includeHidden, tableAlias);
158
+ return buildSelectColumns(table, selectKeys ? [...selectKeys] : undefined, manifestIndex, nestedSpec?.includeHidden, tableAlias, dialect);
149
159
  }
150
160
  const BATCH_PARENT_ID = "_parent_id";
151
161
  const BATCH_ROW_NUMBER = "_neoorm_rn";
@@ -166,14 +176,14 @@ function stripBatchRelationMeta(row) {
166
176
  return targetRow;
167
177
  }
168
178
  function applyPerParentTakeSkip(args) {
169
- const { selectList, fromSql, partitionBy, orderBySql, take, skip } = args;
179
+ const { selectList, fromSql, partitionBy, orderBySql, take, skip, dialect, } = args;
170
180
  if (take === undefined && skip === undefined) {
171
181
  return `SELECT ${selectList} ${fromSql}${orderBySql ? ` ${orderBySql}` : ""}`;
172
182
  }
173
183
  const takeN = take !== undefined ? normalizeLimitOffset(take, "take") : undefined;
174
184
  const skipN = skip !== undefined ? normalizeLimitOffset(skip, "skip") : 0;
175
- const rank = quoteIdentifier(BATCH_ROW_NUMBER);
176
- const ranked = quoteIdentifier(BATCH_RANKED_ALIAS);
185
+ const rank = dialect.quoteIdentifier(BATCH_ROW_NUMBER);
186
+ const ranked = dialect.quoteIdentifier(BATCH_RANKED_ALIAS);
177
187
  const overOrder = orderBySql ? ` ${orderBySql}` : "";
178
188
  const filter = takeN !== undefined
179
189
  ? `${rank} > ${skipN} AND ${rank} <= ${skipN + takeN}`
@@ -188,6 +198,7 @@ async function loadNestedRelations(executor, runtime, targetTable, childRows, ne
188
198
  async function loadOneRelation(executor, runtime, parentTable, parentRows, relationName, withSpec) {
189
199
  if (parentRows.length === 0)
190
200
  return;
201
+ const dialect = runtime.dialect ?? postgresDialect;
191
202
  const { manifest } = runtime;
192
203
  const m2m = findM2M(manifest, parentTable.accessor, relationName);
193
204
  if (m2m) {
@@ -206,45 +217,80 @@ async function loadOneRelation(executor, runtime, parentTable, parentRows, relat
206
217
  const nestedSpec = isRelationSpec(withSpec) ? withSpec : undefined;
207
218
  if (relation.cardinality === "one" &&
208
219
  tableOwnsFkColumn(parentTable, relation)) {
209
- const fkValues = parentRows
210
- .map((r) => r[relation.fkColumn])
211
- .filter((v) => v != null);
212
- if (fkValues.length === 0)
220
+ const pairs = relationFkPairs(relation);
221
+ const parentWithFk = parentRows.filter((row) => pairs.every((pair) => row[pair.fkColumn] != null));
222
+ if (parentWithFk.length === 0)
213
223
  return;
214
- const placeholders = fkValues.map((_, i) => `$${i + 1}`).join(", ");
215
- const targetPkCol = quoteIdentifier(targetRelationPkSql(targetTable, relation));
216
- const selectCols = columnsForSelect(targetTable, withSpec, runtime.tableIndex);
217
- const [targetPkTsName] = primaryKeyTsNames(targetTable);
218
- if (!targetPkTsName) {
219
- compileError(`No primary key defined for table "${targetTable.accessor}"`);
220
- }
221
- const { extraWhere, extraParams } = compileBatchedRelationWhere(runtime, targetTable, nestedSpec?.where, fkValues.length);
222
- const rows = await runQuery(executor, runtime, { operation: "select", tableAccessor: targetTable.accessor }, `SELECT ${selectCols} FROM ${tableRef(targetTable)} WHERE ${targetPkCol} IN (${placeholders})${extraWhere}`, [...fkValues, ...extraParams]);
224
+ const selectCols = columnsForSelect(targetTable, withSpec, runtime.tableIndex, undefined, dialect);
223
225
  const targetTableIndex = getTableIndex(runtime.tableIndex, targetTable.accessor);
226
+ if (pairs.length === 1) {
227
+ const fkValues = parentWithFk.map((r) => r[relation.fkColumn]);
228
+ const placeholders = joinPlaceholders(dialect, fkValues.length);
229
+ const targetPkCol = dialect.quoteIdentifier(targetRelationPkSql(targetTable, relation));
230
+ const [targetPkTsName] = primaryKeyTsNames(targetTable);
231
+ if (!targetPkTsName) {
232
+ compileError(`No primary key defined for table "${targetTable.accessor}"`);
233
+ }
234
+ const { extraWhere, extraParams } = compileBatchedRelationWhere(runtime, targetTable, nestedSpec?.where, fkValues.length);
235
+ const rows = await runQuery(executor, runtime, { operation: "select", tableAccessor: targetTable.accessor }, `SELECT ${selectCols} FROM ${dialect.tableRef(targetTable)} WHERE ${targetPkCol} IN (${placeholders})${extraWhere}`, [...fkValues, ...extraParams]);
236
+ const mapped = mapRowsToTs(targetTableIndex, targetTable, rows);
237
+ const byId = new Map(mapped.map((r) => [String(r[targetPkTsName]), r]));
238
+ for (const parent of parentRows) {
239
+ const fkVal = parent[relation.fkColumn];
240
+ parent[relationName] =
241
+ fkVal != null ? (byId.get(fkVal) ?? null) : null;
242
+ }
243
+ return;
244
+ }
245
+ const params = [];
246
+ const orSql = parentWithFk
247
+ .map((parent) => {
248
+ const andSql = pairs.map((pair) => {
249
+ params.push(parent[pair.fkColumn]);
250
+ return `${dialect.quoteIdentifier(pair.targetColumn)} = ${dialect.placeholder(params.length)}`;
251
+ });
252
+ return `(${andSql.join(" AND ")})`;
253
+ })
254
+ .join(" OR ");
255
+ const { extraWhere, extraParams } = compileBatchedRelationWhere(runtime, targetTable, nestedSpec?.where, params.length);
256
+ const rows = await runQuery(executor, runtime, { operation: "select", tableAccessor: targetTable.accessor }, `SELECT ${selectCols} FROM ${dialect.tableRef(targetTable)} WHERE (${orSql})${extraWhere}`, [...params, ...extraParams]);
224
257
  const mapped = mapRowsToTs(targetTableIndex, targetTable, rows);
225
- const byId = new Map(mapped.map((r) => [String(r[targetPkTsName]), r]));
258
+ const byKey = new Map(mapped.map((row) => [
259
+ pairs
260
+ .map((pair) => {
261
+ const ts = targetTable.columns.find((col) => col.sqlName === pair.targetColumn ||
262
+ col.tsName === pair.targetColumn)?.tsName ?? pair.targetColumn;
263
+ return String(row[ts] ?? "");
264
+ })
265
+ .join("\0"),
266
+ row,
267
+ ]));
226
268
  for (const parent of parentRows) {
227
- const fkVal = parent[relation.fkColumn];
228
- parent[relationName] =
229
- fkVal != null ? (byId.get(fkVal) ?? null) : null;
269
+ const key = pairs
270
+ .map((pair) => String(parent[pair.fkColumn] ?? ""))
271
+ .join("\0");
272
+ parent[relationName] = pairs.every((pair) => parent[pair.fkColumn] != null)
273
+ ? (byKey.get(key) ?? null)
274
+ : null;
230
275
  }
231
276
  }
232
277
  else {
233
- const fkCol = quoteIdentifier(relation.fkSqlColumn);
234
- const placeholders = parentIds.map((_, i) => `$${i + 1}`).join(", ");
235
- const selectCols = columnsForSelect(targetTable, withSpec, runtime.tableIndex);
236
- const parentIdSelect = `${fkCol} AS ${quoteIdentifier(BATCH_PARENT_ID)}`;
278
+ const fkCol = dialect.quoteIdentifier(relation.fkSqlColumn);
279
+ const placeholders = joinPlaceholders(dialect, parentIds.length);
280
+ const selectCols = columnsForSelect(targetTable, withSpec, runtime.tableIndex, undefined, dialect);
281
+ const parentIdSelect = `${fkCol} AS ${dialect.quoteIdentifier(BATCH_PARENT_ID)}`;
237
282
  const { extraWhere, extraParams } = compileBatchedRelationWhere(runtime, targetTable, nestedSpec?.where, parentIds.length);
238
283
  const orderBySql = nestedSpec?.orderBy
239
- ? compileOrderBy(targetTable, nestedSpec.orderBy, undefined, runtime.tableIndex)
284
+ ? compileOrderBy(targetTable, nestedSpec.orderBy, undefined, runtime.tableIndex, dialect)
240
285
  : "";
241
286
  const sql = applyPerParentTakeSkip({
242
287
  selectList: `${selectCols}, ${parentIdSelect}`,
243
- fromSql: `FROM ${tableRef(targetTable)} WHERE ${fkCol} IN (${placeholders})${extraWhere}`,
288
+ fromSql: `FROM ${dialect.tableRef(targetTable)} WHERE ${fkCol} IN (${placeholders})${extraWhere}`,
244
289
  partitionBy: fkCol,
245
290
  orderBySql,
246
291
  take: nestedSpec?.take,
247
292
  skip: nestedSpec?.skip,
293
+ dialect,
248
294
  });
249
295
  const rows = await runQuery(executor, runtime, { operation: "select", tableAccessor: targetTable.accessor }, sql, [...parentIds, ...extraParams]);
250
296
  const targetTableIndex = getTableIndex(runtime.tableIndex, targetTable.accessor);
@@ -283,6 +329,7 @@ async function loadOneRelation(executor, runtime, parentTable, parentRows, relat
283
329
  }
284
330
  }
285
331
  async function loadM2MRelation(executor, runtime, parentTable, parentRows, m2m, relationName, withSpec) {
332
+ const dialect = runtime.dialect ?? postgresDialect;
286
333
  const { manifest } = runtime;
287
334
  const isLeft = m2m.leftAccessor === parentTable.accessor;
288
335
  const targetAccessor = isLeft ? m2m.rightAccessor : m2m.leftAccessor;
@@ -297,23 +344,24 @@ async function loadM2MRelation(executor, runtime, parentTable, parentRows, m2m,
297
344
  .filter(Boolean);
298
345
  if (parentIds.length === 0)
299
346
  return;
300
- const placeholders = parentIds.map((_, i) => `$${i + 1}`).join(", ");
347
+ const placeholders = joinPlaceholders(dialect, parentIds.length);
301
348
  const nestedSpec = isRelationSpec(withSpec) ? withSpec : undefined;
302
- const selectCols = columnsForSelect(targetTable, withSpec, runtime.tableIndex, "t");
303
- const targetPkCol = quoteIdentifier(targetRelationPkSql(targetTable));
304
- const parentFkSql = quoteIdentifier(parentFkCol);
305
- const targetFkSql = quoteIdentifier(targetFkCol);
349
+ const selectCols = columnsForSelect(targetTable, withSpec, runtime.tableIndex, "t", dialect);
350
+ const targetPkCol = dialect.quoteIdentifier(targetRelationPkSql(targetTable));
351
+ const parentFkSql = dialect.quoteIdentifier(parentFkCol);
352
+ const targetFkSql = dialect.quoteIdentifier(targetFkCol);
306
353
  const { extraWhere, extraParams } = compileBatchedRelationWhere(runtime, targetTable, nestedSpec?.where, parentIds.length, "t");
307
354
  const orderBySql = nestedSpec?.orderBy
308
- ? compileOrderBy(targetTable, nestedSpec.orderBy, "t", runtime.tableIndex)
355
+ ? compileOrderBy(targetTable, nestedSpec.orderBy, "t", runtime.tableIndex, dialect)
309
356
  : "";
310
357
  const sql = applyPerParentTakeSkip({
311
- selectList: `${selectCols}, j.${parentFkSql} AS ${quoteIdentifier(BATCH_PARENT_ID)}`,
312
- fromSql: `FROM ${tableRef(throughTable)} j JOIN ${tableRef(targetTable)} t ON t.${targetPkCol} = j.${targetFkSql} WHERE j.${parentFkSql} IN (${placeholders})${extraWhere}`,
358
+ selectList: `${selectCols}, j.${parentFkSql} AS ${dialect.quoteIdentifier(BATCH_PARENT_ID)}`,
359
+ fromSql: `FROM ${dialect.tableRef(throughTable)} j JOIN ${dialect.tableRef(targetTable)} t ON t.${targetPkCol} = j.${targetFkSql} WHERE j.${parentFkSql} IN (${placeholders})${extraWhere}`,
313
360
  partitionBy: `j.${parentFkSql}`,
314
361
  orderBySql,
315
362
  take: nestedSpec?.take,
316
363
  skip: nestedSpec?.skip,
364
+ dialect,
317
365
  });
318
366
  const rows = await runQuery(executor, runtime, { operation: "select", tableAccessor: targetTable.accessor }, sql, [...parentIds, ...extraParams]);
319
367
  const targetTableIndex = getTableIndex(runtime.tableIndex, targetTable.accessor);
@@ -367,9 +415,9 @@ async function executeFindManyWithRelations(executor, runtime, tableAccessor, ta
367
415
  }
368
416
  const extraSelect = buildPlanExtraSelectCols(manifest, table, plan, dialect, runtime.tableIndex, params.length + 1);
369
417
  const extraSelectCols = extraSelect.cols;
370
- const countOrderSql = compileCountOrderBy(manifest, table, args.orderBy, plan, runtime.tableIndex);
418
+ const countOrderSql = compileCountOrderBy(manifest, table, args.orderBy, plan, runtime.tableIndex, dialect);
371
419
  const orderSqlForWith = countOrderSql ||
372
- getCachedOrderByClause(table, args.orderBy, needsQualifiedRefs ? table.sqlName : undefined, runtime.tableIndex);
420
+ getCachedOrderByClause(table, args.orderBy, needsQualifiedRefs ? table.sqlName : undefined, runtime.tableIndex, dialect);
373
421
  const joinClauses = plan.countAggregate && plan.countAggregate.joins.length > 0
374
422
  ? plan.countAggregate.joins
375
423
  : plan.hasManyAggregate && plan.hasManyAggregate.joins.length > 0
@@ -379,14 +427,13 @@ async function executeFindManyWithRelations(executor, runtime, tableAccessor, ta
379
427
  : undefined;
380
428
  const groupBySql = buildCountAggregateGroupBy(plan);
381
429
  const distinctOn = normalizeSelectColumns(args.distinct);
382
- if (distinctOn && distinctOn.length > 0 && dialect.name === "sqlite") {
383
- compileError("distinct is not supported on SQLite (DISTINCT ON is PostgreSQL-only). Use groupBy or orderBy + a manual query instead.");
384
- }
430
+ validateDistinctOrderBy(distinctOn, args.orderBy);
431
+ assertDistinctOnSupported(distinctOn, dialect);
385
432
  const withSignature = withShapeSignature(args.with);
386
433
  const planMode = planOptions?.useHasManyAggregate === false ? "corr" : "agg";
387
434
  const projSig = projectionSignature(projection.sqlColumns, projection.includeHidden);
388
435
  const signature = `${whereSql}|${orderSqlForWith}|${args.take ?? ""}|${args.skip ?? ""}|${distinctOn?.join(",") ?? ""}|${withSignature}|${planMode}|${groupBySql}|${projSig}`;
389
- const query = getCachedFindManyQuery(tableIndex, signature, () => buildFindManyQuery(table, whereSql, orderSqlForWith, args.take, args.skip, distinctOn, extraSelectCols.length > 0 ? extraSelectCols : undefined, joinClauses, runtime.tableIndex, groupBySql || undefined, projection.sqlColumns, projection.includeHidden));
436
+ const query = getCachedFindManyQuery(tableIndex, signature, () => buildFindManyQuery(table, whereSql, orderSqlForWith, args.take, args.skip, distinctOn, extraSelectCols.length > 0 ? extraSelectCols : undefined, joinClauses, runtime.tableIndex, groupBySql || undefined, projection.sqlColumns, projection.includeHidden, dialect));
390
437
  const rows = await runQuery(executor, runtime, { operation: "select", tableAccessor }, query, [...params, ...extraSelect.params]);
391
438
  const hydrated = await hydrateAndLoadRelations(executor, runtime, table, rows, args.with, plan);
392
439
  return projectFindRows(hydrated, projection, args.with);
@@ -422,25 +469,23 @@ export async function findMany(executor, runtime, tableAccessor, args) {
422
469
  }
423
470
  const distinctOn = normalizeSelectColumns(args?.distinct);
424
471
  validateDistinctOrderBy(distinctOn, args?.orderBy);
425
- if (distinctOn && distinctOn.length > 0 && dialect.name === "sqlite") {
426
- compileError("distinct is not supported on SQLite (DISTINCT ON is PostgreSQL-only). Use groupBy or orderBy + a manual query instead.");
427
- }
472
+ assertDistinctOnSupported(distinctOn, dialect);
428
473
  const compiledWhere = getCachedWhereClause(manifest, table, args?.where, dialect, 1, runtime.tableIndex);
429
474
  if (compiledWhere.impossible || isImpossibleWhere(compiledWhere.sql)) {
430
475
  return [];
431
476
  }
432
- const whereSql = compiledWhere.sql;
477
+ const whereSql = appendUniquePredicate(compiledWhere.sql, args?.andSql);
433
478
  const params = compiledWhere.params;
434
479
  const hasWith = Boolean(args?.with && Object.keys(args.with).length > 0);
435
480
  if (!hasWith) {
436
- const orderSql = getCachedOrderByClause(table, args?.orderBy, undefined, runtime.tableIndex);
481
+ const orderSql = getCachedOrderByClause(table, args?.orderBy, undefined, runtime.tableIndex, dialect);
437
482
  const projSig = projectionSignature(projection.sqlColumns, projection.includeHidden);
438
483
  const signature = `${whereSql}|${orderSql}|${args?.take ?? ""}|${args?.skip ?? ""}|${distinctOn?.join(",") ?? ""}|${projSig}`;
439
- const query = getCachedFindManyQuery(tableIndex, signature, () => buildFindManyQuery(table, whereSql, orderSql, args?.take, args?.skip, distinctOn, undefined, undefined, runtime.tableIndex, undefined, projection.sqlColumns, projection.includeHidden));
484
+ const query = getCachedFindManyQuery(tableIndex, signature, () => buildFindManyQuery(table, whereSql, orderSql, args?.take, args?.skip, distinctOn, undefined, undefined, runtime.tableIndex, undefined, projection.sqlColumns, projection.includeHidden, dialect));
440
485
  const rows = await runQuery(executor, runtime, { operation: "select", tableAccessor }, query, params);
441
486
  return projectFindRows(mapRowsToTs(tableIndex, table, rows), projection);
442
487
  }
443
- return executeFindManyWithRelations(executor, runtime, tableAccessor, table, tableIndex, { ...(args ?? {}), with: args.with }, whereSql, params, { useHasManyAggregate: true }, projection);
488
+ return executeFindManyWithRelations(executor, runtime, tableAccessor, table, tableIndex, { ...(args ?? {}), with: args?.with ?? {} }, whereSql, params, { useHasManyAggregate: true }, projection);
444
489
  }
445
490
  export async function findFirst(executor, runtime, tableAccessor, args) {
446
491
  const dialect = runtime.dialect ?? postgresDialect;
@@ -454,20 +499,22 @@ export async function findFirst(executor, runtime, tableAccessor, args) {
454
499
  if (compiledWhere.impossible || isImpossibleWhere(compiledWhere.sql)) {
455
500
  return null;
456
501
  }
457
- const { sql: whereSql, params } = compiledWhere;
502
+ const { params } = compiledWhere;
503
+ const whereSql = appendUniquePredicate(compiledWhere.sql, args?.andSql);
458
504
  const distinctOn = normalizeSelectColumns(args?.distinct);
459
505
  validateDistinctOrderBy(distinctOn, args?.orderBy);
460
- if (distinctOn && distinctOn.length > 0 && dialect.name === "sqlite") {
461
- compileError("distinct is not supported on SQLite (DISTINCT ON is PostgreSQL-only). Use groupBy or orderBy + a manual query instead.");
462
- }
463
- const orderSql = getCachedOrderByClause(table, args?.orderBy, undefined, runtime.tableIndex);
506
+ assertDistinctOnSupported(distinctOn, dialect);
507
+ const orderSql = getCachedOrderByClause(table, args?.orderBy, undefined, runtime.tableIndex, dialect);
464
508
  const projSig = projectionSignature(projection.sqlColumns, projection.includeHidden);
465
509
  const signature = `${whereSql}|${orderSql}|1|${args?.skip ?? ""}|${distinctOn?.join(",") ?? ""}|${projSig}`;
466
- const query = getCachedFindManyQuery(tableIndex, signature, () => buildFindManyQuery(table, whereSql, orderSql, 1, args?.skip, distinctOn, undefined, undefined, runtime.tableIndex, undefined, projection.sqlColumns, projection.includeHidden));
510
+ const query = getCachedFindManyQuery(tableIndex, signature, () => buildFindManyQuery(table, whereSql, orderSql, 1, args?.skip, distinctOn, undefined, undefined, runtime.tableIndex, undefined, projection.sqlColumns, projection.includeHidden, dialect));
467
511
  const rows = await runQuery(executor, runtime, { operation: "select", tableAccessor }, query, params);
468
512
  if (rows.length === 0)
469
513
  return null;
470
- return projectFindRow(mapRowToTs(tableIndex, table, rows[0]), projection);
514
+ const row = rows[0];
515
+ if (row === undefined)
516
+ return null;
517
+ return projectFindRow(mapRowToTs(tableIndex, table, row), projection);
471
518
  }
472
519
  const compiledWhere = getCachedWhereClause(manifest, table, args?.where, dialect, 1, runtime.tableIndex);
473
520
  if (compiledWhere.impossible || isImpossibleWhere(compiledWhere.sql)) {
@@ -475,7 +522,8 @@ export async function findFirst(executor, runtime, tableAccessor, args) {
475
522
  }
476
523
  const distinctOn = normalizeSelectColumns(args?.distinct);
477
524
  validateDistinctOrderBy(distinctOn, args?.orderBy);
478
- const rows = await executeFindManyWithRelations(executor, runtime, tableAccessor, table, tableIndex, { ...args, with: args.with, take: 1 }, compiledWhere.sql, compiledWhere.params, { useHasManyAggregate: false }, projection);
525
+ assertDistinctOnSupported(distinctOn, dialect);
526
+ const rows = await executeFindManyWithRelations(executor, runtime, tableAccessor, table, tableIndex, { ...args, with: args?.with ?? {}, take: 1 }, appendUniquePredicate(compiledWhere.sql, args?.andSql), compiledWhere.params, { useHasManyAggregate: false }, projection);
479
527
  return rows[0] ?? null;
480
528
  }
481
529
  function extractScalarPkValue(table, id) {