@fragno-dev/db 0.2.1 → 0.3.0

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 (362) hide show
  1. package/.turbo/turbo-build.log +206 -140
  2. package/CHANGELOG.md +67 -0
  3. package/README.md +30 -9
  4. package/dist/adapters/adapters.d.ts +23 -21
  5. package/dist/adapters/adapters.d.ts.map +1 -1
  6. package/dist/adapters/adapters.js.map +1 -1
  7. package/dist/adapters/generic-sql/driver-config.d.ts +16 -1
  8. package/dist/adapters/generic-sql/driver-config.d.ts.map +1 -1
  9. package/dist/adapters/generic-sql/driver-config.js +23 -1
  10. package/dist/adapters/generic-sql/driver-config.js.map +1 -1
  11. package/dist/adapters/generic-sql/generic-sql-adapter.d.ts +27 -9
  12. package/dist/adapters/generic-sql/generic-sql-adapter.d.ts.map +1 -1
  13. package/dist/adapters/generic-sql/generic-sql-adapter.js +55 -16
  14. package/dist/adapters/generic-sql/generic-sql-adapter.js.map +1 -1
  15. package/dist/adapters/generic-sql/generic-sql-uow-executor.js +129 -3
  16. package/dist/adapters/generic-sql/generic-sql-uow-executor.js.map +1 -1
  17. package/dist/adapters/generic-sql/migration/dialect/mysql.js +24 -5
  18. package/dist/adapters/generic-sql/migration/dialect/mysql.js.map +1 -1
  19. package/dist/adapters/generic-sql/migration/dialect/postgres.js +6 -5
  20. package/dist/adapters/generic-sql/migration/dialect/postgres.js.map +1 -1
  21. package/dist/adapters/generic-sql/migration/dialect/sqlite.js +21 -10
  22. package/dist/adapters/generic-sql/migration/dialect/sqlite.js.map +1 -1
  23. package/dist/adapters/generic-sql/migration/prepared-migrations.d.ts.map +1 -1
  24. package/dist/adapters/generic-sql/migration/prepared-migrations.js +8 -8
  25. package/dist/adapters/generic-sql/migration/prepared-migrations.js.map +1 -1
  26. package/dist/adapters/generic-sql/migration/sql-generator.js +74 -51
  27. package/dist/adapters/generic-sql/migration/sql-generator.js.map +1 -1
  28. package/dist/adapters/generic-sql/query/create-sql-query-compiler.js +6 -5
  29. package/dist/adapters/generic-sql/query/create-sql-query-compiler.js.map +1 -1
  30. package/dist/adapters/generic-sql/query/cursor-utils.js +42 -4
  31. package/dist/adapters/generic-sql/query/cursor-utils.js.map +1 -1
  32. package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js +25 -17
  33. package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js.map +1 -1
  34. package/dist/adapters/generic-sql/query/select-builder.js +5 -3
  35. package/dist/adapters/generic-sql/query/select-builder.js.map +1 -1
  36. package/dist/adapters/generic-sql/query/sql-query-compiler.js +15 -12
  37. package/dist/adapters/generic-sql/query/sql-query-compiler.js.map +1 -1
  38. package/dist/adapters/generic-sql/query/where-builder.js +38 -28
  39. package/dist/adapters/generic-sql/query/where-builder.js.map +1 -1
  40. package/dist/adapters/generic-sql/sqlite-storage.d.ts +13 -0
  41. package/dist/adapters/generic-sql/sqlite-storage.d.ts.map +1 -0
  42. package/dist/adapters/generic-sql/sqlite-storage.js +15 -0
  43. package/dist/adapters/generic-sql/sqlite-storage.js.map +1 -0
  44. package/dist/adapters/generic-sql/uow-decoder.js +7 -3
  45. package/dist/adapters/generic-sql/uow-decoder.js.map +1 -1
  46. package/dist/adapters/generic-sql/uow-encoder.js +28 -8
  47. package/dist/adapters/generic-sql/uow-encoder.js.map +1 -1
  48. package/dist/adapters/in-memory/condition-evaluator.js +131 -0
  49. package/dist/adapters/in-memory/condition-evaluator.js.map +1 -0
  50. package/dist/adapters/in-memory/errors.d.ts +13 -0
  51. package/dist/adapters/in-memory/errors.d.ts.map +1 -0
  52. package/dist/adapters/in-memory/errors.js +23 -0
  53. package/dist/adapters/in-memory/errors.js.map +1 -0
  54. package/dist/adapters/in-memory/in-memory-adapter.d.ts +27 -0
  55. package/dist/adapters/in-memory/in-memory-adapter.d.ts.map +1 -0
  56. package/dist/adapters/in-memory/in-memory-adapter.js +176 -0
  57. package/dist/adapters/in-memory/in-memory-adapter.js.map +1 -0
  58. package/dist/adapters/in-memory/in-memory-uow.js +648 -0
  59. package/dist/adapters/in-memory/in-memory-uow.js.map +1 -0
  60. package/dist/adapters/in-memory/index.d.ts +4 -0
  61. package/dist/adapters/in-memory/index.js +4 -0
  62. package/dist/adapters/in-memory/options.d.ts +28 -0
  63. package/dist/adapters/in-memory/options.d.ts.map +1 -0
  64. package/dist/adapters/in-memory/options.js +61 -0
  65. package/dist/adapters/in-memory/options.js.map +1 -0
  66. package/dist/adapters/in-memory/reference-resolution.js +26 -0
  67. package/dist/adapters/in-memory/reference-resolution.js.map +1 -0
  68. package/dist/adapters/in-memory/sorted-array-index.js +129 -0
  69. package/dist/adapters/in-memory/sorted-array-index.js.map +1 -0
  70. package/dist/adapters/in-memory/store.js +71 -0
  71. package/dist/adapters/in-memory/store.js.map +1 -0
  72. package/dist/adapters/in-memory/value-comparison.js +28 -0
  73. package/dist/adapters/in-memory/value-comparison.js.map +1 -0
  74. package/dist/adapters/shared/from-unit-of-work-compiler.js.map +1 -1
  75. package/dist/adapters/shared/uow-operation-compiler.js +11 -11
  76. package/dist/adapters/shared/uow-operation-compiler.js.map +1 -1
  77. package/dist/adapters/sql/index.d.ts +5 -0
  78. package/dist/adapters/sql/index.js +4 -0
  79. package/dist/db-fragment-definition-builder.d.ts +45 -96
  80. package/dist/db-fragment-definition-builder.d.ts.map +1 -1
  81. package/dist/db-fragment-definition-builder.js +121 -99
  82. package/dist/db-fragment-definition-builder.js.map +1 -1
  83. package/dist/dispatchers/cloudflare-do/index.d.ts +26 -0
  84. package/dist/dispatchers/cloudflare-do/index.d.ts.map +1 -0
  85. package/dist/dispatchers/cloudflare-do/index.js +63 -0
  86. package/dist/dispatchers/cloudflare-do/index.js.map +1 -0
  87. package/dist/dispatchers/node/index.d.ts +17 -0
  88. package/dist/dispatchers/node/index.d.ts.map +1 -0
  89. package/dist/dispatchers/node/index.js +59 -0
  90. package/dist/dispatchers/node/index.js.map +1 -0
  91. package/dist/fragments/internal-fragment.d.ts +172 -9
  92. package/dist/fragments/internal-fragment.d.ts.map +1 -1
  93. package/dist/fragments/internal-fragment.js +193 -74
  94. package/dist/fragments/internal-fragment.js.map +1 -1
  95. package/dist/fragments/internal-fragment.routes.js +29 -0
  96. package/dist/fragments/internal-fragment.routes.js.map +1 -0
  97. package/dist/fragments/internal-fragment.schema.d.ts +9 -0
  98. package/dist/fragments/internal-fragment.schema.d.ts.map +1 -0
  99. package/dist/fragments/internal-fragment.schema.js +22 -0
  100. package/dist/fragments/internal-fragment.schema.js.map +1 -0
  101. package/dist/hooks/durable-hooks-processor.d.ts +14 -0
  102. package/dist/hooks/durable-hooks-processor.d.ts.map +1 -0
  103. package/dist/hooks/durable-hooks-processor.js +32 -0
  104. package/dist/hooks/durable-hooks-processor.js.map +1 -0
  105. package/dist/hooks/hooks.d.ts +47 -4
  106. package/dist/hooks/hooks.d.ts.map +1 -1
  107. package/dist/hooks/hooks.js +106 -39
  108. package/dist/hooks/hooks.js.map +1 -1
  109. package/dist/migration-engine/auto-from-schema.js +14 -11
  110. package/dist/migration-engine/auto-from-schema.js.map +1 -1
  111. package/dist/migration-engine/generation-engine.d.ts +16 -10
  112. package/dist/migration-engine/generation-engine.d.ts.map +1 -1
  113. package/dist/migration-engine/generation-engine.js +72 -33
  114. package/dist/migration-engine/generation-engine.js.map +1 -1
  115. package/dist/migration-engine/shared.js.map +1 -1
  116. package/dist/mod.d.ts +17 -10
  117. package/dist/mod.d.ts.map +1 -1
  118. package/dist/mod.js +14 -8
  119. package/dist/mod.js.map +1 -1
  120. package/dist/naming/sql-naming.d.ts +19 -0
  121. package/dist/naming/sql-naming.d.ts.map +1 -0
  122. package/dist/naming/sql-naming.js +116 -0
  123. package/dist/naming/sql-naming.js.map +1 -0
  124. package/dist/node_modules/.pnpm/{rou3@0.7.10 → rou3@0.7.12}/node_modules/rou3/dist/index.js +8 -5
  125. package/dist/node_modules/.pnpm/rou3@0.7.12/node_modules/rou3/dist/index.js.map +1 -0
  126. package/dist/outbox/outbox-builder.js +156 -0
  127. package/dist/outbox/outbox-builder.js.map +1 -0
  128. package/dist/outbox/outbox.d.ts +52 -0
  129. package/dist/outbox/outbox.d.ts.map +1 -0
  130. package/dist/outbox/outbox.js +37 -0
  131. package/dist/outbox/outbox.js.map +1 -0
  132. package/dist/packages/fragno/dist/api/fragment-definition-builder.js +3 -2
  133. package/dist/packages/fragno/dist/api/fragment-definition-builder.js.map +1 -1
  134. package/dist/packages/fragno/dist/api/fragment-instantiator.js +164 -20
  135. package/dist/packages/fragno/dist/api/fragment-instantiator.js.map +1 -1
  136. package/dist/packages/fragno/dist/api/request-input-context.js +67 -0
  137. package/dist/packages/fragno/dist/api/request-input-context.js.map +1 -1
  138. package/dist/packages/fragno/dist/api/route.js +14 -1
  139. package/dist/packages/fragno/dist/api/route.js.map +1 -1
  140. package/dist/packages/fragno/dist/internal/trace-context.js +12 -0
  141. package/dist/packages/fragno/dist/internal/trace-context.js.map +1 -0
  142. package/dist/query/column-defaults.js +20 -4
  143. package/dist/query/column-defaults.js.map +1 -1
  144. package/dist/query/cursor.d.ts +3 -1
  145. package/dist/query/cursor.d.ts.map +1 -1
  146. package/dist/query/cursor.js +45 -14
  147. package/dist/query/cursor.js.map +1 -1
  148. package/dist/query/db-now.d.ts +8 -0
  149. package/dist/query/db-now.d.ts.map +1 -0
  150. package/dist/query/db-now.js +7 -0
  151. package/dist/query/db-now.js.map +1 -0
  152. package/dist/query/serialize/create-sql-serializer.js +3 -2
  153. package/dist/query/serialize/create-sql-serializer.js.map +1 -1
  154. package/dist/query/serialize/dialect/mysql-serializer.js +12 -6
  155. package/dist/query/serialize/dialect/mysql-serializer.js.map +1 -1
  156. package/dist/query/serialize/dialect/postgres-serializer.js +25 -7
  157. package/dist/query/serialize/dialect/postgres-serializer.js.map +1 -1
  158. package/dist/query/serialize/dialect/sqlite-serializer.js +55 -11
  159. package/dist/query/serialize/dialect/sqlite-serializer.js.map +1 -1
  160. package/dist/query/serialize/sql-serializer.js +2 -2
  161. package/dist/query/serialize/sql-serializer.js.map +1 -1
  162. package/dist/query/simple-query-interface.d.ts +6 -1
  163. package/dist/query/simple-query-interface.d.ts.map +1 -1
  164. package/dist/query/unit-of-work/execute-unit-of-work.d.ts +351 -100
  165. package/dist/query/unit-of-work/execute-unit-of-work.d.ts.map +1 -1
  166. package/dist/query/unit-of-work/execute-unit-of-work.js +440 -267
  167. package/dist/query/unit-of-work/execute-unit-of-work.js.map +1 -1
  168. package/dist/query/unit-of-work/unit-of-work.d.ts +67 -22
  169. package/dist/query/unit-of-work/unit-of-work.d.ts.map +1 -1
  170. package/dist/query/unit-of-work/unit-of-work.js +110 -13
  171. package/dist/query/unit-of-work/unit-of-work.js.map +1 -1
  172. package/dist/query/value-decoding.js +8 -5
  173. package/dist/query/value-decoding.js.map +1 -1
  174. package/dist/query/value-encoding.js +29 -9
  175. package/dist/query/value-encoding.js.map +1 -1
  176. package/dist/schema/create.d.ts +40 -14
  177. package/dist/schema/create.d.ts.map +1 -1
  178. package/dist/schema/create.js +82 -42
  179. package/dist/schema/create.js.map +1 -1
  180. package/dist/schema/generate-id.d.ts +20 -0
  181. package/dist/schema/generate-id.d.ts.map +1 -0
  182. package/dist/schema/generate-id.js +28 -0
  183. package/dist/schema/generate-id.js.map +1 -0
  184. package/dist/schema/type-conversion/create-sql-type-mapper.js +3 -2
  185. package/dist/schema/type-conversion/create-sql-type-mapper.js.map +1 -1
  186. package/dist/schema/type-conversion/dialect/sqlite.js +9 -0
  187. package/dist/schema/type-conversion/dialect/sqlite.js.map +1 -1
  188. package/dist/schema/validator.d.ts +10 -0
  189. package/dist/schema/validator.d.ts.map +1 -0
  190. package/dist/schema/validator.js +123 -0
  191. package/dist/schema/validator.js.map +1 -0
  192. package/dist/schema-output/drizzle.d.ts +30 -0
  193. package/dist/schema-output/drizzle.d.ts.map +1 -0
  194. package/dist/{adapters/drizzle/generate.js → schema-output/drizzle.js} +82 -56
  195. package/dist/schema-output/drizzle.js.map +1 -0
  196. package/dist/schema-output/prisma.d.ts +17 -0
  197. package/dist/schema-output/prisma.d.ts.map +1 -0
  198. package/dist/schema-output/prisma.js +296 -0
  199. package/dist/schema-output/prisma.js.map +1 -0
  200. package/dist/util/default-database-adapter.js +61 -0
  201. package/dist/util/default-database-adapter.js.map +1 -0
  202. package/dist/with-database.d.ts +1 -1
  203. package/dist/with-database.d.ts.map +1 -1
  204. package/dist/with-database.js +12 -3
  205. package/dist/with-database.js.map +1 -1
  206. package/package.json +43 -28
  207. package/src/adapters/adapters.ts +30 -24
  208. package/src/adapters/drizzle/migrate-drizzle.test.ts +54 -33
  209. package/src/adapters/drizzle/migration-parity-drizzle-kit.test.ts +599 -0
  210. package/src/adapters/drizzle/test-utils.ts +12 -8
  211. package/src/adapters/generic-sql/driver-config.ts +38 -0
  212. package/src/adapters/generic-sql/generic-sql-adapter.test.ts +5 -5
  213. package/src/adapters/generic-sql/generic-sql-adapter.ts +110 -24
  214. package/src/adapters/generic-sql/generic-sql-uow-executor.test.ts +54 -0
  215. package/src/adapters/generic-sql/generic-sql-uow-executor.ts +231 -3
  216. package/src/adapters/generic-sql/migration/adapter-migration-parity.test.ts +118 -0
  217. package/src/adapters/generic-sql/migration/dialect/mysql.test.ts +26 -8
  218. package/src/adapters/generic-sql/migration/dialect/mysql.ts +46 -8
  219. package/src/adapters/generic-sql/migration/dialect/postgres.test.ts +25 -7
  220. package/src/adapters/generic-sql/migration/dialect/postgres.ts +8 -4
  221. package/src/adapters/generic-sql/migration/dialect/sqlite.test.ts +47 -8
  222. package/src/adapters/generic-sql/migration/dialect/sqlite.ts +27 -12
  223. package/src/adapters/generic-sql/migration/prepared-migrations.test.ts +128 -39
  224. package/src/adapters/generic-sql/migration/prepared-migrations.ts +15 -8
  225. package/src/adapters/generic-sql/migration/sql-generator.ts +142 -65
  226. package/src/adapters/generic-sql/query/create-sql-query-compiler.ts +9 -6
  227. package/src/adapters/generic-sql/query/cursor-utils.test.ts +271 -0
  228. package/src/adapters/generic-sql/query/cursor-utils.ts +41 -6
  229. package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.test.ts +27 -27
  230. package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.ts +38 -24
  231. package/src/adapters/generic-sql/query/select-builder.test.ts +15 -11
  232. package/src/adapters/generic-sql/query/select-builder.ts +6 -2
  233. package/src/adapters/generic-sql/query/sql-query-compiler.test.ts +52 -2
  234. package/src/adapters/generic-sql/query/sql-query-compiler.ts +50 -15
  235. package/src/adapters/generic-sql/query/where-builder.test.ts +91 -17
  236. package/src/adapters/generic-sql/query/where-builder.ts +90 -38
  237. package/src/adapters/{kysely/kysely-adapter-pglite.test.ts → generic-sql/sql-adapter-pglite-migrations.test.ts} +6 -6
  238. package/src/adapters/generic-sql/sql-adapter-pglite-pagination.test.ts +806 -0
  239. package/src/adapters/{drizzle/drizzle-adapter-pglite.test.ts → generic-sql/sql-adapter-pglite-queries.test.ts} +11 -11
  240. package/src/adapters/generic-sql/{test/generic-drizzle-adapter-sqlite3.test.ts → sql-adapter-sqlite3-driver.test.ts} +49 -35
  241. package/src/adapters/{drizzle/drizzle-adapter-sqlite3.test.ts → generic-sql/sql-adapter-sqlite3-uow.test.ts} +48 -32
  242. package/src/adapters/{kysely/kysely-adapter-sqlocal.test.ts → generic-sql/sql-adapter-sqlocal.test.ts} +6 -6
  243. package/src/adapters/generic-sql/sqlite-storage.ts +20 -0
  244. package/src/adapters/generic-sql/uow-decoder.test.ts +1 -1
  245. package/src/adapters/generic-sql/uow-decoder.ts +21 -3
  246. package/src/adapters/generic-sql/uow-encoder.test.ts +33 -2
  247. package/src/adapters/generic-sql/uow-encoder.ts +50 -11
  248. package/src/adapters/in-memory/condition-evaluator.test.ts +193 -0
  249. package/src/adapters/in-memory/condition-evaluator.ts +275 -0
  250. package/src/adapters/in-memory/errors.ts +20 -0
  251. package/src/adapters/in-memory/in-memory-adapter.ts +277 -0
  252. package/src/adapters/in-memory/in-memory-uow.mutations.test.ts +296 -0
  253. package/src/adapters/in-memory/in-memory-uow.retrieval.test.ts +100 -0
  254. package/src/adapters/in-memory/in-memory-uow.ts +1348 -0
  255. package/src/adapters/in-memory/index.ts +3 -0
  256. package/src/adapters/in-memory/options.test.ts +41 -0
  257. package/src/adapters/in-memory/options.ts +87 -0
  258. package/src/adapters/in-memory/reference-resolution.test.ts +50 -0
  259. package/src/adapters/in-memory/reference-resolution.ts +67 -0
  260. package/src/adapters/in-memory/sorted-array-index.test.ts +123 -0
  261. package/src/adapters/in-memory/sorted-array-index.ts +228 -0
  262. package/src/adapters/in-memory/store.test.ts +68 -0
  263. package/src/adapters/in-memory/store.ts +145 -0
  264. package/src/adapters/in-memory/value-comparison.ts +53 -0
  265. package/src/adapters/in-memory/value-normalization.test.ts +57 -0
  266. package/src/adapters/prisma/prisma-adapter-sqlite3.test.ts +1163 -0
  267. package/src/adapters/shared/from-unit-of-work-compiler.ts +3 -1
  268. package/src/adapters/shared/uow-operation-compiler.ts +26 -16
  269. package/src/adapters/sql/index.ts +12 -0
  270. package/src/db-fragment-definition-builder.test.ts +88 -54
  271. package/src/db-fragment-definition-builder.ts +201 -322
  272. package/src/db-fragment-instantiator.test.ts +169 -101
  273. package/src/db-fragment-integration.test.ts +301 -149
  274. package/src/dispatchers/cloudflare-do/index.test.ts +73 -0
  275. package/src/dispatchers/cloudflare-do/index.ts +104 -0
  276. package/src/dispatchers/node/index.test.ts +91 -0
  277. package/src/dispatchers/node/index.ts +87 -0
  278. package/src/fragments/internal-fragment.routes.ts +42 -0
  279. package/src/fragments/internal-fragment.schema.ts +51 -0
  280. package/src/fragments/internal-fragment.test.ts +730 -274
  281. package/src/fragments/internal-fragment.ts +447 -154
  282. package/src/hooks/durable-hooks-processor.test.ts +117 -0
  283. package/src/hooks/durable-hooks-processor.ts +67 -0
  284. package/src/hooks/hooks.test.ts +411 -259
  285. package/src/hooks/hooks.ts +265 -66
  286. package/src/migration-engine/auto-from-schema.test.ts +14 -14
  287. package/src/migration-engine/auto-from-schema.ts +5 -2
  288. package/src/migration-engine/create.test.ts +2 -2
  289. package/src/migration-engine/generation-engine.test.ts +229 -104
  290. package/src/migration-engine/generation-engine.ts +94 -64
  291. package/src/migration-engine/shared.ts +1 -0
  292. package/src/mod.ts +78 -30
  293. package/src/naming/sql-naming.ts +180 -0
  294. package/src/outbox/outbox-builder.ts +241 -0
  295. package/src/outbox/outbox.test.ts +253 -0
  296. package/src/outbox/outbox.ts +137 -0
  297. package/src/query/column-defaults.ts +41 -3
  298. package/src/query/condition-builder.test.ts +3 -3
  299. package/src/query/cursor.test.ts +116 -18
  300. package/src/query/cursor.ts +75 -26
  301. package/src/query/db-now.ts +6 -0
  302. package/src/query/query-type.test.ts +2 -2
  303. package/src/query/serialize/create-sql-serializer.ts +7 -2
  304. package/src/query/serialize/dialect/mysql-serializer.ts +12 -4
  305. package/src/query/serialize/dialect/postgres-serializer.ts +34 -4
  306. package/src/query/serialize/dialect/sqlite-serializer.test.ts +51 -1
  307. package/src/query/serialize/dialect/sqlite-serializer.ts +92 -9
  308. package/src/query/serialize/sql-serializer.ts +4 -4
  309. package/src/query/simple-query-interface.ts +5 -0
  310. package/src/query/unit-of-work/execute-unit-of-work.test.ts +1512 -1458
  311. package/src/query/unit-of-work/execute-unit-of-work.ts +1708 -596
  312. package/src/query/unit-of-work/tx-builder.test.ts +1041 -0
  313. package/src/query/unit-of-work/unit-of-work-coordinator.test.ts +32 -32
  314. package/src/query/unit-of-work/unit-of-work-types.test.ts +1 -1
  315. package/src/query/unit-of-work/unit-of-work.test.ts +231 -36
  316. package/src/query/unit-of-work/unit-of-work.ts +229 -31
  317. package/src/query/value-decoding.test.ts +13 -2
  318. package/src/query/value-decoding.ts +17 -4
  319. package/src/query/value-encoding.test.ts +85 -2
  320. package/src/query/value-encoding.ts +56 -6
  321. package/src/schema/create.test.ts +129 -42
  322. package/src/schema/create.ts +187 -47
  323. package/src/schema/generate-id.test.ts +57 -0
  324. package/src/schema/generate-id.ts +38 -0
  325. package/src/schema/serialize.test.ts +14 -2
  326. package/src/schema/type-conversion/create-sql-type-mapper.ts +7 -2
  327. package/src/schema/type-conversion/dialect/sqlite.ts +18 -0
  328. package/src/schema/type-conversion/type-mapping.test.ts +25 -1
  329. package/src/schema/validator.test.ts +197 -0
  330. package/src/schema/validator.ts +231 -0
  331. package/src/{adapters/drizzle/generate.test.ts → schema-output/drizzle.test.ts} +179 -129
  332. package/src/{adapters/drizzle/generate.ts → schema-output/drizzle.ts} +143 -93
  333. package/src/schema-output/prisma.test.ts +536 -0
  334. package/src/schema-output/prisma.ts +573 -0
  335. package/src/util/default-database-adapter.ts +106 -0
  336. package/src/with-database.ts +22 -3
  337. package/tsdown.config.ts +6 -4
  338. package/dist/adapters/drizzle/drizzle-adapter.d.ts +0 -20
  339. package/dist/adapters/drizzle/drizzle-adapter.d.ts.map +0 -1
  340. package/dist/adapters/drizzle/drizzle-adapter.js +0 -27
  341. package/dist/adapters/drizzle/drizzle-adapter.js.map +0 -1
  342. package/dist/adapters/drizzle/generate.d.ts +0 -30
  343. package/dist/adapters/drizzle/generate.d.ts.map +0 -1
  344. package/dist/adapters/drizzle/generate.js.map +0 -1
  345. package/dist/adapters/kysely/kysely-adapter.d.ts +0 -19
  346. package/dist/adapters/kysely/kysely-adapter.d.ts.map +0 -1
  347. package/dist/adapters/kysely/kysely-adapter.js +0 -17
  348. package/dist/adapters/kysely/kysely-adapter.js.map +0 -1
  349. package/dist/adapters/shared/table-name-mapper.d.ts +0 -12
  350. package/dist/adapters/shared/table-name-mapper.d.ts.map +0 -1
  351. package/dist/adapters/shared/table-name-mapper.js +0 -43
  352. package/dist/adapters/shared/table-name-mapper.js.map +0 -1
  353. package/dist/node_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js.map +0 -1
  354. package/dist/schema-generator/schema-generator.d.ts +0 -15
  355. package/dist/schema-generator/schema-generator.d.ts.map +0 -1
  356. package/src/adapters/drizzle/drizzle-adapter.ts +0 -39
  357. package/src/adapters/kysely/kysely-adapter.ts +0 -27
  358. package/src/adapters/shared/table-name-mapper.ts +0 -50
  359. package/src/schema-generator/schema-generator.ts +0 -12
  360. package/src/shared/config.ts +0 -10
  361. package/src/shared/connection-pool.ts +0 -24
  362. package/src/shared/prisma.ts +0 -45
@@ -1 +1 @@
1
- {"version":3,"file":"value-encoding.js","names":["#referencedTable","#externalIdValue","result: Record<string, unknown>","externalIdForSubquery: string | undefined"],"sources":["../../src/query/value-encoding.ts"],"sourcesContent":["import type { AnyTable, AnyColumn } from \"../schema/create\";\nimport { FragnoId, FragnoReference } from \"../schema/create\";\nimport { generateRuntimeDefault } from \"./column-defaults\";\n\n/**\n * Marker class for reference column values that need subquery resolution.\n * When a reference column receives a string (external ID), this marker tells\n * the query builder to generate a subquery to look up the internal ID.\n * @internal\n */\nexport class ReferenceSubquery {\n #referencedTable: AnyTable;\n #externalIdValue: string;\n\n constructor(referencedTable: AnyTable, externalIdValue: string) {\n this.#referencedTable = referencedTable;\n this.#externalIdValue = externalIdValue;\n }\n\n get referencedTable() {\n return this.#referencedTable;\n }\n\n get externalIdValue() {\n return this.#externalIdValue;\n }\n}\n\n/**\n * Resolves FragnoId or FragnoReference objects to their appropriate primitive values.\n *\n * This function handles the Fragno ID system's conversion to database values:\n * - FragnoReference objects are resolved to their internal IDs\n * - FragnoId objects are resolved based on the column role:\n * - external-id: uses the external ID\n * - internal-id: uses the internal ID (must be present)\n * - reference: uses databaseId (internal ID if available, else external ID)\n * - other: uses the external ID by default\n *\n * @param value - The value to resolve (may be FragnoId, FragnoReference, or any other value)\n * @param col - The column schema definition\n * @returns The resolved primitive value, or the original value if not a FragnoId/FragnoReference\n * @throws Error if internal ID is required but not available\n * @internal\n */\nexport function resolveFragnoIdValue(value: unknown, col: AnyColumn): unknown {\n // Handle FragnoReference objects (for reference columns)\n if (value instanceof FragnoReference) {\n return value.internalId;\n }\n\n // Handle FragnoId objects\n if (value instanceof FragnoId) {\n // For external ID columns, use the external ID\n if (col.role === \"external-id\") {\n return value.externalId;\n }\n // For internal ID columns, use the internal ID (must be present)\n if (col.role === \"internal-id\") {\n if (value.internalId === undefined) {\n throw new Error(`FragnoId must have internalId for internal-id column ${col.name}`);\n }\n return value.internalId;\n }\n // For reference columns, prefer internal ID if available, else external ID\n if (col.role === \"reference\") {\n return value.databaseId;\n }\n // Default to external ID for other columns\n return value.externalId;\n }\n\n return value;\n}\n\n/**\n * Encodes a record of values from the application format to resolved format.\n *\n * This function:\n * - Transforms object keys from ORM names to database column names\n * - Resolves FragnoId/FragnoReference objects to primitive values\n * - Generates default values for undefined columns\n * - Creates ReferenceSubquery markers for external ID lookups\n *\n * Note: This function does NOT serialize values (Date → number, bigint → Buffer, etc.).\n * Use UnitOfWorkEncoder.encode() to apply driver-specific serialization after this step.\n *\n * @param values - The record of values to encode in application format\n * @param table - The table schema definition containing column information\n * @param generateDefault - Whether to generate default values for undefined columns\n * @returns A record with database column names and resolved (but not serialized) values\n *\n * @example\n * ```ts\n * const encoded = encodeValues(\n * { userId: 123, createdAt: new Date() },\n * userTable,\n * true\n * );\n * // Returns: { user_id: 123, created_at: Date } (not yet serialized)\n * ```\n */\nexport function encodeValues(\n values: Record<string, unknown>,\n table: AnyTable,\n generateDefault: boolean,\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n\n for (const k in table.columns) {\n const col = table.columns[k];\n\n // Skip internal ID - never provided by user, auto-generated by database\n if (col.role === \"internal-id\") {\n continue;\n }\n let value = values[k];\n\n if (generateDefault && value === undefined) {\n // Only generate runtime defaults (defaultTo$), not static defaults (defaultTo).\n // Static defaults should be handled by the database via DEFAULT constraints.\n value = generateRuntimeDefault(col);\n }\n\n if (value !== undefined) {\n // Handle reference columns: strings or FragnoIds without internal IDs need subqueries\n if (col.role === \"reference\") {\n let needsSubquery = false;\n let externalIdForSubquery: string | undefined;\n\n if (typeof value === \"string\") {\n // String external ID - needs subquery\n needsSubquery = true;\n externalIdForSubquery = value;\n } else if (value instanceof FragnoId && value.internalId === undefined) {\n // FragnoId without internal ID - needs subquery\n needsSubquery = true;\n externalIdForSubquery = value.externalId;\n } else if (value instanceof FragnoId && value.internalId !== undefined) {\n // FragnoId with internal ID - use it directly (will be serialized later)\n result[col.name] = value.internalId;\n continue;\n } else if (value instanceof FragnoReference) {\n // FragnoReference - use internal ID directly (will be serialized later)\n result[col.name] = value.internalId;\n continue;\n }\n\n if (needsSubquery) {\n const relation = Object.values(table.relations).find((rel) =>\n rel.on.some(([localCol]) => localCol === k),\n );\n if (relation) {\n result[col.name] = new ReferenceSubquery(relation.table, externalIdForSubquery!);\n continue;\n }\n throw new Error(`Reference column ${k} not found in table ${table.name}`);\n }\n }\n\n // Resolve FragnoId/FragnoReference to primitive values (serialization happens later)\n const resolvedValue = resolveFragnoIdValue(value, col);\n result[col.name] = resolvedValue;\n }\n }\n\n return result;\n}\n"],"mappings":";;;;;;;;;;AAUA,IAAa,oBAAb,MAA+B;CAC7B;CACA;CAEA,YAAY,iBAA2B,iBAAyB;AAC9D,QAAKA,kBAAmB;AACxB,QAAKC,kBAAmB;;CAG1B,IAAI,kBAAkB;AACpB,SAAO,MAAKD;;CAGd,IAAI,kBAAkB;AACpB,SAAO,MAAKC;;;;;;;;;;;;;;;;;;;;AAqBhB,SAAgB,qBAAqB,OAAgB,KAAyB;AAE5E,KAAI,iBAAiB,gBACnB,QAAO,MAAM;AAIf,KAAI,iBAAiB,UAAU;AAE7B,MAAI,IAAI,SAAS,cACf,QAAO,MAAM;AAGf,MAAI,IAAI,SAAS,eAAe;AAC9B,OAAI,MAAM,eAAe,OACvB,OAAM,IAAI,MAAM,wDAAwD,IAAI,OAAO;AAErF,UAAO,MAAM;;AAGf,MAAI,IAAI,SAAS,YACf,QAAO,MAAM;AAGf,SAAO,MAAM;;AAGf,QAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BT,SAAgB,aACd,QACA,OACA,iBACyB;CACzB,MAAMC,SAAkC,EAAE;AAE1C,MAAK,MAAM,KAAK,MAAM,SAAS;EAC7B,MAAM,MAAM,MAAM,QAAQ;AAG1B,MAAI,IAAI,SAAS,cACf;EAEF,IAAI,QAAQ,OAAO;AAEnB,MAAI,mBAAmB,UAAU,OAG/B,SAAQ,uBAAuB,IAAI;AAGrC,MAAI,UAAU,QAAW;AAEvB,OAAI,IAAI,SAAS,aAAa;IAC5B,IAAI,gBAAgB;IACpB,IAAIC;AAEJ,QAAI,OAAO,UAAU,UAAU;AAE7B,qBAAgB;AAChB,6BAAwB;eACf,iBAAiB,YAAY,MAAM,eAAe,QAAW;AAEtE,qBAAgB;AAChB,6BAAwB,MAAM;eACrB,iBAAiB,YAAY,MAAM,eAAe,QAAW;AAEtE,YAAO,IAAI,QAAQ,MAAM;AACzB;eACS,iBAAiB,iBAAiB;AAE3C,YAAO,IAAI,QAAQ,MAAM;AACzB;;AAGF,QAAI,eAAe;KACjB,MAAM,WAAW,OAAO,OAAO,MAAM,UAAU,CAAC,MAAM,QACpD,IAAI,GAAG,MAAM,CAAC,cAAc,aAAa,EAAE,CAC5C;AACD,SAAI,UAAU;AACZ,aAAO,IAAI,QAAQ,IAAI,kBAAkB,SAAS,OAAO,sBAAuB;AAChF;;AAEF,WAAM,IAAI,MAAM,oBAAoB,EAAE,sBAAsB,MAAM,OAAO;;;GAK7E,MAAM,gBAAgB,qBAAqB,OAAO,IAAI;AACtD,UAAO,IAAI,QAAQ;;;AAIvB,QAAO"}
1
+ {"version":3,"file":"value-encoding.js","names":["#referencedTable","#externalIdValue","result: Record<string, unknown>","externalIdForSubquery: string | undefined"],"sources":["../../src/query/value-encoding.ts"],"sourcesContent":["import type { AnyTable, AnyColumn } from \"../schema/create\";\nimport { FragnoId, FragnoReference } from \"../schema/create\";\nimport {\n generateDatabaseDefault,\n generateRuntimeDefault,\n type RuntimeDefaultContext,\n} from \"./column-defaults\";\nimport type { NamingResolver } from \"../naming/sql-naming\";\n\n/**\n * Marker class for reference column values that need subquery resolution.\n * When a reference column receives a string (external ID), this marker tells\n * the query builder to generate a subquery to look up the internal ID.\n * @internal\n */\nexport class ReferenceSubquery {\n #referencedTable: AnyTable;\n #externalIdValue: string;\n\n constructor(referencedTable: AnyTable, externalIdValue: string) {\n this.#referencedTable = referencedTable;\n this.#externalIdValue = externalIdValue;\n }\n\n get referencedTable() {\n return this.#referencedTable;\n }\n\n get externalIdValue() {\n return this.#externalIdValue;\n }\n}\n\n/**\n * Resolves FragnoId or FragnoReference objects to their appropriate primitive values.\n *\n * This function handles the Fragno ID system's conversion to database values:\n * - FragnoReference objects are resolved to their internal IDs\n * - FragnoId objects are resolved based on the column role:\n * - external-id: uses the external ID\n * - internal-id: uses the internal ID (must be present)\n * - reference: uses databaseId (internal ID if available, else external ID)\n * - other: uses the external ID by default\n *\n * @param value - The value to resolve (may be FragnoId, FragnoReference, or any other value)\n * @param col - The column schema definition\n * @returns The resolved primitive value, or the original value if not a FragnoId/FragnoReference\n * @throws Error if internal ID is required but not available\n * @internal\n */\nexport function resolveFragnoIdValue(value: unknown, col: AnyColumn): unknown {\n // Handle FragnoReference objects (for reference columns)\n if (value instanceof FragnoReference) {\n return value.internalId;\n }\n\n // Handle FragnoId objects\n if (value instanceof FragnoId) {\n // For external ID columns, use the external ID\n if (col.role === \"external-id\") {\n return value.externalId;\n }\n // For internal ID columns, use the internal ID (must be present)\n if (col.role === \"internal-id\") {\n if (value.internalId === undefined) {\n throw new Error(`FragnoId must have internalId for internal-id column ${col.name}`);\n }\n return value.internalId;\n }\n // For reference columns, prefer internal ID if available, else external ID\n if (col.role === \"reference\") {\n return value.databaseId;\n }\n // Default to external ID for other columns\n return value.externalId;\n }\n\n return value;\n}\n\n/**\n * Encodes a record of values from the application format to resolved format.\n *\n * This function:\n * - Transforms object keys from ORM names to database column names\n * - Resolves FragnoId/FragnoReference objects to primitive values\n * - Generates default values for undefined columns\n * - Creates ReferenceSubquery markers for external ID lookups\n *\n * Note: This function does NOT serialize values (Date → number, bigint → Buffer, etc.).\n * Use UnitOfWorkEncoder.encode() to apply driver-specific serialization after this step.\n *\n * @param values - The record of values to encode in application format\n * @param table - The table schema definition containing column information\n * @param generateDefault - Whether to generate default values for undefined columns\n * @returns A record with database column names and resolved (but not serialized) values\n *\n * @example\n * ```ts\n * const encoded = encodeValues(\n * { userId: 123, createdAt: new Date() },\n * userTable,\n * true\n * );\n * // Returns: { user_id: 123, created_at: Date } (not yet serialized)\n * ```\n */\nexport function encodeValues(\n values: Record<string, unknown>,\n table: AnyTable,\n generateDefault: boolean,\n runtimeDefaults: RuntimeDefaultContext = {},\n resolver?: NamingResolver,\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n\n for (const k in table.columns) {\n const col = table.columns[k];\n\n // Skip internal ID - never provided by user, auto-generated by database\n if (col.role === \"internal-id\") {\n continue;\n }\n let value = values[k];\n\n if (generateDefault && value === undefined) {\n // Only generate runtime defaults (defaultTo$), not static defaults (defaultTo).\n // Static defaults should be handled by the database via DEFAULT constraints.\n value = generateRuntimeDefault(col, runtimeDefaults);\n }\n\n if (value !== undefined) {\n const physicalColumnName = resolver ? resolver.getColumnName(table.name, col.name) : col.name;\n\n // Handle reference columns: strings or FragnoIds without internal IDs need subqueries\n if (col.role === \"reference\") {\n let needsSubquery = false;\n let externalIdForSubquery: string | undefined;\n\n if (typeof value === \"string\") {\n // String external ID - needs subquery\n needsSubquery = true;\n externalIdForSubquery = value;\n } else if (value instanceof FragnoId && value.internalId === undefined) {\n // FragnoId without internal ID - needs subquery\n needsSubquery = true;\n externalIdForSubquery = value.externalId;\n } else if (value instanceof FragnoId && value.internalId !== undefined) {\n // FragnoId with internal ID - use it directly (will be serialized later)\n result[physicalColumnName] = value.internalId;\n continue;\n } else if (value instanceof FragnoReference) {\n // FragnoReference - use internal ID directly (will be serialized later)\n result[physicalColumnName] = value.internalId;\n continue;\n }\n\n if (needsSubquery) {\n const relation = Object.values(table.relations).find((rel) =>\n rel.on.some(([localCol]) => localCol === k),\n );\n if (relation) {\n result[physicalColumnName] = new ReferenceSubquery(\n relation.table,\n externalIdForSubquery!,\n );\n continue;\n }\n throw new Error(`Reference column ${k} not found in table ${table.name}`);\n }\n }\n\n // Resolve FragnoId/FragnoReference to primitive values (serialization happens later)\n const resolvedValue = resolveFragnoIdValue(value, col);\n result[physicalColumnName] = resolvedValue;\n }\n }\n\n return result;\n}\n\n/**\n * Encode values and apply database defaults in-process.\n *\n * This is intended for adapters that cannot rely on database DEFAULT constraints,\n * such as the in-memory adapter.\n *\n * @internal\n */\nexport function encodeValuesWithDbDefaults(\n values: Record<string, unknown>,\n table: AnyTable,\n runtimeDefaults: RuntimeDefaultContext = {},\n resolver?: NamingResolver,\n): Record<string, unknown> {\n const resolved = encodeValues(values, table, true, runtimeDefaults, resolver);\n\n for (const columnKey of Object.keys(table.columns)) {\n const column = table.columns[columnKey];\n if (column.role === \"internal-id\") {\n continue;\n }\n\n const physicalColumnName = resolver\n ? resolver.getColumnName(table.name, column.name)\n : column.name;\n if (Object.prototype.hasOwnProperty.call(resolved, physicalColumnName)) {\n continue;\n }\n\n const fallback = generateDatabaseDefault(column, runtimeDefaults);\n if (fallback !== undefined) {\n resolved[physicalColumnName] = fallback;\n }\n }\n\n return resolved;\n}\n"],"mappings":";;;;;;;;;;AAeA,IAAa,oBAAb,MAA+B;CAC7B;CACA;CAEA,YAAY,iBAA2B,iBAAyB;AAC9D,QAAKA,kBAAmB;AACxB,QAAKC,kBAAmB;;CAG1B,IAAI,kBAAkB;AACpB,SAAO,MAAKD;;CAGd,IAAI,kBAAkB;AACpB,SAAO,MAAKC;;;;;;;;;;;;;;;;;;;;AAqBhB,SAAgB,qBAAqB,OAAgB,KAAyB;AAE5E,KAAI,iBAAiB,gBACnB,QAAO,MAAM;AAIf,KAAI,iBAAiB,UAAU;AAE7B,MAAI,IAAI,SAAS,cACf,QAAO,MAAM;AAGf,MAAI,IAAI,SAAS,eAAe;AAC9B,OAAI,MAAM,eAAe,OACvB,OAAM,IAAI,MAAM,wDAAwD,IAAI,OAAO;AAErF,UAAO,MAAM;;AAGf,MAAI,IAAI,SAAS,YACf,QAAO,MAAM;AAGf,SAAO,MAAM;;AAGf,QAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BT,SAAgB,aACd,QACA,OACA,iBACA,kBAAyC,EAAE,EAC3C,UACyB;CACzB,MAAMC,SAAkC,EAAE;AAE1C,MAAK,MAAM,KAAK,MAAM,SAAS;EAC7B,MAAM,MAAM,MAAM,QAAQ;AAG1B,MAAI,IAAI,SAAS,cACf;EAEF,IAAI,QAAQ,OAAO;AAEnB,MAAI,mBAAmB,UAAU,OAG/B,SAAQ,uBAAuB,KAAK,gBAAgB;AAGtD,MAAI,UAAU,QAAW;GACvB,MAAM,qBAAqB,WAAW,SAAS,cAAc,MAAM,MAAM,IAAI,KAAK,GAAG,IAAI;AAGzF,OAAI,IAAI,SAAS,aAAa;IAC5B,IAAI,gBAAgB;IACpB,IAAIC;AAEJ,QAAI,OAAO,UAAU,UAAU;AAE7B,qBAAgB;AAChB,6BAAwB;eACf,iBAAiB,YAAY,MAAM,eAAe,QAAW;AAEtE,qBAAgB;AAChB,6BAAwB,MAAM;eACrB,iBAAiB,YAAY,MAAM,eAAe,QAAW;AAEtE,YAAO,sBAAsB,MAAM;AACnC;eACS,iBAAiB,iBAAiB;AAE3C,YAAO,sBAAsB,MAAM;AACnC;;AAGF,QAAI,eAAe;KACjB,MAAM,WAAW,OAAO,OAAO,MAAM,UAAU,CAAC,MAAM,QACpD,IAAI,GAAG,MAAM,CAAC,cAAc,aAAa,EAAE,CAC5C;AACD,SAAI,UAAU;AACZ,aAAO,sBAAsB,IAAI,kBAC/B,SAAS,OACT,sBACD;AACD;;AAEF,WAAM,IAAI,MAAM,oBAAoB,EAAE,sBAAsB,MAAM,OAAO;;;AAM7E,UAAO,sBADe,qBAAqB,OAAO,IAAI;;;AAK1D,QAAO;;;;;;;;;;AAWT,SAAgB,2BACd,QACA,OACA,kBAAyC,EAAE,EAC3C,UACyB;CACzB,MAAM,WAAW,aAAa,QAAQ,OAAO,MAAM,iBAAiB,SAAS;AAE7E,MAAK,MAAM,aAAa,OAAO,KAAK,MAAM,QAAQ,EAAE;EAClD,MAAM,SAAS,MAAM,QAAQ;AAC7B,MAAI,OAAO,SAAS,cAClB;EAGF,MAAM,qBAAqB,WACvB,SAAS,cAAc,MAAM,MAAM,OAAO,KAAK,GAC/C,OAAO;AACX,MAAI,OAAO,UAAU,eAAe,KAAK,UAAU,mBAAmB,CACpE;EAGF,MAAM,WAAW,wBAAwB,QAAQ,gBAAgB;AACjE,MAAI,aAAa,OACf,UAAS,sBAAsB;;AAInC,QAAO"}
@@ -1,3 +1,9 @@
1
+ import { DbNow } from "../query/db-now.js";
2
+ import { Prettify } from "../util/types.js";
3
+ import { generateId } from "./generate-id.js";
4
+ import { FragnoDbValidationError } from "./validator.js";
5
+ import { StandardSchemaV1 } from "@standard-schema/spec";
6
+
1
7
  //#region src/schema/create.d.ts
2
8
  type AnySchema = Schema<Record<string, AnyTable>>;
3
9
  type AnyRelation = Relation;
@@ -72,7 +78,7 @@ interface Index<TColumns extends AnyColumn[] = AnyColumn[], TColumnNames extends
72
78
  unique: boolean;
73
79
  }
74
80
  declare class ExplicitRelationInit<TRelationType extends RelationType, TTables extends Record<string, AnyTable>, TTableName extends keyof TTables> extends RelationInit<TRelationType, TTables, TTableName> {
75
- init(ormName: string): Relation<TRelationType, TTables[TTableName]>;
81
+ init(name: string): Relation<TRelationType, TTables[TTableName]>;
76
82
  }
77
83
  interface Relation<TRelationType extends RelationType = RelationType, TTable extends AnyTable = AnyTable> {
78
84
  id: string;
@@ -82,12 +88,28 @@ interface Relation<TRelationType extends RelationType = RelationType, TTable ext
82
88
  referencer: AnyTable;
83
89
  on: [string, string][];
84
90
  }
91
+ type PickNullable<T> = { [P in keyof T as null extends T[P] ? P : never]: T[P] };
92
+ type PickNotNullable<T> = { [P in keyof T as null extends T[P] ? never : P]: T[P] };
93
+ type RawInsertValuesFromColumns<TColumns extends Record<string, AnyColumn>> = { [K in keyof TColumns as string extends K ? never : K]: TColumns[K]["$in"] };
94
+ type TableInsertValuesFromColumns<TColumns extends Record<string, AnyColumn>> = Prettify<Partial<PickNullable<RawInsertValuesFromColumns<TColumns>>> & PickNotNullable<RawInsertValuesFromColumns<TColumns>>>;
95
+ type TableInsertValues<T extends AnyTable> = TableInsertValuesFromColumns<T["columns"]>;
96
+ type TableUnknownKeysMode = "strip" | "strict";
97
+ type TableValidationOptions = {
98
+ unknownKeys?: TableUnknownKeysMode;
99
+ };
85
100
  interface Table<TColumns extends Record<string, AnyColumn> = Record<string, AnyColumn>, TRelations extends Record<string, AnyRelation> = Record<string, AnyRelation>, TIndexes extends Record<string, Index> = Record<string, Index>> {
101
+ /**
102
+ * Standard Schema-compatible validator for insert values.
103
+ */
104
+ "~standard": StandardSchemaV1.Props<TableInsertValuesFromColumns<TColumns>, TableInsertValuesFromColumns<TColumns>>;
86
105
  name: string;
87
- ormName: string;
88
106
  columns: TColumns;
89
107
  relations: TRelations;
90
108
  indexes: TIndexes;
109
+ /**
110
+ * Validate insert values at runtime.
111
+ */
112
+ validate: (value: unknown, options?: TableValidationOptions) => TableInsertValuesFromColumns<TColumns>;
91
113
  /**
92
114
  * Get column by name
93
115
  */
@@ -147,7 +169,6 @@ type TypeMap = {
147
169
  declare class Column<TType extends keyof TypeMap, TIn = unknown, TOut = unknown> {
148
170
  type: TType;
149
171
  name: string;
150
- ormName: string;
151
172
  isNullable: boolean;
152
173
  role: "external-id" | "internal-id" | "version" | "reference" | "regular";
153
174
  isHidden: boolean;
@@ -246,7 +267,8 @@ declare class VersionColumn<TIn = unknown, TOut = unknown> extends Column<"integ
246
267
  role: "version";
247
268
  constructor();
248
269
  }
249
- declare function column<TType extends keyof TypeMap>(type: TType): Column<TType, TypeMap[TType], TypeMap[TType]>;
270
+ type ColumnInput<TType extends keyof TypeMap> = TypeMap[TType] | (TType extends "timestamp" | "date" ? DbNow : never);
271
+ declare function column<TType extends keyof TypeMap>(type: TType): Column<TType, ColumnInput<TType>, TypeMap[TType]>;
250
272
  /**
251
273
  * Create a reference column that points to another table's internal ID.
252
274
  * This is used for foreign key relationships.
@@ -340,11 +362,11 @@ declare class TableBuilder<TColumns extends Record<string, AnyColumn> = Record<s
340
362
  /**
341
363
  * Add a column to the table.
342
364
  */
343
- addColumn<TColumnName extends string, TColumn extends AnyColumn>(ormName: TColumnName, col: TColumn): TableBuilder<TColumns & Record<TColumnName, TColumn>, TRelations, TIndexes>;
365
+ addColumn<TColumnName extends string, TColumn extends AnyColumn>(name: TColumnName, col: TColumn): TableBuilder<TColumns & Record<TColumnName, TColumn>, TRelations, TIndexes>;
344
366
  /**
345
367
  * Add a column to the table with simplified syntax.
346
368
  */
347
- addColumn<TColumnName extends string, TType extends keyof TypeMap>(ormName: TColumnName, type: TType): TableBuilder<TColumns & Record<TColumnName, Column<TType, TypeMap[TType], TypeMap[TType]>>, TRelations, TIndexes>;
369
+ addColumn<TColumnName extends string, TType extends keyof TypeMap>(name: TColumnName, type: TType): TableBuilder<TColumns & Record<TColumnName, Column<TType, ColumnInput<TType>, TypeMap[TType]>>, TRelations, TIndexes>;
348
370
  /**
349
371
  * Create an index on the specified columns.
350
372
  */
@@ -357,6 +379,10 @@ declare class TableBuilder<TColumns extends Record<string, AnyColumn> = Record<s
357
379
  build(): Table<TColumns, TRelations, TIndexes>;
358
380
  }
359
381
  interface Schema<TTables extends Record<string, AnyTable> = Record<string, AnyTable>> {
382
+ /**
383
+ * @description The name of the schema (required).
384
+ */
385
+ name: string;
360
386
  /**
361
387
  * @description The version of the schema, automatically incremented on each change.
362
388
  */
@@ -385,14 +411,14 @@ type UpdateTable<TTables extends Record<string, AnyTable>, TTableName extends ke
385
411
  type ColumnsToTuple<TColumns extends Record<string, AnyColumn>, TColumnNames extends readonly (keyof TColumns)[]> = { [K in keyof TColumnNames]: TColumnNames[K] extends keyof TColumns ? TColumns[TColumnNames[K]] : never } & AnyColumn[];
386
412
  declare class SchemaBuilder<TTables extends Record<string, AnyTable> = {}> {
387
413
  #private;
388
- constructor(existingSchema?: Schema<TTables>);
414
+ constructor(name: string, existingSchema?: Schema<TTables>);
389
415
  /**
390
416
  * Add an existing schema to this builder.
391
417
  * Merges tables and operations from the provided schema.
392
418
  *
393
419
  * @example
394
420
  * ```ts
395
- * const builder = new SchemaBuilder()
421
+ * const builder = new SchemaBuilder("combined")
396
422
  * .add(userSchema)
397
423
  * .add(postSchema)
398
424
  * .addTable("comments", ...);
@@ -402,7 +428,7 @@ declare class SchemaBuilder<TTables extends Record<string, AnyTable> = {}> {
402
428
  /**
403
429
  * Add a table to the schema. Increments the version counter.
404
430
  */
405
- addTable<TTableName extends string, TColumns extends Record<string, AnyColumn>, TRelations extends Record<string, AnyRelation>, TIndexes extends Record<string, Index> = Record<string, Index>>(ormName: TTableName, callback: (builder: TableBuilder<Record<string, AnyColumn>, Record<string, AnyRelation>, Record<string, Index>>) => TableBuilder<TColumns, TRelations, TIndexes>): SchemaBuilder<TTables & Record<TTableName, Table<TColumns, TRelations, TIndexes>>>;
431
+ addTable<TTableName extends string, TColumns extends Record<string, AnyColumn>, TRelations extends Record<string, AnyRelation>, TIndexes extends Record<string, Index> = Record<string, Index>>(name: TTableName, callback: (builder: TableBuilder<Record<string, AnyColumn>, Record<string, AnyRelation>, Record<string, Index>>) => TableBuilder<TColumns, TRelations, TIndexes>): SchemaBuilder<TTables & Record<TTableName, Table<TColumns, TRelations, TIndexes>>>;
406
432
  /**
407
433
  * Add a relation between two tables.
408
434
  *
@@ -412,7 +438,7 @@ declare class SchemaBuilder<TTables extends Record<string, AnyTable> = {}> {
412
438
  * @example
413
439
  * ```ts
414
440
  * // One-to-one or many-to-one: post -> user
415
- * schema(s => s
441
+ * schema("blog", s => s
416
442
  * .addTable("users", t => t.addColumn("id", idColumn()))
417
443
  * .addTable("posts", t => t
418
444
  * .addColumn("id", idColumn())
@@ -460,7 +486,7 @@ declare class SchemaBuilder<TTables extends Record<string, AnyTable> = {}> {
460
486
  * @example
461
487
  * ```ts
462
488
  * // Add a new column to an existing table
463
- * schema(s => s
489
+ * schema("blog", s => s
464
490
  * .addTable("users", t => t
465
491
  * .addColumn("id", idColumn())
466
492
  * .addColumn("name", column("string")))
@@ -484,8 +510,8 @@ declare class SchemaBuilder<TTables extends Record<string, AnyTable> = {}> {
484
510
  /**
485
511
  * Create a new schema with callback pattern.
486
512
  */
487
- declare function schema<const TTables extends Record<string, AnyTable> = {}>(callback: (builder: SchemaBuilder<{}>) => SchemaBuilder<TTables>): Schema<TTables>;
488
- declare function compileForeignKey(key: ForeignKey, nameType?: "sql" | "orm"): {
513
+ declare function schema<const TTables extends Record<string, AnyTable> = {}>(name: string, callback: (builder: SchemaBuilder<{}>) => SchemaBuilder<TTables>): Schema<TTables>;
514
+ declare function compileForeignKey(key: ForeignKey): {
489
515
  name: string;
490
516
  table: string;
491
517
  referencedTable: string;
@@ -493,5 +519,5 @@ declare function compileForeignKey(key: ForeignKey, nameType?: "sql" | "orm"): {
493
519
  columns: string[];
494
520
  };
495
521
  //#endregion
496
- export { AnyColumn, AnyRelation, AnySchema, AnyTable, Column, DefaultBuilder, ExplicitRelationInit, ForeignKey, FragnoId, FragnoReference, IdColumn, Index, InternalIdColumn, Relation, RuntimeDefaultBuilder, Schema, SchemaBuilder, SchemaOperation, Table, TableBuilder, TableSubOperation, TypeMap, VersionColumn, column, compileForeignKey, idColumn, internalIdColumn, referenceColumn, schema, versionColumn };
522
+ export { AnyColumn, AnyRelation, AnySchema, AnyTable, Column, DefaultBuilder, ExplicitRelationInit, ForeignKey, FragnoDbValidationError, FragnoId, FragnoReference, IdColumn, Index, InternalIdColumn, Relation, RuntimeDefaultBuilder, Schema, SchemaBuilder, SchemaOperation, Table, TableBuilder, TableInsertValues, TableSubOperation, TableUnknownKeysMode, TableValidationOptions, TypeMap, VersionColumn, column, compileForeignKey, generateId, idColumn, internalIdColumn, referenceColumn, schema, versionColumn };
497
523
  //# sourceMappingURL=create.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","names":[],"sources":["../../src/schema/create.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"create.d.ts","names":[],"sources":["../../src/schema/create.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import { createId } from "../id.js";
2
+ import { FragnoDbValidationError, createTableStandardSchemaProps, createTableValidator } from "./validator.js";
3
+ import { generateId } from "./generate-id.js";
2
4
 
3
5
  //#region src/schema/create.ts
4
6
  var RelationInit = class {
@@ -13,11 +15,11 @@ var RelationInit = class {
13
15
  }
14
16
  };
15
17
  var ExplicitRelationInit = class extends RelationInit {
16
- init(ormName) {
18
+ init(name) {
17
19
  return {
18
- id: `${this.referencer.ormName}_${this.referencedTable.ormName}`,
20
+ id: `${this.referencer.name}_${this.referencedTable.name}`,
19
21
  on: this.on,
20
- name: ormName,
22
+ name,
21
23
  referencer: this.referencer,
22
24
  table: this.referencedTable,
23
25
  type: this.type
@@ -41,7 +43,6 @@ const runtimeDefaultBuilder = {
41
43
  var Column = class {
42
44
  type;
43
45
  name = "";
44
- ormName = "";
45
46
  isNullable = false;
46
47
  role = "regular";
47
48
  isHidden = false;
@@ -303,12 +304,15 @@ var FragnoReference = class FragnoReference {
303
304
  return this.#internalId;
304
305
  }
305
306
  };
307
+ const validationClasses = {
308
+ FragnoId,
309
+ FragnoReference
310
+ };
306
311
  var TableBuilder = class {
307
312
  #name;
308
313
  #columns;
309
314
  #relations;
310
315
  #indexes;
311
- #ormName = "";
312
316
  #columnOrder = [];
313
317
  constructor(name) {
314
318
  this.#name = name;
@@ -331,12 +335,11 @@ var TableBuilder = class {
331
335
  getColumnOrder() {
332
336
  return this.#columnOrder;
333
337
  }
334
- addColumn(ormName, colOrType) {
338
+ addColumn(name, colOrType) {
335
339
  const col = typeof colOrType === "string" ? column(colOrType) : colOrType;
336
- col.ormName = ormName;
337
- col.name = ormName;
338
- this.#columns[ormName] = col;
339
- this.#columnOrder.push(ormName);
340
+ col.name = name;
341
+ this.#columns[name] = col;
342
+ this.#columnOrder.push(name);
340
343
  return this;
341
344
  }
342
345
  /**
@@ -366,20 +369,16 @@ var TableBuilder = class {
366
369
  let versionCol;
367
370
  if (!this.#columns["_internalId"]) {
368
371
  const col = internalIdColumn();
369
- col.ormName = "_internalId";
370
372
  col.name = "_internalId";
371
373
  this.#columns["_internalId"] = col;
372
374
  }
373
375
  if (!this.#columns["_version"]) {
374
376
  const col = versionColumn();
375
- col.ormName = "_version";
376
377
  col.name = "_version";
377
378
  this.#columns["_version"] = col;
378
379
  }
379
- const ormName = this.#ormName || this.#name;
380
380
  const table = {
381
381
  name: this.#name,
382
- ormName,
383
382
  columns: this.#columns,
384
383
  relations: this.#relations,
385
384
  indexes: this.#indexes,
@@ -396,6 +395,8 @@ var TableBuilder = class {
396
395
  return versionCol;
397
396
  }
398
397
  };
398
+ table["~standard"] = createTableStandardSchemaProps(table, validationClasses);
399
+ table.validate = createTableValidator(table, validationClasses);
399
400
  for (const k in this.#columns) {
400
401
  const column$1 = this.#columns[k];
401
402
  if (!column$1) continue;
@@ -411,15 +412,31 @@ var TableBuilder = class {
411
412
  }
412
413
  };
413
414
  var SchemaBuilder = class SchemaBuilder {
415
+ #name;
414
416
  #tables;
415
417
  #version = 0;
416
418
  #operations = [];
417
- constructor(existingSchema) {
419
+ #tableNames = /* @__PURE__ */ new Set();
420
+ #indexNames = /* @__PURE__ */ new Set();
421
+ constructor(name, existingSchema) {
422
+ this.#name = name;
418
423
  if (existingSchema) {
419
424
  this.#tables = existingSchema.tables;
420
425
  this.#version = existingSchema.version;
421
426
  this.#operations = [...existingSchema.operations];
422
427
  } else this.#tables = {};
428
+ for (const table of Object.values(this.#tables)) {
429
+ this.#registerTableName(table.name);
430
+ for (const index of Object.values(table.indexes)) this.#registerIndexName(index.name, table.name);
431
+ }
432
+ }
433
+ #registerTableName(name) {
434
+ if (this.#tableNames.has(name)) throw new Error(`Duplicate table name "${name}" in schema "${this.#name}".`);
435
+ this.#tableNames.add(name);
436
+ }
437
+ #registerIndexName(name, tableName) {
438
+ if (this.#indexNames.has(name)) throw new Error(`Duplicate index name "${name}" in schema "${this.#name}". Index names must be unique across tables (conflict on "${tableName}").`);
439
+ this.#indexNames.add(name);
423
440
  }
424
441
  /**
425
442
  * Add an existing schema to this builder.
@@ -427,29 +444,39 @@ var SchemaBuilder = class SchemaBuilder {
427
444
  *
428
445
  * @example
429
446
  * ```ts
430
- * const builder = new SchemaBuilder()
447
+ * const builder = new SchemaBuilder("combined")
431
448
  * .add(userSchema)
432
449
  * .add(postSchema)
433
450
  * .addTable("comments", ...);
434
451
  * ```
435
452
  */
436
453
  mergeWithExistingSchema(schema$1) {
454
+ for (const table of Object.values(schema$1.tables)) {
455
+ if (this.#tableNames.has(table.name)) throw new Error(`Duplicate table name "${table.name}" in schema "${this.#name}" when merging.`);
456
+ for (const index of Object.values(table.indexes)) if (this.#indexNames.has(index.name)) throw new Error(`Duplicate index name "${index.name}" in schema "${this.#name}" when merging (conflict on "${table.name}").`);
457
+ }
437
458
  this.#tables = {
438
459
  ...this.#tables,
439
460
  ...schema$1.tables
440
461
  };
441
462
  this.#operations = [...this.#operations, ...schema$1.operations];
442
463
  this.#version += schema$1.version;
464
+ for (const table of Object.values(schema$1.tables)) {
465
+ this.#tableNames.add(table.name);
466
+ for (const index of Object.values(table.indexes)) this.#indexNames.add(index.name);
467
+ }
443
468
  return this;
444
469
  }
445
470
  /**
446
471
  * Add a table to the schema. Increments the version counter.
447
472
  */
448
- addTable(ormName, callback) {
473
+ addTable(name, callback) {
449
474
  this.#version++;
450
- const result = callback(new TableBuilder(ormName));
475
+ if (this.#tableNames.has(name)) throw new Error(`Duplicate table name "${name}" in schema "${this.#name}".`);
476
+ const result = callback(new TableBuilder(name));
451
477
  const builtTable = result.build();
452
- builtTable.ormName = ormName;
478
+ const indexNames = result.getIndexes().map((idx) => idx.name);
479
+ for (const indexName of indexNames) if (this.#indexNames.has(indexName)) throw new Error(`Duplicate index name "${indexName}" in schema "${this.#name}". Index names must be unique across tables (conflict on "${name}").`);
453
480
  const subOperations = [];
454
481
  const columnOrder = result.getColumnOrder();
455
482
  for (const colName of columnOrder) {
@@ -473,18 +500,20 @@ var SchemaBuilder = class SchemaBuilder {
473
500
  for (const idx of result.getIndexes()) subOperations.push({
474
501
  type: "add-index",
475
502
  name: idx.name,
476
- columns: idx.columns.map((c) => c.ormName),
503
+ columns: idx.columns.map((c) => c.name),
477
504
  unique: idx.unique
478
505
  });
479
506
  this.#operations.push({
480
507
  type: "add-table",
481
- tableName: ormName,
508
+ tableName: name,
482
509
  operations: subOperations
483
510
  });
484
511
  this.#tables = {
485
512
  ...this.#tables,
486
- [ormName]: builtTable
513
+ [name]: builtTable
487
514
  };
515
+ this.#tableNames.add(name);
516
+ for (const indexName of indexNames) this.#indexNames.add(indexName);
488
517
  return this;
489
518
  }
490
519
  /**
@@ -496,7 +525,7 @@ var SchemaBuilder = class SchemaBuilder {
496
525
  * @example
497
526
  * ```ts
498
527
  * // One-to-one or many-to-one: post -> user
499
- * schema(s => s
528
+ * schema("blog", s => s
500
529
  * .addTable("users", t => t.addColumn("id", idColumn()))
501
530
  * .addTable("posts", t => t
502
531
  * .addColumn("id", idColumn())
@@ -527,6 +556,7 @@ var SchemaBuilder = class SchemaBuilder {
527
556
  this.#version++;
528
557
  const table = this.#tables[config.from.table];
529
558
  const referencedTable = this.#tables[config.to.table];
559
+ if (!referenceName || referenceName.trim().length === 0) throw new Error(`referenceName is required for addReference on ${config.from.table}`);
530
560
  if (!table) throw new Error(`Table ${config.from.table} not found in schema`);
531
561
  if (!referencedTable) throw new Error(`Referenced table ${config.to.table} not found in schema`);
532
562
  const columnName = config.from.column;
@@ -536,6 +566,7 @@ var SchemaBuilder = class SchemaBuilder {
536
566
  const referencedColumn = referencedTable.columns[actualTargetColumnName];
537
567
  if (!column$1) throw new Error(`Column ${columnName} not found in table ${config.from.table}`);
538
568
  if (!referencedColumn) throw new Error(`Column ${actualTargetColumnName} not found in table ${config.to.table}`);
569
+ if (table.relations[referenceName]) throw new Error(`Reference ${referenceName} already exists on table ${config.from.table}`);
539
570
  if (column$1.role === "reference" && column$1.type !== "bigint") throw new Error(`Reference column ${columnName} must be of type bigint to match internal ID type`);
540
571
  const init = new ExplicitRelationInit(config.type, referencedTable, table);
541
572
  init.on.push([columnName, targetColumnName]);
@@ -569,7 +600,7 @@ var SchemaBuilder = class SchemaBuilder {
569
600
  * @example
570
601
  * ```ts
571
602
  * // Add a new column to an existing table
572
- * schema(s => s
603
+ * schema("blog", s => s
573
604
  * .addTable("users", t => t
574
605
  * .addColumn("id", idColumn())
575
606
  * .addColumn("name", column("string")))
@@ -598,12 +629,15 @@ var SchemaBuilder = class SchemaBuilder {
598
629
  columnName: colName,
599
630
  column: newTable.columns[colName]
600
631
  });
601
- for (const idx of resultBuilder.getIndexes()) if (!existingIndexes.has(idx.name)) subOperations.push({
602
- type: "add-index",
603
- name: idx.name,
604
- columns: idx.columns.map((c) => c.ormName),
605
- unique: idx.unique
606
- });
632
+ for (const idx of resultBuilder.getIndexes()) if (!existingIndexes.has(idx.name)) {
633
+ if (this.#indexNames.has(idx.name)) throw new Error(`Duplicate index name "${idx.name}" in schema "${this.#name}". Index names must be unique across tables (conflict on "${tableName}").`);
634
+ subOperations.push({
635
+ type: "add-index",
636
+ name: idx.name,
637
+ columns: idx.columns.map((c) => c.name),
638
+ unique: idx.unique
639
+ });
640
+ }
607
641
  if (subOperations.length > 0) {
608
642
  this.#version++;
609
643
  this.#operations.push({
@@ -613,6 +647,7 @@ var SchemaBuilder = class SchemaBuilder {
613
647
  });
614
648
  }
615
649
  this.#tables[tableName] = newTable;
650
+ for (const idx of resultBuilder.getIndexes()) if (!existingIndexes.has(idx.name)) this.#indexNames.add(idx.name);
616
651
  for (const col of Object.values(newTable.columns)) col.tableName = newTable.name;
617
652
  return this;
618
653
  }
@@ -624,6 +659,7 @@ var SchemaBuilder = class SchemaBuilder {
624
659
  const version = this.#version;
625
660
  const tables = this.#tables;
626
661
  return {
662
+ name: this.#name,
627
663
  version,
628
664
  tables,
629
665
  operations,
@@ -638,7 +674,6 @@ var SchemaBuilder = class SchemaBuilder {
638
674
  else if (col instanceof IdColumn) clonedCol = new IdColumn(col.type);
639
675
  else clonedCol = new Column(col.type);
640
676
  clonedCol.name = col.name;
641
- clonedCol.ormName = col.ormName;
642
677
  clonedCol.isNullable = col.isNullable;
643
678
  clonedCol.role = col.role;
644
679
  clonedCol.isHidden = col.isHidden;
@@ -646,19 +681,24 @@ var SchemaBuilder = class SchemaBuilder {
646
681
  clonedCol.tableName = col.tableName;
647
682
  clonedColumns[colName] = clonedCol;
648
683
  }
649
- cloneTables[k] = {
684
+ const clonedTable = {
650
685
  ...v,
651
686
  columns: clonedColumns
652
687
  };
688
+ clonedTable["~standard"] = createTableStandardSchemaProps(clonedTable, validationClasses);
689
+ clonedTable.validate = createTableValidator(clonedTable, validationClasses);
690
+ cloneTables[k] = clonedTable;
653
691
  }
654
- return new SchemaBuilder({
692
+ const clonedSchema = {
693
+ name: this.#name,
655
694
  version,
656
695
  tables: cloneTables,
657
696
  operations: [...operations],
658
697
  clone: () => {
659
698
  throw new Error("Cannot clone during clone");
660
699
  }
661
- }).build();
700
+ };
701
+ return new SchemaBuilder(this.#name, clonedSchema).build();
662
702
  }
663
703
  };
664
704
  }
@@ -672,19 +712,19 @@ var SchemaBuilder = class SchemaBuilder {
672
712
  /**
673
713
  * Create a new schema with callback pattern.
674
714
  */
675
- function schema(callback) {
676
- return callback(new SchemaBuilder()).build();
715
+ function schema(name, callback) {
716
+ return callback(new SchemaBuilder(name)).build();
677
717
  }
678
- function compileForeignKey(key, nameType = "orm") {
718
+ function compileForeignKey(key) {
679
719
  return {
680
720
  name: key.name,
681
- table: nameType === "sql" ? key.table.name : key.table.ormName,
682
- referencedTable: nameType === "sql" ? key.referencedTable.name : key.referencedTable.ormName,
683
- referencedColumns: key.referencedColumns.map((col) => nameType === "sql" ? col.name : col.ormName),
684
- columns: key.columns.map((col) => nameType === "sql" ? col.name : col.ormName)
721
+ table: key.table.name,
722
+ referencedTable: key.referencedTable.name,
723
+ referencedColumns: key.referencedColumns.map((col) => col.name),
724
+ columns: key.columns.map((col) => col.name)
685
725
  };
686
726
  }
687
727
 
688
728
  //#endregion
689
- export { Column, ExplicitRelationInit, FragnoId, FragnoReference, IdColumn, InternalIdColumn, SchemaBuilder, TableBuilder, VersionColumn, column, compileForeignKey, idColumn, internalIdColumn, referenceColumn, schema, versionColumn };
729
+ export { Column, ExplicitRelationInit, FragnoDbValidationError, FragnoId, FragnoReference, IdColumn, InternalIdColumn, SchemaBuilder, TableBuilder, VersionColumn, column, compileForeignKey, generateId, idColumn, internalIdColumn, referenceColumn, schema, versionColumn };
690
730
  //# sourceMappingURL=create.js.map