neoorm 0.8.1 → 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 (318) hide show
  1. package/README.md +10 -5
  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 +131 -57
  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 +1 -0
  10. package/dist/codegen/generate-summary.d.ts.map +1 -1
  11. package/dist/codegen/generate-summary.js +3 -0
  12. package/dist/codegen/generate-summary.js.map +1 -1
  13. package/dist/codegen/generate.d.ts +7 -1
  14. package/dist/codegen/generate.d.ts.map +1 -1
  15. package/dist/codegen/generate.js +53 -20
  16. package/dist/codegen/generate.js.map +1 -1
  17. package/dist/codegen/schema-to-manifest.d.ts.map +1 -1
  18. package/dist/codegen/schema-to-manifest.js +302 -22
  19. package/dist/codegen/schema-to-manifest.js.map +1 -1
  20. package/dist/codegen/validation/emit-elysia.d.ts +4 -0
  21. package/dist/codegen/validation/emit-elysia.d.ts.map +1 -0
  22. package/dist/codegen/validation/emit-elysia.js +304 -0
  23. package/dist/codegen/validation/emit-elysia.js.map +1 -0
  24. package/dist/codegen/validation/types.d.ts +1 -1
  25. package/dist/codegen/validation/types.js +1 -1
  26. package/dist/config.d.ts +2 -0
  27. package/dist/config.d.ts.map +1 -1
  28. package/dist/config.js +3 -1
  29. package/dist/config.js.map +1 -1
  30. package/dist/datasource-provider.d.ts +5 -1
  31. package/dist/datasource-provider.d.ts.map +1 -1
  32. package/dist/datasource-provider.js +21 -2
  33. package/dist/datasource-provider.js.map +1 -1
  34. package/dist/dialect/column-kind-support.d.ts +9 -0
  35. package/dist/dialect/column-kind-support.d.ts.map +1 -0
  36. package/dist/dialect/column-kind-support.js +25 -0
  37. package/dist/dialect/column-kind-support.js.map +1 -0
  38. package/dist/dialect/fk.d.ts +30 -1
  39. package/dist/dialect/fk.d.ts.map +1 -1
  40. package/dist/dialect/fk.js +113 -0
  41. package/dist/dialect/fk.js.map +1 -1
  42. package/dist/dialect/index.d.ts +5 -1
  43. package/dist/dialect/index.d.ts.map +1 -1
  44. package/dist/dialect/index.js +4 -0
  45. package/dist/dialect/index.js.map +1 -1
  46. package/dist/dialect/mariadb.d.ts +4 -0
  47. package/dist/dialect/mariadb.d.ts.map +1 -0
  48. package/dist/dialect/mariadb.js +15 -0
  49. package/dist/dialect/mariadb.js.map +1 -0
  50. package/dist/dialect/mariadb.test.d.ts +2 -0
  51. package/dist/dialect/mariadb.test.d.ts.map +1 -0
  52. package/dist/dialect/mariadb.test.js +151 -0
  53. package/dist/dialect/mariadb.test.js.map +1 -0
  54. package/dist/dialect/mysql-family.d.ts +14 -0
  55. package/dist/dialect/mysql-family.d.ts.map +1 -0
  56. package/dist/dialect/mysql-family.js +453 -0
  57. package/dist/dialect/mysql-family.js.map +1 -0
  58. package/dist/dialect/mysql.d.ts +6 -0
  59. package/dist/dialect/mysql.d.ts.map +1 -0
  60. package/dist/dialect/mysql.js +16 -0
  61. package/dist/dialect/mysql.js.map +1 -0
  62. package/dist/dialect/mysql.test.d.ts +2 -0
  63. package/dist/dialect/mysql.test.d.ts.map +1 -0
  64. package/dist/dialect/mysql.test.js +211 -0
  65. package/dist/dialect/mysql.test.js.map +1 -0
  66. package/dist/dialect/placeholders.d.ts +7 -0
  67. package/dist/dialect/placeholders.d.ts.map +1 -0
  68. package/dist/dialect/placeholders.js +18 -0
  69. package/dist/dialect/placeholders.js.map +1 -0
  70. package/dist/dialect/postgres.d.ts.map +1 -1
  71. package/dist/dialect/postgres.js +55 -27
  72. package/dist/dialect/postgres.js.map +1 -1
  73. package/dist/dialect/resolve.d.ts +13 -0
  74. package/dist/dialect/resolve.d.ts.map +1 -0
  75. package/dist/dialect/resolve.js +66 -0
  76. package/dist/dialect/resolve.js.map +1 -0
  77. package/dist/dialect/shared.d.ts +8 -1
  78. package/dist/dialect/shared.d.ts.map +1 -1
  79. package/dist/dialect/shared.js +37 -0
  80. package/dist/dialect/shared.js.map +1 -1
  81. package/dist/dialect/sqlite.d.ts.map +1 -1
  82. package/dist/dialect/sqlite.js +50 -18
  83. package/dist/dialect/sqlite.js.map +1 -1
  84. package/dist/dialect/sqlite.test.js +43 -1
  85. package/dist/dialect/sqlite.test.js.map +1 -1
  86. package/dist/dialect/types.d.ts +46 -3
  87. package/dist/dialect/types.d.ts.map +1 -1
  88. package/dist/docs/pages.d.ts.map +1 -1
  89. package/dist/docs/pages.js +3 -0
  90. package/dist/docs/pages.js.map +1 -1
  91. package/dist/docs/render.js +1 -1
  92. package/dist/index.d.ts +5 -3
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +4 -2
  95. package/dist/index.js.map +1 -1
  96. package/dist/init/scaffold.d.ts +2 -1
  97. package/dist/init/scaffold.d.ts.map +1 -1
  98. package/dist/init/scaffold.js.map +1 -1
  99. package/dist/init/templates.d.ts +3 -2
  100. package/dist/init/templates.d.ts.map +1 -1
  101. package/dist/init/templates.js +19 -10
  102. package/dist/init/templates.js.map +1 -1
  103. package/dist/introspect/group-fks.d.ts +24 -0
  104. package/dist/introspect/group-fks.d.ts.map +1 -0
  105. package/dist/introspect/group-fks.js +48 -0
  106. package/dist/introspect/group-fks.js.map +1 -0
  107. package/dist/introspect/mysql/to-manifest.d.ts +4 -0
  108. package/dist/introspect/mysql/to-manifest.d.ts.map +1 -0
  109. package/dist/introspect/mysql/to-manifest.js +317 -0
  110. package/dist/introspect/mysql/to-manifest.js.map +1 -0
  111. package/dist/introspect/pull.d.ts +1 -0
  112. package/dist/introspect/pull.d.ts.map +1 -1
  113. package/dist/introspect/pull.js +179 -6
  114. package/dist/introspect/pull.js.map +1 -1
  115. package/dist/introspect/queries.d.ts +10 -1
  116. package/dist/introspect/queries.d.ts.map +1 -1
  117. package/dist/introspect/queries.js +41 -11
  118. package/dist/introspect/queries.js.map +1 -1
  119. package/dist/introspect/sqlite/to-manifest.d.ts.map +1 -1
  120. package/dist/introspect/sqlite/to-manifest.js +99 -26
  121. package/dist/introspect/sqlite/to-manifest.js.map +1 -1
  122. package/dist/introspect/to-manifest.d.ts.map +1 -1
  123. package/dist/introspect/to-manifest.js +145 -26
  124. package/dist/introspect/to-manifest.js.map +1 -1
  125. package/dist/migrate/dev-lock.d.ts +15 -0
  126. package/dist/migrate/dev-lock.d.ts.map +1 -0
  127. package/dist/migrate/dev-lock.js +101 -0
  128. package/dist/migrate/dev-lock.js.map +1 -0
  129. package/dist/migrate/runner.d.ts.map +1 -1
  130. package/dist/migrate/runner.js +143 -51
  131. package/dist/migrate/runner.js.map +1 -1
  132. package/dist/plugins/builtin.d.ts +42 -0
  133. package/dist/plugins/builtin.d.ts.map +1 -1
  134. package/dist/plugins/builtin.js +276 -8
  135. package/dist/plugins/builtin.js.map +1 -1
  136. package/dist/plugins/json/operators.d.ts.map +1 -1
  137. package/dist/plugins/json/operators.js +69 -3
  138. package/dist/plugins/json/operators.js.map +1 -1
  139. package/dist/plugins/postgis/operators.d.ts.map +1 -1
  140. package/dist/plugins/postgis/operators.js +15 -3
  141. package/dist/plugins/postgis/operators.js.map +1 -1
  142. package/dist/runtime/client.d.ts +31 -4
  143. package/dist/runtime/client.d.ts.map +1 -1
  144. package/dist/runtime/client.js +129 -4
  145. package/dist/runtime/client.js.map +1 -1
  146. package/dist/runtime/driver.d.ts +2 -0
  147. package/dist/runtime/driver.d.ts.map +1 -1
  148. package/dist/runtime/driver.js +12 -0
  149. package/dist/runtime/driver.js.map +1 -1
  150. package/dist/runtime/executor.d.ts +1 -0
  151. package/dist/runtime/executor.d.ts.map +1 -1
  152. package/dist/runtime/executor.js +7 -1
  153. package/dist/runtime/executor.js.map +1 -1
  154. package/dist/runtime/mariadb-driver.d.ts +25 -0
  155. package/dist/runtime/mariadb-driver.d.ts.map +1 -0
  156. package/dist/runtime/mariadb-driver.js +103 -0
  157. package/dist/runtime/mariadb-driver.js.map +1 -0
  158. package/dist/runtime/mysql-driver.d.ts +25 -0
  159. package/dist/runtime/mysql-driver.d.ts.map +1 -0
  160. package/dist/runtime/mysql-driver.js +101 -0
  161. package/dist/runtime/mysql-driver.js.map +1 -0
  162. package/dist/runtime/mysql-error.d.ts +15 -0
  163. package/dist/runtime/mysql-error.d.ts.map +1 -0
  164. package/dist/runtime/mysql-error.js +119 -0
  165. package/dist/runtime/mysql-error.js.map +1 -0
  166. package/dist/runtime/mysql-family-pool.d.ts +50 -0
  167. package/dist/runtime/mysql-family-pool.d.ts.map +1 -0
  168. package/dist/runtime/mysql-family-pool.js +52 -0
  169. package/dist/runtime/mysql-family-pool.js.map +1 -0
  170. package/dist/runtime/mysql-family-pool.test.d.ts +2 -0
  171. package/dist/runtime/mysql-family-pool.test.d.ts.map +1 -0
  172. package/dist/runtime/mysql-family-pool.test.js +169 -0
  173. package/dist/runtime/mysql-family-pool.test.js.map +1 -0
  174. package/dist/runtime/mysql-placeholders.d.ts +18 -0
  175. package/dist/runtime/mysql-placeholders.d.ts.map +1 -0
  176. package/dist/runtime/mysql-placeholders.js +133 -0
  177. package/dist/runtime/mysql-placeholders.js.map +1 -0
  178. package/dist/runtime/mysql-placeholders.test.d.ts +2 -0
  179. package/dist/runtime/mysql-placeholders.test.d.ts.map +1 -0
  180. package/dist/runtime/mysql-placeholders.test.js +33 -0
  181. package/dist/runtime/mysql-placeholders.test.js.map +1 -0
  182. package/dist/runtime/query/compile-aggregate.d.ts +1 -1
  183. package/dist/runtime/query/compile-aggregate.d.ts.map +1 -1
  184. package/dist/runtime/query/compile-aggregate.js +25 -22
  185. package/dist/runtime/query/compile-aggregate.js.map +1 -1
  186. package/dist/runtime/query/compile-where.d.ts +9 -9
  187. package/dist/runtime/query/compile-where.d.ts.map +1 -1
  188. package/dist/runtime/query/compile-where.js +87 -66
  189. package/dist/runtime/query/compile-where.js.map +1 -1
  190. package/dist/runtime/query/compile-write.d.ts +9 -9
  191. package/dist/runtime/query/compile-write.d.ts.map +1 -1
  192. package/dist/runtime/query/compile-write.js +77 -63
  193. package/dist/runtime/query/compile-write.js.map +1 -1
  194. package/dist/runtime/query/count.d.ts.map +1 -1
  195. package/dist/runtime/query/count.js +4 -1
  196. package/dist/runtime/query/count.js.map +1 -1
  197. package/dist/runtime/query/create.d.ts.map +1 -1
  198. package/dist/runtime/query/create.js +38 -12
  199. package/dist/runtime/query/create.js.map +1 -1
  200. package/dist/runtime/query/cursor.d.ts +1 -1
  201. package/dist/runtime/query/cursor.d.ts.map +1 -1
  202. package/dist/runtime/query/cursor.js +6 -7
  203. package/dist/runtime/query/cursor.js.map +1 -1
  204. package/dist/runtime/query/delete.d.ts.map +1 -1
  205. package/dist/runtime/query/delete.js +41 -15
  206. package/dist/runtime/query/delete.js.map +1 -1
  207. package/dist/runtime/query/execute.d.ts +1 -0
  208. package/dist/runtime/query/execute.d.ts.map +1 -1
  209. package/dist/runtime/query/execute.js +23 -8
  210. package/dist/runtime/query/execute.js.map +1 -1
  211. package/dist/runtime/query/find-or-create.d.ts +1 -1
  212. package/dist/runtime/query/find-or-create.d.ts.map +1 -1
  213. package/dist/runtime/query/find-or-create.js +16 -8
  214. package/dist/runtime/query/find-or-create.js.map +1 -1
  215. package/dist/runtime/query/find.d.ts +2 -0
  216. package/dist/runtime/query/find.d.ts.map +1 -1
  217. package/dist/runtime/query/find.js +108 -62
  218. package/dist/runtime/query/find.js.map +1 -1
  219. package/dist/runtime/query/mutation-returning.d.ts +10 -0
  220. package/dist/runtime/query/mutation-returning.d.ts.map +1 -0
  221. package/dist/runtime/query/mutation-returning.js +85 -0
  222. package/dist/runtime/query/mutation-returning.js.map +1 -0
  223. package/dist/runtime/query/paginate.d.ts.map +1 -1
  224. package/dist/runtime/query/paginate.js +3 -3
  225. package/dist/runtime/query/paginate.js.map +1 -1
  226. package/dist/runtime/query/relation-join.d.ts +5 -0
  227. package/dist/runtime/query/relation-join.d.ts.map +1 -0
  228. package/dist/runtime/query/relation-join.js +26 -0
  229. package/dist/runtime/query/relation-join.js.map +1 -0
  230. package/dist/runtime/query/relation-planner.d.ts +1 -1
  231. package/dist/runtime/query/relation-planner.d.ts.map +1 -1
  232. package/dist/runtime/query/relation-planner.js +69 -55
  233. package/dist/runtime/query/relation-planner.js.map +1 -1
  234. package/dist/runtime/query/relation-writes.d.ts +2 -2
  235. package/dist/runtime/query/relation-writes.d.ts.map +1 -1
  236. package/dist/runtime/query/relation-writes.js +257 -98
  237. package/dist/runtime/query/relation-writes.js.map +1 -1
  238. package/dist/runtime/query/table-index.d.ts.map +1 -1
  239. package/dist/runtime/query/table-index.js +16 -9
  240. package/dist/runtime/query/table-index.js.map +1 -1
  241. package/dist/runtime/query/unique.d.ts +3 -0
  242. package/dist/runtime/query/unique.d.ts.map +1 -1
  243. package/dist/runtime/query/unique.js +26 -6
  244. package/dist/runtime/query/unique.js.map +1 -1
  245. package/dist/runtime/query/unique.test.js +110 -7
  246. package/dist/runtime/query/unique.test.js.map +1 -1
  247. package/dist/runtime/query/update.d.ts.map +1 -1
  248. package/dist/runtime/query/update.js +89 -23
  249. package/dist/runtime/query/update.js.map +1 -1
  250. package/dist/runtime/query/updated-at.js +2 -2
  251. package/dist/runtime/query/updated-at.js.map +1 -1
  252. package/dist/runtime/query/upsert.d.ts.map +1 -1
  253. package/dist/runtime/query/upsert.js +29 -5
  254. package/dist/runtime/query/upsert.js.map +1 -1
  255. package/dist/runtime/transaction.d.ts +1 -0
  256. package/dist/runtime/transaction.d.ts.map +1 -1
  257. package/dist/runtime/transaction.js +8 -0
  258. package/dist/runtime/transaction.js.map +1 -1
  259. package/dist/runtime/types.d.ts +10 -2
  260. package/dist/runtime/types.d.ts.map +1 -1
  261. package/dist/schema/column-constraints.d.ts +1 -1
  262. package/dist/schema/column-constraints.d.ts.map +1 -1
  263. package/dist/schema/column-constraints.js +6 -3
  264. package/dist/schema/column-constraints.js.map +1 -1
  265. package/dist/schema/column.d.ts +2 -2
  266. package/dist/schema/column.d.ts.map +1 -1
  267. package/dist/schema/column.js +1 -1
  268. package/dist/schema/column.js.map +1 -1
  269. package/dist/schema/index.d.ts +4 -4
  270. package/dist/schema/index.d.ts.map +1 -1
  271. package/dist/schema/index.js +2 -2
  272. package/dist/schema/index.js.map +1 -1
  273. package/dist/schema/nested-relation-types.d.ts +10 -9
  274. package/dist/schema/nested-relation-types.d.ts.map +1 -1
  275. package/dist/schema/relation-types.d.ts +73 -12
  276. package/dist/schema/relation-types.d.ts.map +1 -1
  277. package/dist/schema/relation.d.ts +11 -1
  278. package/dist/schema/relation.d.ts.map +1 -1
  279. package/dist/schema/relation.js +6 -0
  280. package/dist/schema/relation.js.map +1 -1
  281. package/dist/schema/table.d.ts +74 -11
  282. package/dist/schema/table.d.ts.map +1 -1
  283. package/dist/schema/table.js +93 -7
  284. package/dist/schema/table.js.map +1 -1
  285. package/dist/schema/types.d.ts +1 -1
  286. package/dist/schema/types.d.ts.map +1 -1
  287. package/dist/sql/builder.d.ts +13 -3
  288. package/dist/sql/builder.d.ts.map +1 -1
  289. package/dist/sql/builder.js +155 -5
  290. package/dist/sql/builder.js.map +1 -1
  291. package/dist/sql/index.d.ts +1 -0
  292. package/dist/sql/index.d.ts.map +1 -1
  293. package/dist/sql/index.js.map +1 -1
  294. package/dist/sql/qualify-tables.d.ts +15 -0
  295. package/dist/sql/qualify-tables.d.ts.map +1 -0
  296. package/dist/sql/qualify-tables.js +206 -0
  297. package/dist/sql/qualify-tables.js.map +1 -0
  298. package/dist/sql/template.d.ts +5 -0
  299. package/dist/sql/template.d.ts.map +1 -1
  300. package/dist/sql/template.js +23 -3
  301. package/dist/sql/template.js.map +1 -1
  302. package/docs/cli.md +4 -4
  303. package/docs/configuration.md +7 -6
  304. package/docs/elysia.md +131 -0
  305. package/docs/errors.md +1 -1
  306. package/docs/examples.md +4 -2
  307. package/docs/getting-started.md +6 -4
  308. package/docs/mariadb.md +149 -0
  309. package/docs/migrations.md +5 -3
  310. package/docs/mysql.md +134 -0
  311. package/docs/plugins.md +1 -1
  312. package/docs/queries.md +14 -11
  313. package/docs/relations.md +19 -4
  314. package/docs/schema.md +73 -10
  315. package/docs/sqlite.md +6 -2
  316. package/docs/typebox.md +4 -4
  317. package/docs/zod.md +2 -2
  318. package/package.json +18 -2
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/codegen/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/codegen/generate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema-to-manifest.d.ts","sourceRoot":"","sources":["../../src/codegen/schema-to-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,gBAAgB,EAErB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,KAAK,EACX,QAAQ,EAMR,MAAM,qBAAqB,CAAC;AAM7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAYxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAO5D,OAAO,EAKN,KAAK,QAAQ,EAEb,MAAM,oBAAoB,CAAC;AAI5B,MAAM,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,4CAA4C;AAC5C,MAAM,MAAM,uBAAuB,GAAG;IACrC,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IACxC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAueF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAClE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EACpB,QAAQ,GAAE,SAAS,YAAY,EAAwB,EACvD,OAAO,GAAE,uBAA4B,GACnC,QAAQ,CAoXV;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,qBAAqB,EAAE,CAiE5E"}
1
+ {"version":3,"file":"schema-to-manifest.d.ts","sourceRoot":"","sources":["../../src/codegen/schema-to-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,gBAAgB,EAIrB,MAAM,2BAA2B,CAAC;AASnC,OAAO,KAAK,EACX,QAAQ,EAOR,MAAM,qBAAqB,CAAC;AAM7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAexD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAO5D,OAAO,EASN,KAAK,QAAQ,EAEb,MAAM,oBAAoB,CAAC;AAI5B,MAAM,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,4CAA4C;AAC5C,MAAM,MAAM,uBAAuB,GAAG;IACrC,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IACxC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AA8yBF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAClE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EACpB,QAAQ,GAAE,SAAS,YAAY,EAAwB,EACvD,OAAO,GAAE,uBAA4B,GACnC,QAAQ,CA0aV;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,qBAAqB,EAAE,CA6E5E"}
@@ -1,20 +1,22 @@
1
- import { isSqliteProvider, } from "../datasource-provider.js";
1
+ import { isMariadbProvider, isMysqlFamilyProvider, isSqliteProvider, } from "../datasource-provider.js";
2
+ import { MYSQL_UNSUPPORTED_COLUMN_KINDS, mysqlUnsupportedColumnKindMessage, SQLITE_UNSUPPORTED_COLUMN_KINDS, sqliteUnsupportedColumnKindMessage, } from "../dialect/column-kind-support.js";
2
3
  import { parseFkTarget } from "../dialect/fk.js";
3
4
  import { resolveIndexSqlName } from "../dialect/postgres.js";
4
5
  import { collectExtensionsForKinds, getColumnType, getPluginRegistry, } from "../plugins/registry.js";
5
6
  import { schemaError } from "../runtime/error-builders.js";
6
7
  import { formatCandidateList, listColumnTsNames, listTableAccessors, suggestSchemaColumn, suggestSchemaTableAccessor, } from "../runtime/error-hints.js";
7
8
  import { resolveFkTargetSqlColumn } from "../runtime/query/primary-key.js";
8
- import { compileColumnCheckConstraints } from "../schema/column-constraints.js";
9
+ import { compileColumnCheckConstraints, quoteSqlColumn, } from "../schema/column-constraints.js";
9
10
  import { fk, resolveFkAccessorTarget, } from "../schema/relation.js";
10
- import { findPrimaryKeyColumn, } from "../schema/table.js";
11
+ import { findPrimaryKeyColumn, isIndexExpr, } from "../schema/table.js";
11
12
  import { resolveSqlColumnName } from "../utils/case.js";
12
13
  import { singularize } from "../utils/inflect.js";
13
- function buildEnumCheckExpression(sqlName, values) {
14
+ const POSTGIS_COLUMN_KINDS = new Set(["geometry", "geography", "point"]);
15
+ function buildEnumCheckExpression(sqlName, values, provider) {
14
16
  const quoted = values
15
17
  .map((value) => `'${value.replace(/'/g, "''")}'`)
16
18
  .join(", ");
17
- return `"${sqlName.replace(/"/g, '""')}" IN (${quoted})`;
19
+ return `${quoteSqlColumn(sqlName, provider)} IN (${quoted})`;
18
20
  }
19
21
  function resolveEnumTypeName(tableSqlName, columnSqlName, explicitName) {
20
22
  return explicitName ?? `${tableSqlName}_${columnSqlName}`;
@@ -41,11 +43,11 @@ function _pluralize(word) {
41
43
  function autoJunctionName(leftSql, rightSql) {
42
44
  return [leftSql, rightSql].sort().join("_");
43
45
  }
44
- function finalizeEnumColumns(manifestTables, enumMode) {
46
+ function finalizeEnumColumns(manifestTables, enumMode, provider) {
45
47
  const enumTypes = {};
46
48
  for (const table of Object.values(manifestTables)) {
47
49
  for (const col of table.columns) {
48
- if (col.kind !== "enum") {
50
+ if (col.kind !== "enum" && col.kind !== "enumArray") {
49
51
  continue;
50
52
  }
51
53
  const values = col.typeOptions?.values;
@@ -53,7 +55,10 @@ function finalizeEnumColumns(manifestTables, enumMode) {
53
55
  continue;
54
56
  }
55
57
  if (enumMode === "check") {
56
- const enumCheck = buildEnumCheckExpression(col.sqlName, values);
58
+ if (col.kind === "enumArray") {
59
+ continue;
60
+ }
61
+ const enumCheck = buildEnumCheckExpression(col.sqlName, values, provider);
57
62
  col.checkExpression = col.checkExpression
58
63
  ? `(${col.checkExpression}) AND (${enumCheck})`
59
64
  : enumCheck;
@@ -118,12 +123,14 @@ function compileIndexWhere(where, columns, columnNaming, provider) {
118
123
  for (const [tsName, value] of Object.entries(where)) {
119
124
  const col = requireColumnDef(columns, tsName);
120
125
  const sqlName = resolveSqlName(tsName, col, columnNaming);
121
- const quoted = `"${sqlName.replace(/"/g, '""')}"`;
126
+ const quoted = isMysqlFamilyProvider(provider)
127
+ ? `\`${sqlName.replace(/`/g, "``")}\``
128
+ : `"${sqlName.replace(/"/g, '""')}"`;
122
129
  if (value === null) {
123
130
  parts.push(`${quoted} IS NULL`);
124
131
  }
125
132
  else if (typeof value === "boolean") {
126
- parts.push(isSqliteProvider(provider)
133
+ parts.push(isSqliteProvider(provider) || isMysqlFamilyProvider(provider)
127
134
  ? `${quoted} = ${value ? 1 : 0}`
128
135
  : `${quoted} = ${value}`);
129
136
  }
@@ -163,6 +170,15 @@ function columnToManifest(tsName, col, columnNaming, tables, defaultColumnNaming
163
170
  if (meta.onDelete !== undefined) {
164
171
  result.onDelete = meta.onDelete;
165
172
  }
173
+ if (meta.onUpdate !== undefined) {
174
+ result.onUpdate = meta.onUpdate;
175
+ }
176
+ if (meta.deferrable !== undefined) {
177
+ if (isMysqlFamilyProvider(provider)) {
178
+ throw schemaError("invalid_column", `${isMariadbProvider(provider) ? "MariaDB" : "MySQL"} does not support deferrable foreign keys`);
179
+ }
180
+ result.deferrable = meta.deferrable;
181
+ }
166
182
  if (meta.hidden === true) {
167
183
  result.hidden = true;
168
184
  }
@@ -178,6 +194,18 @@ function columnToManifest(tsName, col, columnNaming, tables, defaultColumnNaming
178
194
  if ("updatedAt" in meta && meta.updatedAt === true) {
179
195
  validateUpdatedAtColumn(tsName, meta.kind);
180
196
  }
197
+ if (isMysqlFamilyProvider(provider) &&
198
+ POSTGIS_COLUMN_KINDS.has(meta.kind)) {
199
+ throw schemaError("invalid_column", `PostGIS column kind "${meta.kind}" is not supported on ${isMariadbProvider(provider) ? "MariaDB" : "MySQL"}`);
200
+ }
201
+ if (isMysqlFamilyProvider(provider) &&
202
+ MYSQL_UNSUPPORTED_COLUMN_KINDS.has(meta.kind)) {
203
+ throw schemaError("invalid_column", mysqlUnsupportedColumnKindMessage(meta.kind, isMariadbProvider(provider) ? "MariaDB" : "MySQL"));
204
+ }
205
+ if (isSqliteProvider(provider) &&
206
+ SQLITE_UNSUPPORTED_COLUMN_KINDS.has(meta.kind)) {
207
+ throw schemaError("invalid_column", sqliteUnsupportedColumnKindMessage(meta.kind));
208
+ }
181
209
  const result = {
182
210
  tsName,
183
211
  sqlName: resolveSqlName(tsName, col, columnNaming),
@@ -244,23 +272,91 @@ function copyStructuredConstraints(result, meta) {
244
272
  result.validation = meta.validation;
245
273
  }
246
274
  }
275
+ function extraIndexUsing(extra) {
276
+ if (extra.kind !== "index")
277
+ return undefined;
278
+ if ("using" in extra && typeof extra.using === "string") {
279
+ return extra.using;
280
+ }
281
+ if ("_using" in extra && typeof extra._using === "string") {
282
+ return extra._using;
283
+ }
284
+ return undefined;
285
+ }
286
+ function extraIndexOpclass(extra) {
287
+ if (extra.kind !== "index")
288
+ return undefined;
289
+ if ("opclass" in extra && typeof extra.opclass === "string") {
290
+ return extra.opclass;
291
+ }
292
+ if ("_opclass" in extra && typeof extra._opclass === "string") {
293
+ return extra._opclass;
294
+ }
295
+ return undefined;
296
+ }
297
+ function extraIndexKeys(extra) {
298
+ if (extra.kind !== "index")
299
+ return [];
300
+ if ("keys" in extra && extra.keys)
301
+ return extra.keys;
302
+ return extra.columns;
303
+ }
304
+ function sanitizeIndexNamePart(sql) {
305
+ const token = sql
306
+ .replace(/[^A-Za-z0-9]+/g, "_")
307
+ .replace(/^_|_$/g, "")
308
+ .slice(0, 40);
309
+ return token.length > 0 ? token : "expr";
310
+ }
311
+ const NON_UNIQUE_INDEX_METHODS = new Set(["gin", "gist", "brin"]);
247
312
  function extrasToManifest(extras, columns, tableSqlName, columnNaming, provider) {
248
313
  const indexes = [];
249
314
  let primaryKey = [];
315
+ const compositeFks = [];
250
316
  for (const extra of extras) {
251
317
  if (extra.kind === "index") {
318
+ const using = extraIndexUsing(extra);
319
+ const opclass = extraIndexOpclass(extra);
320
+ if (extra.unique && using && NON_UNIQUE_INDEX_METHODS.has(using)) {
321
+ throw schemaError("invalid_column", `UNIQUE indexes cannot use ${using}`);
322
+ }
323
+ if (using && using !== "btree") {
324
+ if (isSqliteProvider(provider)) {
325
+ throw schemaError("invalid_column", `SQLite does not support ${using} indexes`);
326
+ }
327
+ if (isMysqlFamilyProvider(provider) && using !== "hash") {
328
+ throw schemaError("invalid_column", `${isMariadbProvider(provider) ? "MariaDB" : "MySQL"} does not support ${using} indexes`);
329
+ }
330
+ }
252
331
  const wherePredicate = "where" in extra &&
253
332
  extra.where !== undefined &&
254
333
  typeof extra.where !== "function"
255
334
  ? extra.where
256
335
  : undefined;
257
- const sqlColumns = extra.columns.map((tsName) => resolveSqlName(tsName, requireColumnDef(columns, tsName), columnNaming));
336
+ const keys = extraIndexKeys(extra).map((key) => {
337
+ if (isIndexExpr(key)) {
338
+ return { expr: key.sql };
339
+ }
340
+ return {
341
+ sqlName: resolveSqlName(key, requireColumnDef(columns, key), columnNaming),
342
+ };
343
+ });
344
+ const sqlColumns = keys
345
+ .map((key) => key.sqlName)
346
+ .filter((name) => name !== undefined);
347
+ const nameParts = keys.map((key) => key.sqlName ?? sanitizeIndexNamePart(key.expr ?? "expr"));
258
348
  const index = {
259
- name: sqlColumns.join("_"),
349
+ name: nameParts.join("_") || "expr",
260
350
  columns: sqlColumns,
261
351
  unique: extra.unique,
352
+ keys,
353
+ ...(using && using !== "btree" ? { using } : {}),
354
+ ...(opclass ? { opclass } : {}),
262
355
  };
263
356
  if (wherePredicate) {
357
+ if (isMysqlFamilyProvider(provider)) {
358
+ throw schemaError("invalid_column", `${isMariadbProvider(provider) ? "MariaDB" : "MySQL"} does not support partial indexes (index({ where }))`);
359
+ }
264
360
  index.whereSql = compileIndexWhere(wherePredicate, columns, columnNaming, provider);
265
361
  }
266
362
  index.sqlName = resolveIndexSqlName(tableSqlName, index);
@@ -269,8 +365,89 @@ function extrasToManifest(extras, columns, tableSqlName, columnNaming, provider)
269
365
  else if (extra.kind === "primaryKey") {
270
366
  primaryKey = extra.columns.map((tsName) => resolveSqlName(tsName, requireColumnDef(columns, tsName), columnNaming));
271
367
  }
368
+ else if (extra.kind === "foreignKey") {
369
+ compositeFks.push(extra);
370
+ }
371
+ }
372
+ return { indexes, primaryKey, compositeFks };
373
+ }
374
+ function rejectMysqlDeferrable(provider, deferrable) {
375
+ if (!deferrable)
376
+ return;
377
+ if (isMysqlFamilyProvider(provider)) {
378
+ throw schemaError("invalid_column", `${isMariadbProvider(provider) ? "MariaDB" : "MySQL"} does not support deferrable foreign keys`);
379
+ }
380
+ }
381
+ function resolveCompositeForeignKeys(args) {
382
+ const result = [];
383
+ for (const extra of args.extras) {
384
+ if (!extra._as) {
385
+ throw schemaError("invalid_column", `foreignKey() on "${args.accessor}" requires .as("relationName")`);
386
+ }
387
+ if (!extra._inverse) {
388
+ throw schemaError("invalid_column", `foreignKey() on "${args.accessor}" requires .inverse("relationName")`);
389
+ }
390
+ if (!extra.targetTable) {
391
+ throw schemaError("invalid_column", `foreignKey() on "${args.accessor}" requires .references("table", ...)`);
392
+ }
393
+ if (extra.columns.length < 2) {
394
+ throw schemaError("invalid_column", `foreignKey() on "${args.accessor}" needs at least two local columns (use fk() for a single-column relation)`);
395
+ }
396
+ if (extra.columns.length !== extra.targetColumns.length) {
397
+ throw schemaError("invalid_column", `foreignKey() on "${args.accessor}" local and referenced column counts must match`);
398
+ }
399
+ rejectMysqlDeferrable(args.provider, extra._deferrable);
400
+ const targetDef = args.schemaTables[extra.targetTable];
401
+ if (!targetDef) {
402
+ throw schemaError("unknown_fk_target", `foreignKey() on "${args.accessor}" references unknown table accessor "${extra.targetTable}"`, { tableAccessor: args.accessor }, suggestSchemaTableAccessor(extra.targetTable, args.schemaTables));
403
+ }
404
+ const localSql = [];
405
+ for (const tsName of extra.columns) {
406
+ const def = requireColumnDef(args.localDefs, tsName, args.accessor);
407
+ if (isFkBuilder(def)) {
408
+ throw schemaError("invalid_column", `foreignKey() column "${tsName}" on "${args.accessor}" must not also be fk()`);
409
+ }
410
+ localSql.push(resolveSqlName(tsName, def, args.columnNaming));
411
+ }
412
+ const targetNaming = targetDef._columnNaming ?? args.columnNaming;
413
+ const targetSql = [];
414
+ for (const tsName of extra.targetColumns) {
415
+ const def = requireColumnDef(targetDef._columns, tsName, extra.targetTable);
416
+ targetSql.push(resolveSqlName(tsName, def, targetNaming));
417
+ }
418
+ const fk = {
419
+ name: extra.constraintName ??
420
+ `${args.tableSqlName}_${localSql.join("_")}_fkey`,
421
+ columns: localSql,
422
+ targetTable: targetDef._tableName,
423
+ targetColumns: targetSql,
424
+ };
425
+ if (extra._onDelete !== undefined)
426
+ fk.onDelete = extra._onDelete;
427
+ if (extra._onUpdate !== undefined)
428
+ fk.onUpdate = extra._onUpdate;
429
+ if (extra._deferrable !== undefined)
430
+ fk.deferrable = extra._deferrable;
431
+ result.push(fk);
272
432
  }
273
- return { indexes, primaryKey };
433
+ return result;
434
+ }
435
+ function columnSetIsUnique(table, sqlNames) {
436
+ if (sqlNames.length === 0)
437
+ return false;
438
+ if (table.primaryKey.length === sqlNames.length &&
439
+ sqlNames.every((name) => table.primaryKey.includes(name))) {
440
+ return true;
441
+ }
442
+ if (sqlNames.length === 1) {
443
+ return isUniqueColumn(table, sqlNames[0] ?? "");
444
+ }
445
+ return table.indexes.some((idx) => idx.unique &&
446
+ !idx.whereSql &&
447
+ !(idx.using && idx.using !== "btree") &&
448
+ !(idx.keys?.some((key) => key.expr) ?? false) &&
449
+ idx.columns.length === sqlNames.length &&
450
+ sqlNames.every((name) => idx.columns.includes(name)));
274
451
  }
275
452
  function buildRelations(columns, sourceAccessor, sqlNameToAccessor, manifestTables) {
276
453
  const relations = [];
@@ -297,6 +474,52 @@ function buildRelations(columns, sourceAccessor, sqlNameToAccessor, manifestTabl
297
474
  if (col.onDelete !== undefined) {
298
475
  rel.onDelete = col.onDelete;
299
476
  }
477
+ if (col.onUpdate !== undefined) {
478
+ rel.onUpdate = col.onUpdate;
479
+ }
480
+ if (col.deferrable !== undefined) {
481
+ rel.deferrable = col.deferrable;
482
+ }
483
+ relations.push(rel);
484
+ }
485
+ return relations;
486
+ }
487
+ function extraFkRelations(table, schemaTable) {
488
+ const relations = [];
489
+ const extras = schemaTable._extras.filter((extra) => extra.kind === "foreignKey");
490
+ const fks = table.foreignKeys ?? [];
491
+ for (let i = 0; i < extras.length; i++) {
492
+ const extra = extras[i];
493
+ const fk = fks[i];
494
+ if (!extra || !fk)
495
+ continue;
496
+ const targetAccessor = extra.targetTable;
497
+ const localTs = extra.columns;
498
+ const firstLocal = localTs[0];
499
+ const firstSql = fk.columns[0];
500
+ const firstTarget = fk.targetColumns[0];
501
+ if (!firstLocal || !firstSql || !firstTarget)
502
+ continue;
503
+ const rel = {
504
+ name: extra._as,
505
+ targetTable: fk.targetTable,
506
+ targetAccessor,
507
+ fkColumn: firstLocal,
508
+ fkSqlColumn: firstSql,
509
+ targetColumn: firstTarget,
510
+ fkColumns: localTs,
511
+ fkSqlColumns: fk.columns,
512
+ targetColumns: fk.targetColumns,
513
+ referencedSqlColumns: fk.targetColumns,
514
+ cardinality: "one",
515
+ inverse: extra._inverse,
516
+ };
517
+ if (extra._onDelete !== undefined)
518
+ rel.onDelete = extra._onDelete;
519
+ if (extra._onUpdate !== undefined)
520
+ rel.onUpdate = extra._onUpdate;
521
+ if (extra._deferrable !== undefined)
522
+ rel.deferrable = extra._deferrable;
300
523
  relations.push(rel);
301
524
  }
302
525
  return relations;
@@ -307,8 +530,10 @@ function isUniqueColumn(table, fkSqlColumn) {
307
530
  return true;
308
531
  return table.indexes.some((idx) => idx.unique &&
309
532
  !idx.whereSql &&
533
+ !idx.using &&
310
534
  idx.columns.length === 1 &&
311
- idx.columns[0] === fkSqlColumn);
535
+ idx.columns[0] === fkSqlColumn &&
536
+ !(idx.keys?.some((key) => key.expr) ?? false));
312
537
  }
313
538
  function resolveM2M(incoming) {
314
539
  return {
@@ -350,7 +575,7 @@ export function schemaToManifest(schema, _plugins = getPluginRegistry(), options
350
575
  const columns = Object.entries(tableDef._columns)
351
576
  .filter(([, col]) => !isManyToMany(col))
352
577
  .map(([name, col]) => columnToManifest(name, col, columnNaming, tables, defaultColumnNaming, provider));
353
- const { indexes, primaryKey } = extrasToManifest(tableDef._extras, tableDef._columns, tableDef._tableName, columnNaming, provider);
578
+ const { indexes, primaryKey, compositeFks } = extrasToManifest(tableDef._extras, tableDef._columns, tableDef._tableName, columnNaming, provider);
354
579
  for (const col of columns) {
355
580
  if (!col.index)
356
581
  continue;
@@ -358,6 +583,7 @@ export function schemaToManifest(schema, _plugins = getPluginRegistry(), options
358
583
  name: col.sqlName,
359
584
  columns: [col.sqlName],
360
585
  unique: false,
586
+ keys: [{ sqlName: col.sqlName }],
361
587
  };
362
588
  const already = indexes.some((idx) => !idx.unique &&
363
589
  idx.columns.length === 1 &&
@@ -393,6 +619,20 @@ export function schemaToManifest(schema, _plugins = getPluginRegistry(), options
393
619
  relations: [],
394
620
  indexes,
395
621
  primaryKey: pk,
622
+ ...(compositeFks.length > 0
623
+ ? {
624
+ foreignKeys: resolveCompositeForeignKeys({
625
+ accessor,
626
+ tableSqlName: tableDef._tableName,
627
+ columns,
628
+ extras: compositeFks,
629
+ columnNaming,
630
+ localDefs: tableDef._columns,
631
+ schemaTables: tables,
632
+ ...(provider ? { provider } : {}),
633
+ }),
634
+ }
635
+ : {}),
396
636
  };
397
637
  }
398
638
  const autoJunctionAccessors = new Set();
@@ -491,14 +731,27 @@ export function schemaToManifest(schema, _plugins = getPluginRegistry(), options
491
731
  });
492
732
  }
493
733
  for (const table of Object.values(manifestTables)) {
494
- table.relations = buildRelations(table.columns, table.accessor, sqlNameToAccessor, manifestTables);
734
+ for (const fk of table.foreignKeys ?? []) {
735
+ const target = Object.values(manifestTables).find((item) => item.sqlName === fk.targetTable);
736
+ if (!target) {
737
+ throw schemaError("unknown_fk_target", `foreignKey on "${table.accessor}" references unknown table ${fk.targetTable}`);
738
+ }
739
+ if (!columnSetIsUnique(target, fk.targetColumns)) {
740
+ throw schemaError("invalid_column", `foreignKey on "${table.accessor}" target (${fk.targetColumns.join(", ")}) must be a primary key or unique index on "${target.accessor}"`);
741
+ }
742
+ }
743
+ const schemaTable = tables[table.accessor];
744
+ table.relations = [
745
+ ...buildRelations(table.columns, table.accessor, sqlNameToAccessor, manifestTables),
746
+ ...(schemaTable ? extraFkRelations(table, schemaTable) : []),
747
+ ];
495
748
  }
496
749
  for (const table of Object.values(manifestTables)) {
497
750
  if (autoJunctionAccessors.has(table.accessor))
498
751
  continue;
499
752
  const fkRelations = table.relations.filter((rel) => {
500
- const col = table.columns.find((c) => c.fkAs === rel.name);
501
- return col?.kind === "fk";
753
+ const names = rel.fkColumns ?? [rel.fkColumn];
754
+ return names.every((name) => table.columns.some((col) => col.tsName === name || col.sqlName === name));
502
755
  });
503
756
  for (const rel of fkRelations) {
504
757
  const inverseTable = manifestTables[rel.targetAccessor];
@@ -518,18 +771,36 @@ export function schemaToManifest(schema, _plugins = getPluginRegistry(), options
518
771
  "Each inverse relation name must be unique on the target table",
519
772
  ]);
520
773
  }
521
- inverseTable.relations.push({
774
+ const localSql = rel.fkSqlColumns ?? [rel.fkSqlColumn];
775
+ const inverseRel = {
522
776
  name: rel.inverse,
523
777
  targetTable: table.sqlName,
524
778
  targetAccessor: table.accessor,
525
779
  fkColumn: rel.fkColumn,
526
780
  fkSqlColumn: rel.fkSqlColumn,
527
781
  targetColumn: table.primaryKey[0] ?? rel.targetColumn,
528
- cardinality: isUniqueColumn(table, rel.fkSqlColumn)
782
+ cardinality: columnSetIsUnique(table, localSql)
529
783
  ? "one"
530
784
  : "many",
531
785
  inverse: rel.name,
532
- });
786
+ };
787
+ if (rel.fkColumns)
788
+ inverseRel.fkColumns = rel.fkColumns;
789
+ if (rel.fkSqlColumns)
790
+ inverseRel.fkSqlColumns = rel.fkSqlColumns;
791
+ if (table.primaryKey.length > 1) {
792
+ inverseRel.targetColumns = table.primaryKey;
793
+ }
794
+ inverseRel.referencedSqlColumns = rel.referencedSqlColumns ??
795
+ rel.targetColumns ?? [rel.targetColumn];
796
+ if (rel.onDelete !== undefined)
797
+ inverseRel.onDelete = rel.onDelete;
798
+ if (rel.onUpdate !== undefined)
799
+ inverseRel.onUpdate = rel.onUpdate;
800
+ if (rel.deferrable !== undefined) {
801
+ inverseRel.deferrable = rel.deferrable;
802
+ }
803
+ inverseTable.relations.push(inverseRel);
533
804
  }
534
805
  }
535
806
  const manyToMany = incomingM2Ms.map(resolveM2M);
@@ -561,7 +832,7 @@ export function schemaToManifest(schema, _plugins = getPluginRegistry(), options
561
832
  });
562
833
  }
563
834
  }
564
- const enumTypes = finalizeEnumColumns(manifestTables, enumMode);
835
+ const enumTypes = finalizeEnumColumns(manifestTables, enumMode, provider);
565
836
  const pluginExtensions = collectExtensionsForKinds(Object.values(manifestTables).flatMap((table) => table.columns.map((col) => col.kind)));
566
837
  const userExtensions = schema._extensions ?? [];
567
838
  const extensions = [...new Set([...pluginExtensions, ...userExtensions])];
@@ -630,6 +901,15 @@ export function validateManifest(manifest) {
630
901
  });
631
902
  }
632
903
  }
904
+ for (const fk of table.foreignKeys ?? []) {
905
+ const target = Object.values(manifest.tables).find((item) => item.sqlName === fk.targetTable);
906
+ if (!target) {
907
+ errors.push({
908
+ code: "unknown_fk_target",
909
+ message: `FK constraint ${fk.name} on ${table.accessor} references unknown table ${fk.targetTable}`,
910
+ });
911
+ }
912
+ }
633
913
  }
634
914
  return errors;
635
915
  }