@fragno-dev/db 0.2.2 → 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 (355) hide show
  1. package/.turbo/turbo-build.log +202 -140
  2. package/CHANGELOG.md +35 -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 +39 -29
  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 +18 -7
  80. package/dist/db-fragment-definition-builder.d.ts.map +1 -1
  81. package/dist/db-fragment-definition-builder.js +116 -54
  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 +79 -2
  92. package/dist/fragments/internal-fragment.d.ts.map +1 -1
  93. package/dist/fragments/internal-fragment.js +150 -32
  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 +42 -1
  106. package/dist/hooks/hooks.d.ts.map +1 -1
  107. package/dist/hooks/hooks.js +72 -6
  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 +15 -8
  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.map +1 -1
  165. package/dist/query/unit-of-work/execute-unit-of-work.js +11 -6
  166. package/dist/query/unit-of-work/execute-unit-of-work.js.map +1 -1
  167. package/dist/query/unit-of-work/unit-of-work.d.ts +50 -14
  168. package/dist/query/unit-of-work/unit-of-work.d.ts.map +1 -1
  169. package/dist/query/unit-of-work/unit-of-work.js +86 -5
  170. package/dist/query/unit-of-work/unit-of-work.js.map +1 -1
  171. package/dist/query/value-decoding.js +9 -6
  172. package/dist/query/value-decoding.js.map +1 -1
  173. package/dist/query/value-encoding.js +29 -9
  174. package/dist/query/value-encoding.js.map +1 -1
  175. package/dist/schema/create.d.ts +38 -14
  176. package/dist/schema/create.d.ts.map +1 -1
  177. package/dist/schema/create.js +81 -42
  178. package/dist/schema/create.js.map +1 -1
  179. package/dist/schema/generate-id.js +2 -2
  180. package/dist/schema/generate-id.js.map +1 -1
  181. package/dist/schema/type-conversion/create-sql-type-mapper.js +3 -2
  182. package/dist/schema/type-conversion/create-sql-type-mapper.js.map +1 -1
  183. package/dist/schema/type-conversion/dialect/sqlite.js +9 -0
  184. package/dist/schema/type-conversion/dialect/sqlite.js.map +1 -1
  185. package/dist/schema/validator.d.ts +10 -0
  186. package/dist/schema/validator.d.ts.map +1 -0
  187. package/dist/schema/validator.js +123 -0
  188. package/dist/schema/validator.js.map +1 -0
  189. package/dist/schema-output/drizzle.d.ts +30 -0
  190. package/dist/schema-output/drizzle.d.ts.map +1 -0
  191. package/dist/{adapters/drizzle/generate.js → schema-output/drizzle.js} +82 -56
  192. package/dist/schema-output/drizzle.js.map +1 -0
  193. package/dist/schema-output/prisma.d.ts +17 -0
  194. package/dist/schema-output/prisma.d.ts.map +1 -0
  195. package/dist/schema-output/prisma.js +296 -0
  196. package/dist/schema-output/prisma.js.map +1 -0
  197. package/dist/util/default-database-adapter.js +61 -0
  198. package/dist/util/default-database-adapter.js.map +1 -0
  199. package/dist/with-database.d.ts +1 -1
  200. package/dist/with-database.d.ts.map +1 -1
  201. package/dist/with-database.js +12 -3
  202. package/dist/with-database.js.map +1 -1
  203. package/package.json +43 -28
  204. package/src/adapters/adapters.ts +30 -24
  205. package/src/adapters/drizzle/migrate-drizzle.test.ts +54 -33
  206. package/src/adapters/drizzle/migration-parity-drizzle-kit.test.ts +599 -0
  207. package/src/adapters/drizzle/test-utils.ts +12 -8
  208. package/src/adapters/generic-sql/driver-config.ts +38 -0
  209. package/src/adapters/generic-sql/generic-sql-adapter.test.ts +5 -5
  210. package/src/adapters/generic-sql/generic-sql-adapter.ts +110 -24
  211. package/src/adapters/generic-sql/generic-sql-uow-executor.test.ts +54 -0
  212. package/src/adapters/generic-sql/generic-sql-uow-executor.ts +231 -3
  213. package/src/adapters/generic-sql/migration/adapter-migration-parity.test.ts +118 -0
  214. package/src/adapters/generic-sql/migration/dialect/mysql.test.ts +26 -8
  215. package/src/adapters/generic-sql/migration/dialect/mysql.ts +46 -8
  216. package/src/adapters/generic-sql/migration/dialect/postgres.test.ts +25 -7
  217. package/src/adapters/generic-sql/migration/dialect/postgres.ts +8 -4
  218. package/src/adapters/generic-sql/migration/dialect/sqlite.test.ts +47 -8
  219. package/src/adapters/generic-sql/migration/dialect/sqlite.ts +27 -12
  220. package/src/adapters/generic-sql/migration/prepared-migrations.test.ts +128 -39
  221. package/src/adapters/generic-sql/migration/prepared-migrations.ts +15 -8
  222. package/src/adapters/generic-sql/migration/sql-generator.ts +142 -65
  223. package/src/adapters/generic-sql/query/create-sql-query-compiler.ts +9 -6
  224. package/src/adapters/generic-sql/query/cursor-utils.test.ts +271 -0
  225. package/src/adapters/generic-sql/query/cursor-utils.ts +41 -6
  226. package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.test.ts +27 -27
  227. package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.ts +38 -24
  228. package/src/adapters/generic-sql/query/select-builder.test.ts +15 -11
  229. package/src/adapters/generic-sql/query/select-builder.ts +6 -2
  230. package/src/adapters/generic-sql/query/sql-query-compiler.test.ts +52 -2
  231. package/src/adapters/generic-sql/query/sql-query-compiler.ts +50 -15
  232. package/src/adapters/generic-sql/query/where-builder.test.ts +91 -17
  233. package/src/adapters/generic-sql/query/where-builder.ts +90 -38
  234. package/src/adapters/{kysely/kysely-adapter-pglite.test.ts → generic-sql/sql-adapter-pglite-migrations.test.ts} +6 -6
  235. package/src/adapters/generic-sql/sql-adapter-pglite-pagination.test.ts +806 -0
  236. package/src/adapters/{drizzle/drizzle-adapter-pglite.test.ts → generic-sql/sql-adapter-pglite-queries.test.ts} +11 -11
  237. package/src/adapters/generic-sql/{test/generic-drizzle-adapter-sqlite3.test.ts → sql-adapter-sqlite3-driver.test.ts} +10 -10
  238. package/src/adapters/{drizzle/drizzle-adapter-sqlite3.test.ts → generic-sql/sql-adapter-sqlite3-uow.test.ts} +7 -7
  239. package/src/adapters/{kysely/kysely-adapter-sqlocal.test.ts → generic-sql/sql-adapter-sqlocal.test.ts} +6 -6
  240. package/src/adapters/generic-sql/sqlite-storage.ts +20 -0
  241. package/src/adapters/generic-sql/uow-decoder.test.ts +1 -1
  242. package/src/adapters/generic-sql/uow-decoder.ts +21 -3
  243. package/src/adapters/generic-sql/uow-encoder.test.ts +33 -2
  244. package/src/adapters/generic-sql/uow-encoder.ts +50 -11
  245. package/src/adapters/in-memory/condition-evaluator.test.ts +193 -0
  246. package/src/adapters/in-memory/condition-evaluator.ts +275 -0
  247. package/src/adapters/in-memory/errors.ts +20 -0
  248. package/src/adapters/in-memory/in-memory-adapter.ts +277 -0
  249. package/src/adapters/in-memory/in-memory-uow.mutations.test.ts +296 -0
  250. package/src/adapters/in-memory/in-memory-uow.retrieval.test.ts +100 -0
  251. package/src/adapters/in-memory/in-memory-uow.ts +1348 -0
  252. package/src/adapters/in-memory/index.ts +3 -0
  253. package/src/adapters/in-memory/options.test.ts +41 -0
  254. package/src/adapters/in-memory/options.ts +87 -0
  255. package/src/adapters/in-memory/reference-resolution.test.ts +50 -0
  256. package/src/adapters/in-memory/reference-resolution.ts +67 -0
  257. package/src/adapters/in-memory/sorted-array-index.test.ts +123 -0
  258. package/src/adapters/in-memory/sorted-array-index.ts +228 -0
  259. package/src/adapters/in-memory/store.test.ts +68 -0
  260. package/src/adapters/in-memory/store.ts +145 -0
  261. package/src/adapters/in-memory/value-comparison.ts +53 -0
  262. package/src/adapters/in-memory/value-normalization.test.ts +57 -0
  263. package/src/adapters/prisma/prisma-adapter-sqlite3.test.ts +1163 -0
  264. package/src/adapters/shared/from-unit-of-work-compiler.ts +3 -1
  265. package/src/adapters/shared/uow-operation-compiler.ts +26 -16
  266. package/src/adapters/sql/index.ts +12 -0
  267. package/src/db-fragment-definition-builder.test.ts +30 -12
  268. package/src/db-fragment-definition-builder.ts +142 -73
  269. package/src/db-fragment-instantiator.test.ts +105 -13
  270. package/src/db-fragment-integration.test.ts +9 -7
  271. package/src/dispatchers/cloudflare-do/index.test.ts +73 -0
  272. package/src/dispatchers/cloudflare-do/index.ts +104 -0
  273. package/src/dispatchers/node/index.test.ts +91 -0
  274. package/src/dispatchers/node/index.ts +87 -0
  275. package/src/fragments/internal-fragment.routes.ts +42 -0
  276. package/src/fragments/internal-fragment.schema.ts +51 -0
  277. package/src/fragments/internal-fragment.test.ts +458 -8
  278. package/src/fragments/internal-fragment.ts +322 -63
  279. package/src/hooks/durable-hooks-processor.test.ts +117 -0
  280. package/src/hooks/durable-hooks-processor.ts +67 -0
  281. package/src/hooks/hooks.test.ts +165 -5
  282. package/src/hooks/hooks.ts +197 -9
  283. package/src/migration-engine/auto-from-schema.test.ts +14 -14
  284. package/src/migration-engine/auto-from-schema.ts +5 -2
  285. package/src/migration-engine/create.test.ts +2 -2
  286. package/src/migration-engine/generation-engine.test.ts +229 -104
  287. package/src/migration-engine/generation-engine.ts +94 -64
  288. package/src/migration-engine/shared.ts +1 -0
  289. package/src/mod.ts +64 -26
  290. package/src/naming/sql-naming.ts +180 -0
  291. package/src/outbox/outbox-builder.ts +241 -0
  292. package/src/outbox/outbox.test.ts +253 -0
  293. package/src/outbox/outbox.ts +137 -0
  294. package/src/query/column-defaults.ts +41 -3
  295. package/src/query/condition-builder.test.ts +3 -3
  296. package/src/query/cursor.test.ts +116 -18
  297. package/src/query/cursor.ts +75 -26
  298. package/src/query/db-now.ts +6 -0
  299. package/src/query/query-type.test.ts +2 -2
  300. package/src/query/serialize/create-sql-serializer.ts +7 -2
  301. package/src/query/serialize/dialect/mysql-serializer.ts +12 -4
  302. package/src/query/serialize/dialect/postgres-serializer.ts +34 -4
  303. package/src/query/serialize/dialect/sqlite-serializer.test.ts +51 -1
  304. package/src/query/serialize/dialect/sqlite-serializer.ts +92 -9
  305. package/src/query/serialize/sql-serializer.ts +4 -4
  306. package/src/query/simple-query-interface.ts +5 -0
  307. package/src/query/unit-of-work/execute-unit-of-work.test.ts +25 -1
  308. package/src/query/unit-of-work/execute-unit-of-work.ts +25 -8
  309. package/src/query/unit-of-work/unit-of-work-coordinator.test.ts +12 -12
  310. package/src/query/unit-of-work/unit-of-work-types.test.ts +1 -1
  311. package/src/query/unit-of-work/unit-of-work.test.ts +168 -37
  312. package/src/query/unit-of-work/unit-of-work.ts +203 -18
  313. package/src/query/value-decoding.test.ts +13 -2
  314. package/src/query/value-decoding.ts +17 -4
  315. package/src/query/value-encoding.test.ts +85 -2
  316. package/src/query/value-encoding.ts +56 -6
  317. package/src/schema/create.test.ts +129 -42
  318. package/src/schema/create.ts +185 -47
  319. package/src/schema/generate-id.test.ts +2 -2
  320. package/src/schema/generate-id.ts +2 -2
  321. package/src/schema/serialize.test.ts +14 -2
  322. package/src/schema/type-conversion/create-sql-type-mapper.ts +7 -2
  323. package/src/schema/type-conversion/dialect/sqlite.ts +18 -0
  324. package/src/schema/type-conversion/type-mapping.test.ts +25 -1
  325. package/src/schema/validator.test.ts +197 -0
  326. package/src/schema/validator.ts +231 -0
  327. package/src/{adapters/drizzle/generate.test.ts → schema-output/drizzle.test.ts} +179 -129
  328. package/src/{adapters/drizzle/generate.ts → schema-output/drizzle.ts} +143 -93
  329. package/src/schema-output/prisma.test.ts +536 -0
  330. package/src/schema-output/prisma.ts +573 -0
  331. package/src/util/default-database-adapter.ts +106 -0
  332. package/src/with-database.ts +22 -3
  333. package/tsdown.config.ts +6 -4
  334. package/dist/adapters/drizzle/drizzle-adapter.d.ts +0 -20
  335. package/dist/adapters/drizzle/drizzle-adapter.d.ts.map +0 -1
  336. package/dist/adapters/drizzle/drizzle-adapter.js +0 -27
  337. package/dist/adapters/drizzle/drizzle-adapter.js.map +0 -1
  338. package/dist/adapters/drizzle/generate.d.ts +0 -30
  339. package/dist/adapters/drizzle/generate.d.ts.map +0 -1
  340. package/dist/adapters/drizzle/generate.js.map +0 -1
  341. package/dist/adapters/kysely/kysely-adapter.d.ts +0 -19
  342. package/dist/adapters/kysely/kysely-adapter.d.ts.map +0 -1
  343. package/dist/adapters/kysely/kysely-adapter.js +0 -17
  344. package/dist/adapters/kysely/kysely-adapter.js.map +0 -1
  345. package/dist/adapters/shared/table-name-mapper.d.ts +0 -12
  346. package/dist/adapters/shared/table-name-mapper.d.ts.map +0 -1
  347. package/dist/adapters/shared/table-name-mapper.js +0 -43
  348. package/dist/adapters/shared/table-name-mapper.js.map +0 -1
  349. package/dist/node_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js.map +0 -1
  350. package/dist/schema-generator/schema-generator.d.ts +0 -15
  351. package/dist/schema-generator/schema-generator.d.ts.map +0 -1
  352. package/src/adapters/drizzle/drizzle-adapter.ts +0 -39
  353. package/src/adapters/kysely/kysely-adapter.ts +0 -27
  354. package/src/adapters/shared/table-name-mapper.ts +0 -50
  355. package/src/schema-generator/schema-generator.ts +0 -12
@@ -1,6 +1,11 @@
1
1
  import type { AnyTable, AnyColumn } from "../schema/create";
2
2
  import { FragnoId, FragnoReference } from "../schema/create";
3
- import { generateRuntimeDefault } from "./column-defaults";
3
+ import {
4
+ generateDatabaseDefault,
5
+ generateRuntimeDefault,
6
+ type RuntimeDefaultContext,
7
+ } from "./column-defaults";
8
+ import type { NamingResolver } from "../naming/sql-naming";
4
9
 
5
10
  /**
6
11
  * Marker class for reference column values that need subquery resolution.
@@ -104,6 +109,8 @@ export function encodeValues(
104
109
  values: Record<string, unknown>,
105
110
  table: AnyTable,
106
111
  generateDefault: boolean,
112
+ runtimeDefaults: RuntimeDefaultContext = {},
113
+ resolver?: NamingResolver,
107
114
  ): Record<string, unknown> {
108
115
  const result: Record<string, unknown> = {};
109
116
 
@@ -119,10 +126,12 @@ export function encodeValues(
119
126
  if (generateDefault && value === undefined) {
120
127
  // Only generate runtime defaults (defaultTo$), not static defaults (defaultTo).
121
128
  // Static defaults should be handled by the database via DEFAULT constraints.
122
- value = generateRuntimeDefault(col);
129
+ value = generateRuntimeDefault(col, runtimeDefaults);
123
130
  }
124
131
 
125
132
  if (value !== undefined) {
133
+ const physicalColumnName = resolver ? resolver.getColumnName(table.name, col.name) : col.name;
134
+
126
135
  // Handle reference columns: strings or FragnoIds without internal IDs need subqueries
127
136
  if (col.role === "reference") {
128
137
  let needsSubquery = false;
@@ -138,11 +147,11 @@ export function encodeValues(
138
147
  externalIdForSubquery = value.externalId;
139
148
  } else if (value instanceof FragnoId && value.internalId !== undefined) {
140
149
  // FragnoId with internal ID - use it directly (will be serialized later)
141
- result[col.name] = value.internalId;
150
+ result[physicalColumnName] = value.internalId;
142
151
  continue;
143
152
  } else if (value instanceof FragnoReference) {
144
153
  // FragnoReference - use internal ID directly (will be serialized later)
145
- result[col.name] = value.internalId;
154
+ result[physicalColumnName] = value.internalId;
146
155
  continue;
147
156
  }
148
157
 
@@ -151,7 +160,10 @@ export function encodeValues(
151
160
  rel.on.some(([localCol]) => localCol === k),
152
161
  );
153
162
  if (relation) {
154
- result[col.name] = new ReferenceSubquery(relation.table, externalIdForSubquery!);
163
+ result[physicalColumnName] = new ReferenceSubquery(
164
+ relation.table,
165
+ externalIdForSubquery!,
166
+ );
155
167
  continue;
156
168
  }
157
169
  throw new Error(`Reference column ${k} not found in table ${table.name}`);
@@ -160,9 +172,47 @@ export function encodeValues(
160
172
 
161
173
  // Resolve FragnoId/FragnoReference to primitive values (serialization happens later)
162
174
  const resolvedValue = resolveFragnoIdValue(value, col);
163
- result[col.name] = resolvedValue;
175
+ result[physicalColumnName] = resolvedValue;
164
176
  }
165
177
  }
166
178
 
167
179
  return result;
168
180
  }
181
+
182
+ /**
183
+ * Encode values and apply database defaults in-process.
184
+ *
185
+ * This is intended for adapters that cannot rely on database DEFAULT constraints,
186
+ * such as the in-memory adapter.
187
+ *
188
+ * @internal
189
+ */
190
+ export function encodeValuesWithDbDefaults(
191
+ values: Record<string, unknown>,
192
+ table: AnyTable,
193
+ runtimeDefaults: RuntimeDefaultContext = {},
194
+ resolver?: NamingResolver,
195
+ ): Record<string, unknown> {
196
+ const resolved = encodeValues(values, table, true, runtimeDefaults, resolver);
197
+
198
+ for (const columnKey of Object.keys(table.columns)) {
199
+ const column = table.columns[columnKey];
200
+ if (column.role === "internal-id") {
201
+ continue;
202
+ }
203
+
204
+ const physicalColumnName = resolver
205
+ ? resolver.getColumnName(table.name, column.name)
206
+ : column.name;
207
+ if (Object.prototype.hasOwnProperty.call(resolved, physicalColumnName)) {
208
+ continue;
209
+ }
210
+
211
+ const fallback = generateDatabaseDefault(column, runtimeDefaults);
212
+ if (fallback !== undefined) {
213
+ resolved[physicalColumnName] = fallback;
214
+ }
215
+ }
216
+
217
+ return resolved;
218
+ }
@@ -16,7 +16,7 @@ import type {
16
16
 
17
17
  describe("create", () => {
18
18
  it("should create a table with columns using callback pattern", () => {
19
- const userSchema = schema((s) => {
19
+ const userSchema = schema("user", (s) => {
20
20
  return s.addTable("users", (t) => {
21
21
  return t
22
22
  .addColumn("id", idColumn())
@@ -45,7 +45,7 @@ describe("create", () => {
45
45
  });
46
46
 
47
47
  it("should create a schema with multiple tables using callback pattern", () => {
48
- const userSchema = schema((s) => {
48
+ const userSchema = schema("user", (s) => {
49
49
  return s
50
50
  .addTable("users", (t) => {
51
51
  return t.addColumn("id", idColumn()).addColumn("name", column("string"));
@@ -61,12 +61,12 @@ describe("create", () => {
61
61
  expect(userSchema.version).toBe(2); // Two addTable calls
62
62
  expect(userSchema.tables.users).toBeDefined();
63
63
  expect(userSchema.tables.posts).toBeDefined();
64
- expect(userSchema.tables.users.ormName).toBe("users");
65
- expect(userSchema.tables.posts.ormName).toBe("posts");
64
+ expect(userSchema.tables.users.name).toBe("users");
65
+ expect(userSchema.tables.posts.name).toBe("posts");
66
66
  });
67
67
 
68
68
  it("should generate default values for columns", () => {
69
- const testSchema = schema((s) => {
69
+ const testSchema = schema("test", (s) => {
70
70
  return s.addTable("test", (t) => {
71
71
  return t
72
72
  .addColumn("id", idColumn())
@@ -91,7 +91,7 @@ describe("create", () => {
91
91
  });
92
92
 
93
93
  it("should increment schema version on each schema-level operation", () => {
94
- const userSchema = schema((s) => {
94
+ const userSchema = schema("user", (s) => {
95
95
  return s
96
96
  .addTable("users", (t) => {
97
97
  return t
@@ -108,7 +108,7 @@ describe("create", () => {
108
108
  });
109
109
 
110
110
  it("should support unique constraints on tables via unique method", () => {
111
- const userSchema = schema((s) => {
111
+ const userSchema = schema("user", (s) => {
112
112
  return s.addTable("users", (t) => {
113
113
  return t
114
114
  .addColumn("id", idColumn())
@@ -129,7 +129,7 @@ describe("create", () => {
129
129
  });
130
130
 
131
131
  it("should support creating indexes on tables", () => {
132
- const userSchema = schema((s) => {
132
+ const userSchema = schema("user", (s) => {
133
133
  return s.addTable("users", (t) => {
134
134
  return t
135
135
  .addColumn("id", idColumn())
@@ -157,9 +157,54 @@ describe("create", () => {
157
157
  expect(usernameIndex!.unique).toBe(true);
158
158
  });
159
159
 
160
+ it("should throw on duplicate table names", () => {
161
+ expect(() =>
162
+ schema("dup", (s) => {
163
+ return s
164
+ .addTable("users", (t) => {
165
+ return t.addColumn("id", idColumn());
166
+ })
167
+ .addTable("users", (t) => {
168
+ return t.addColumn("id", idColumn());
169
+ });
170
+ }),
171
+ ).toThrow(/Duplicate table name "users"/);
172
+ });
173
+
174
+ it("should throw on duplicate index names across tables", () => {
175
+ expect(() =>
176
+ schema("dup", (s) => {
177
+ return s
178
+ .addTable("users", (t) => {
179
+ return t.addColumn("id", idColumn()).createIndex("idx_shared", ["id"]);
180
+ })
181
+ .addTable("posts", (t) => {
182
+ return t.addColumn("id", idColumn()).createIndex("idx_shared", ["id"]);
183
+ });
184
+ }),
185
+ ).toThrow(/Duplicate index name "idx_shared"/);
186
+ });
187
+
188
+ it("should throw on duplicate index names added via alterTable", () => {
189
+ expect(() =>
190
+ schema("dup", (s) => {
191
+ return s
192
+ .addTable("users", (t) => {
193
+ return t.addColumn("id", idColumn()).createIndex("idx_email", ["id"]);
194
+ })
195
+ .addTable("posts", (t) => {
196
+ return t.addColumn("id", idColumn());
197
+ })
198
+ .alterTable("posts", (t) => {
199
+ return t.createIndex("idx_email", ["id"]);
200
+ });
201
+ }),
202
+ ).toThrow(/Duplicate index name "idx_email"/);
203
+ });
204
+
160
205
  it("should demonstrate manual many-to-many relation setup", () => {
161
206
  // For many-to-many, create a junction table manually
162
- const userSchema = schema((s) => {
207
+ const userSchema = schema("user", (s) => {
163
208
  return s
164
209
  .addTable("users", (t) => {
165
210
  return t.addColumn("id", idColumn()).addColumn("name", column("string"));
@@ -211,7 +256,7 @@ describe("create", () => {
211
256
  });
212
257
 
213
258
  it("should create a foreign key reference using addReference", () => {
214
- const userSchema = schema((s) => {
259
+ const userSchema = schema("user", (s) => {
215
260
  return s
216
261
  .addTable("users", (t) => {
217
262
  return t.addColumn("id", idColumn()).addColumn("name", column("string"));
@@ -252,7 +297,7 @@ describe("create", () => {
252
297
  });
253
298
 
254
299
  it("should support multiple references by calling addReference multiple times", () => {
255
- const userSchema = schema((s) => {
300
+ const userSchema = schema("user", (s) => {
256
301
  return s
257
302
  .addTable("users", (t) => {
258
303
  return t.addColumn("id", idColumn()).addColumn("name", column("string"));
@@ -305,7 +350,7 @@ describe("create", () => {
305
350
  });
306
351
 
307
352
  it("should support self-referencing foreign keys", () => {
308
- const userSchema = schema((s) => {
353
+ const userSchema = schema("user", (s) => {
309
354
  return s
310
355
  .addTable("users", (t) => {
311
356
  return t
@@ -340,7 +385,7 @@ describe("create", () => {
340
385
  });
341
386
 
342
387
  it("should allow altering an existing table to add columns", () => {
343
- const userSchema = schema((s) => {
388
+ const userSchema = schema("user", (s) => {
344
389
  return s
345
390
  .addTable("users", (t) => {
346
391
  return t.addColumn("id", idColumn()).addColumn("name", column("string"));
@@ -381,7 +426,7 @@ describe("create", () => {
381
426
  });
382
427
 
383
428
  it("should allow altering an existing table to add indexes", () => {
384
- const userSchema = schema((s) => {
429
+ const userSchema = schema("user", (s) => {
385
430
  return s
386
431
  .addTable("users", (t) => {
387
432
  return t
@@ -406,7 +451,7 @@ describe("create", () => {
406
451
  });
407
452
 
408
453
  it("should allow multiple alterTable calls on the same table", () => {
409
- const userSchema = schema((s) => {
454
+ const userSchema = schema("user", (s) => {
410
455
  return s
411
456
  .addTable("users", (t) => {
412
457
  return t.addColumn("id", idColumn()).addColumn("name", column("string"));
@@ -445,7 +490,7 @@ describe("create", () => {
445
490
  });
446
491
 
447
492
  it("should preserve indexes when altering a table", () => {
448
- const userSchema = schema((s) => {
493
+ const userSchema = schema("user", (s) => {
449
494
  return s
450
495
  .addTable("users", (t) => {
451
496
  return t
@@ -476,7 +521,7 @@ describe("create", () => {
476
521
  });
477
522
 
478
523
  it("should not duplicate existing indexes when altering a table", () => {
479
- const userSchema = schema((s) => {
524
+ const userSchema = schema("user", (s) => {
480
525
  return s
481
526
  .addTable("users", (t) => {
482
527
  return t
@@ -514,7 +559,7 @@ describe("create", () => {
514
559
  });
515
560
 
516
561
  it("should only add new indexes when altering a table with additional indexes", () => {
517
- const userSchema = schema((s) => {
562
+ const userSchema = schema("user", (s) => {
518
563
  return s
519
564
  .addTable("users", (t) => {
520
565
  return t
@@ -558,7 +603,7 @@ describe("create", () => {
558
603
  });
559
604
 
560
605
  it("Simple user table types", () => {
561
- const _userSchema = schema((s) => {
606
+ const _userSchema = schema("_user", (s) => {
562
607
  return s.addTable("users", (t) => {
563
608
  return t.addColumn("id", idColumn()).addColumn("name", column("string"));
564
609
  });
@@ -585,7 +630,7 @@ describe("create", () => {
585
630
  });
586
631
 
587
632
  it("Simple user table types after alter table statements", () => {
588
- const _userSchema = schema((s) => {
633
+ const _userSchema = schema("_user", (s) => {
589
634
  return s
590
635
  .addTable("users", (t) => {
591
636
  return t.addColumn("id", idColumn()).addColumn("name", column("string"));
@@ -636,13 +681,13 @@ describe("referenceColumn", () => {
636
681
 
637
682
  describe("SchemaBuilder with existing schema", () => {
638
683
  it("should initialize with an existing schema", () => {
639
- const existingSchema = schema((s) => {
684
+ const existingSchema = schema("existing", (s) => {
640
685
  return s.addTable("users", (t) => {
641
686
  return t.addColumn("id", idColumn()).addColumn("name", column("string"));
642
687
  });
643
688
  });
644
689
 
645
- const extendedSchema = new SchemaBuilder(existingSchema)
690
+ const extendedSchema = new SchemaBuilder(existingSchema.name, existingSchema)
646
691
  .addTable("posts", (t) => {
647
692
  return t.addColumn("id", idColumn()).addColumn("title", column("string"));
648
693
  })
@@ -655,7 +700,7 @@ describe("SchemaBuilder with existing schema", () => {
655
700
  });
656
701
 
657
702
  it("should preserve operations from existing schema", () => {
658
- const existingSchema = schema((s) => {
703
+ const existingSchema = schema("existing", (s) => {
659
704
  return s
660
705
  .addTable("users", (t) => {
661
706
  return t.addColumn("id", idColumn()).addColumn("name", column("string"));
@@ -665,7 +710,7 @@ describe("SchemaBuilder with existing schema", () => {
665
710
  });
666
711
  });
667
712
 
668
- const extendedSchema = new SchemaBuilder(existingSchema)
713
+ const extendedSchema = new SchemaBuilder(existingSchema.name, existingSchema)
669
714
  .addTable("comments", (t) => {
670
715
  return t.addColumn("id", idColumn()).addColumn("text", column("string"));
671
716
  })
@@ -681,19 +726,19 @@ describe("SchemaBuilder with existing schema", () => {
681
726
  });
682
727
 
683
728
  it("should merge multiple schemas using mergeWithExistingSchema", () => {
684
- const schema1 = schema((s) => {
729
+ const schema1 = schema("schema1", (s) => {
685
730
  return s.addTable("users", (t) => {
686
731
  return t.addColumn("id", idColumn()).addColumn("name", column("string"));
687
732
  });
688
733
  });
689
734
 
690
- const schema2 = schema((s) => {
735
+ const schema2 = schema("schema2", (s) => {
691
736
  return s.addTable("posts", (t) => {
692
737
  return t.addColumn("id", idColumn()).addColumn("title", column("string"));
693
738
  });
694
739
  });
695
740
 
696
- const mergedSchema = new SchemaBuilder()
741
+ const mergedSchema = new SchemaBuilder("merged")
697
742
  .mergeWithExistingSchema(schema1)
698
743
  .mergeWithExistingSchema(schema2)
699
744
  .build();
@@ -704,20 +749,62 @@ describe("SchemaBuilder with existing schema", () => {
704
749
  expect(mergedSchema.operations).toHaveLength(2);
705
750
  });
706
751
 
752
+ it("should throw on duplicate table names when merging schemas", () => {
753
+ const schema1 = schema("schema1", (s) => {
754
+ return s.addTable("users", (t) => {
755
+ return t.addColumn("id", idColumn()).addColumn("name", column("string"));
756
+ });
757
+ });
758
+
759
+ const schema2 = schema("schema2", (s) => {
760
+ return s.addTable("users", (t) => {
761
+ return t.addColumn("id", idColumn()).addColumn("title", column("string"));
762
+ });
763
+ });
764
+
765
+ expect(() =>
766
+ new SchemaBuilder("merged").mergeWithExistingSchema(schema1).mergeWithExistingSchema(schema2),
767
+ ).toThrow(/Duplicate table name "users"/);
768
+ });
769
+
770
+ it("should throw on duplicate index names when merging schemas", () => {
771
+ const schema1 = schema("schema1", (s) => {
772
+ return s.addTable("users", (t) => {
773
+ return t
774
+ .addColumn("id", idColumn())
775
+ .addColumn("name", column("string"))
776
+ .createIndex("idx_shared", ["name"]);
777
+ });
778
+ });
779
+
780
+ const schema2 = schema("schema2", (s) => {
781
+ return s.addTable("posts", (t) => {
782
+ return t
783
+ .addColumn("id", idColumn())
784
+ .addColumn("title", column("string"))
785
+ .createIndex("idx_shared", ["title"]);
786
+ });
787
+ });
788
+
789
+ expect(() =>
790
+ new SchemaBuilder("merged").mergeWithExistingSchema(schema1).mergeWithExistingSchema(schema2),
791
+ ).toThrow(/Duplicate index name "idx_shared"/);
792
+ });
793
+
707
794
  it("should extend merged schema with new tables", () => {
708
- const schema1 = schema((s) => {
795
+ const schema1 = schema("schema1", (s) => {
709
796
  return s.addTable("users", (t) => {
710
797
  return t.addColumn("id", idColumn()).addColumn("name", column("string"));
711
798
  });
712
799
  });
713
800
 
714
- const schema2 = schema((s) => {
801
+ const schema2 = schema("schema2", (s) => {
715
802
  return s.addTable("posts", (t) => {
716
803
  return t.addColumn("id", idColumn()).addColumn("title", column("string"));
717
804
  });
718
805
  });
719
806
 
720
- const extended = new SchemaBuilder()
807
+ const extended = new SchemaBuilder("extended")
721
808
  .mergeWithExistingSchema(schema1)
722
809
  .mergeWithExistingSchema(schema2)
723
810
  .addTable("comments", (t) => {
@@ -733,19 +820,19 @@ describe("SchemaBuilder with existing schema", () => {
733
820
  });
734
821
 
735
822
  it("should use mergeWithExistingSchema method to merge schemas", () => {
736
- const schema1 = schema((s) => {
823
+ const schema1 = schema("schema1", (s) => {
737
824
  return s.addTable("users", (t) => {
738
825
  return t.addColumn("id", idColumn()).addColumn("name", column("string"));
739
826
  });
740
827
  });
741
828
 
742
- const schema2 = schema((s) => {
829
+ const schema2 = schema("schema2", (s) => {
743
830
  return s.addTable("posts", (t) => {
744
831
  return t.addColumn("id", idColumn()).addColumn("title", column("string"));
745
832
  });
746
833
  });
747
834
 
748
- const combined = new SchemaBuilder()
835
+ const combined = new SchemaBuilder("combined")
749
836
  .mergeWithExistingSchema(schema1)
750
837
  .mergeWithExistingSchema(schema2)
751
838
  .addTable("comments", (t) => {
@@ -761,13 +848,13 @@ describe("SchemaBuilder with existing schema", () => {
761
848
  });
762
849
 
763
850
  it("should merge operations from multiple schemas in order", () => {
764
- const schema1 = schema((s) => {
851
+ const schema1 = schema("schema1", (s) => {
765
852
  return s.addTable("users", (t) => {
766
853
  return t.addColumn("id", idColumn()).addColumn("name", column("string"));
767
854
  });
768
855
  });
769
856
 
770
- const schema2 = schema((s) => {
857
+ const schema2 = schema("schema2", (s) => {
771
858
  return s
772
859
  .addTable("posts", (t) => {
773
860
  return t.addColumn("id", idColumn()).addColumn("title", column("string"));
@@ -777,7 +864,7 @@ describe("SchemaBuilder with existing schema", () => {
777
864
  });
778
865
  });
779
866
 
780
- const mergedSchema = new SchemaBuilder()
867
+ const mergedSchema = new SchemaBuilder("merged")
781
868
  .mergeWithExistingSchema(schema1)
782
869
  .mergeWithExistingSchema(schema2)
783
870
  .build();
@@ -790,25 +877,25 @@ describe("SchemaBuilder with existing schema", () => {
790
877
  });
791
878
 
792
879
  it("should merge three or more schemas", () => {
793
- const schema1 = schema((s) => {
880
+ const schema1 = schema("schema1", (s) => {
794
881
  return s.addTable("users", (t) => {
795
882
  return t.addColumn("id", idColumn()).addColumn("name", column("string"));
796
883
  });
797
884
  });
798
885
 
799
- const schema2 = schema((s) => {
886
+ const schema2 = schema("schema2", (s) => {
800
887
  return s.addTable("posts", (t) => {
801
888
  return t.addColumn("id", idColumn()).addColumn("title", column("string"));
802
889
  });
803
890
  });
804
891
 
805
- const schema3 = schema((s) => {
892
+ const schema3 = schema("schema3", (s) => {
806
893
  return s.addTable("comments", (t) => {
807
894
  return t.addColumn("id", idColumn()).addColumn("text", column("string"));
808
895
  });
809
896
  });
810
897
 
811
- const mergedSchema = new SchemaBuilder()
898
+ const mergedSchema = new SchemaBuilder("merged")
812
899
  .mergeWithExistingSchema(schema1)
813
900
  .mergeWithExistingSchema(schema2)
814
901
  .mergeWithExistingSchema(schema3)
@@ -822,13 +909,13 @@ describe("SchemaBuilder with existing schema", () => {
822
909
  });
823
910
 
824
911
  it("should handle single schema merge", () => {
825
- const schema1 = schema((s) => {
912
+ const schema1 = schema("schema1", (s) => {
826
913
  return s.addTable("users", (t) => {
827
914
  return t.addColumn("id", idColumn()).addColumn("name", column("string"));
828
915
  });
829
916
  });
830
917
 
831
- const mergedSchema = new SchemaBuilder().mergeWithExistingSchema(schema1).build();
918
+ const mergedSchema = new SchemaBuilder("merged").mergeWithExistingSchema(schema1).build();
832
919
 
833
920
  expect(mergedSchema.tables.users).toBeDefined();
834
921
  expect(mergedSchema.version).toBe(1);