@fragno-dev/db 0.1.14 → 0.2.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 (445) hide show
  1. package/.turbo/turbo-build.log +242 -139
  2. package/CHANGELOG.md +47 -0
  3. package/README.md +123 -8
  4. package/dist/adapters/adapters.d.ts +19 -5
  5. package/dist/adapters/adapters.d.ts.map +1 -1
  6. package/dist/adapters/adapters.js.map +1 -1
  7. package/dist/adapters/drizzle/drizzle-adapter.d.ts +6 -19
  8. package/dist/adapters/drizzle/drizzle-adapter.d.ts.map +1 -1
  9. package/dist/adapters/drizzle/drizzle-adapter.js +7 -47
  10. package/dist/adapters/drizzle/drizzle-adapter.js.map +1 -1
  11. package/dist/adapters/drizzle/generate.d.ts +7 -1
  12. package/dist/adapters/drizzle/generate.d.ts.map +1 -1
  13. package/dist/adapters/drizzle/generate.js +46 -45
  14. package/dist/adapters/drizzle/generate.js.map +1 -1
  15. package/dist/adapters/generic-sql/driver-config.d.ts +74 -0
  16. package/dist/adapters/generic-sql/driver-config.d.ts.map +1 -0
  17. package/dist/adapters/generic-sql/driver-config.js +94 -0
  18. package/dist/adapters/generic-sql/driver-config.js.map +1 -0
  19. package/dist/adapters/generic-sql/generic-sql-adapter.d.ts +43 -0
  20. package/dist/adapters/generic-sql/generic-sql-adapter.d.ts.map +1 -0
  21. package/dist/adapters/generic-sql/generic-sql-adapter.js +87 -0
  22. package/dist/adapters/generic-sql/generic-sql-adapter.js.map +1 -0
  23. package/dist/adapters/generic-sql/generic-sql-uow-executor.js +67 -0
  24. package/dist/adapters/generic-sql/generic-sql-uow-executor.js.map +1 -0
  25. package/dist/adapters/generic-sql/migration/cold-kysely.js +33 -0
  26. package/dist/adapters/generic-sql/migration/cold-kysely.js.map +1 -0
  27. package/dist/adapters/generic-sql/migration/dialect/mysql.js +60 -0
  28. package/dist/adapters/generic-sql/migration/dialect/mysql.js.map +1 -0
  29. package/dist/adapters/generic-sql/migration/dialect/postgres.js +59 -0
  30. package/dist/adapters/generic-sql/migration/dialect/postgres.js.map +1 -0
  31. package/dist/adapters/generic-sql/migration/dialect/sqlite.js +96 -0
  32. package/dist/adapters/generic-sql/migration/dialect/sqlite.js.map +1 -0
  33. package/dist/adapters/generic-sql/migration/executor.d.ts +15 -0
  34. package/dist/adapters/generic-sql/migration/executor.d.ts.map +1 -0
  35. package/dist/adapters/generic-sql/migration/executor.js +18 -0
  36. package/dist/adapters/generic-sql/migration/executor.js.map +1 -0
  37. package/dist/adapters/generic-sql/migration/prepared-migrations.d.ts +66 -0
  38. package/dist/adapters/generic-sql/migration/prepared-migrations.d.ts.map +1 -0
  39. package/dist/adapters/generic-sql/migration/prepared-migrations.js +68 -0
  40. package/dist/adapters/generic-sql/migration/prepared-migrations.js.map +1 -0
  41. package/dist/adapters/generic-sql/migration/sql-generator.js +212 -0
  42. package/dist/adapters/generic-sql/migration/sql-generator.js.map +1 -0
  43. package/dist/adapters/generic-sql/query/create-sql-query-compiler.js +32 -0
  44. package/dist/adapters/generic-sql/query/create-sql-query-compiler.js.map +1 -0
  45. package/dist/adapters/generic-sql/query/cursor-utils.js +37 -0
  46. package/dist/adapters/generic-sql/query/cursor-utils.js.map +1 -0
  47. package/dist/adapters/generic-sql/query/dialect/mysql.js +33 -0
  48. package/dist/adapters/generic-sql/query/dialect/mysql.js.map +1 -0
  49. package/dist/adapters/generic-sql/query/dialect/postgres.js +32 -0
  50. package/dist/adapters/generic-sql/query/dialect/postgres.js.map +1 -0
  51. package/dist/adapters/generic-sql/query/dialect/sqlite.js +32 -0
  52. package/dist/adapters/generic-sql/query/dialect/sqlite.js.map +1 -0
  53. package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js +152 -0
  54. package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js.map +1 -0
  55. package/dist/adapters/generic-sql/query/select-builder.js +69 -0
  56. package/dist/adapters/generic-sql/query/select-builder.js.map +1 -0
  57. package/dist/adapters/generic-sql/query/sql-query-compiler.js +145 -0
  58. package/dist/adapters/generic-sql/query/sql-query-compiler.js.map +1 -0
  59. package/dist/adapters/generic-sql/query/where-builder.js +129 -0
  60. package/dist/adapters/generic-sql/query/where-builder.js.map +1 -0
  61. package/dist/adapters/generic-sql/result-interpreter.js +74 -0
  62. package/dist/adapters/generic-sql/result-interpreter.js.map +1 -0
  63. package/dist/adapters/generic-sql/uow-decoder.js +105 -0
  64. package/dist/adapters/generic-sql/uow-decoder.js.map +1 -0
  65. package/dist/adapters/generic-sql/uow-encoder.js +93 -0
  66. package/dist/adapters/generic-sql/uow-encoder.js.map +1 -0
  67. package/dist/adapters/kysely/kysely-adapter.d.ts +5 -16
  68. package/dist/adapters/kysely/kysely-adapter.d.ts.map +1 -1
  69. package/dist/adapters/kysely/kysely-adapter.js +6 -159
  70. package/dist/adapters/kysely/kysely-adapter.js.map +1 -1
  71. package/dist/adapters/{drizzle/drizzle-query.js → shared/from-unit-of-work-compiler.js} +48 -62
  72. package/dist/adapters/shared/from-unit-of-work-compiler.js.map +1 -0
  73. package/dist/adapters/{kysely/kysely-shared.d.ts → shared/table-name-mapper.d.ts} +3 -2
  74. package/dist/adapters/shared/table-name-mapper.d.ts.map +1 -0
  75. package/dist/adapters/shared/table-name-mapper.js +43 -0
  76. package/dist/adapters/shared/table-name-mapper.js.map +1 -0
  77. package/dist/adapters/shared/uow-operation-compiler.js +105 -0
  78. package/dist/adapters/shared/uow-operation-compiler.js.map +1 -0
  79. package/dist/db-fragment-definition-builder.d.ts +186 -0
  80. package/dist/db-fragment-definition-builder.d.ts.map +1 -0
  81. package/dist/db-fragment-definition-builder.js +207 -0
  82. package/dist/db-fragment-definition-builder.js.map +1 -0
  83. package/dist/fragments/internal-fragment.d.ts +53 -0
  84. package/dist/fragments/internal-fragment.d.ts.map +1 -0
  85. package/dist/fragments/internal-fragment.js +111 -0
  86. package/dist/fragments/internal-fragment.js.map +1 -0
  87. package/dist/hooks/hooks.d.ts +51 -0
  88. package/dist/hooks/hooks.d.ts.map +1 -0
  89. package/dist/hooks/hooks.js +88 -0
  90. package/dist/hooks/hooks.js.map +1 -0
  91. package/dist/migration-engine/generation-engine.d.ts +0 -2
  92. package/dist/migration-engine/generation-engine.d.ts.map +1 -1
  93. package/dist/migration-engine/generation-engine.js +38 -56
  94. package/dist/migration-engine/generation-engine.js.map +1 -1
  95. package/dist/mod.d.ts +35 -23
  96. package/dist/mod.d.ts.map +1 -1
  97. package/dist/mod.js +48 -45
  98. package/dist/mod.js.map +1 -1
  99. package/dist/node_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js +165 -0
  100. package/dist/node_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js.map +1 -0
  101. package/dist/packages/fragno/dist/api/bind-services.js +20 -0
  102. package/dist/packages/fragno/dist/api/bind-services.js.map +1 -0
  103. package/dist/packages/fragno/dist/api/error.js +48 -0
  104. package/dist/packages/fragno/dist/api/error.js.map +1 -0
  105. package/dist/packages/fragno/dist/api/fragment-definition-builder.js +320 -0
  106. package/dist/packages/fragno/dist/api/fragment-definition-builder.js.map +1 -0
  107. package/dist/packages/fragno/dist/api/fragment-instantiator.js +525 -0
  108. package/dist/packages/fragno/dist/api/fragment-instantiator.js.map +1 -0
  109. package/dist/packages/fragno/dist/api/fragno-response.js +73 -0
  110. package/dist/packages/fragno/dist/api/fragno-response.js.map +1 -0
  111. package/dist/packages/fragno/dist/api/internal/response-stream.js +81 -0
  112. package/dist/packages/fragno/dist/api/internal/response-stream.js.map +1 -0
  113. package/dist/packages/fragno/dist/api/internal/route.js +10 -0
  114. package/dist/packages/fragno/dist/api/internal/route.js.map +1 -0
  115. package/dist/packages/fragno/dist/api/mutable-request-state.js +97 -0
  116. package/dist/packages/fragno/dist/api/mutable-request-state.js.map +1 -0
  117. package/dist/packages/fragno/dist/api/request-context-storage.js +43 -0
  118. package/dist/packages/fragno/dist/api/request-context-storage.js.map +1 -0
  119. package/dist/packages/fragno/dist/api/request-input-context.js +118 -0
  120. package/dist/packages/fragno/dist/api/request-input-context.js.map +1 -0
  121. package/dist/packages/fragno/dist/api/request-middleware.js +83 -0
  122. package/dist/packages/fragno/dist/api/request-middleware.js.map +1 -0
  123. package/dist/packages/fragno/dist/api/request-output-context.js +119 -0
  124. package/dist/packages/fragno/dist/api/request-output-context.js.map +1 -0
  125. package/dist/packages/fragno/dist/api/route.js +17 -0
  126. package/dist/packages/fragno/dist/api/route.js.map +1 -0
  127. package/dist/packages/fragno/dist/internal/symbols.js +10 -0
  128. package/dist/packages/fragno/dist/internal/symbols.js.map +1 -0
  129. package/dist/query/column-defaults.js +27 -0
  130. package/dist/query/column-defaults.js.map +1 -0
  131. package/dist/query/cursor.d.ts +14 -6
  132. package/dist/query/cursor.d.ts.map +1 -1
  133. package/dist/query/cursor.js +16 -7
  134. package/dist/query/cursor.js.map +1 -1
  135. package/dist/query/orm/orm.d.ts +1 -1
  136. package/dist/query/orm/orm.js.map +1 -1
  137. package/dist/query/serialize/create-sql-serializer.js +30 -0
  138. package/dist/query/serialize/create-sql-serializer.js.map +1 -0
  139. package/dist/query/serialize/dialect/mysql-serializer.js +87 -0
  140. package/dist/query/serialize/dialect/mysql-serializer.js.map +1 -0
  141. package/dist/query/serialize/dialect/postgres-serializer.js +80 -0
  142. package/dist/query/serialize/dialect/postgres-serializer.js.map +1 -0
  143. package/dist/query/serialize/dialect/sqlite-serializer.js +93 -0
  144. package/dist/query/serialize/dialect/sqlite-serializer.js.map +1 -0
  145. package/dist/query/serialize/sql-serializer.js +67 -0
  146. package/dist/query/serialize/sql-serializer.js.map +1 -0
  147. package/dist/query/{query.d.ts → simple-query-interface.d.ts} +6 -6
  148. package/dist/query/simple-query-interface.d.ts.map +1 -0
  149. package/dist/query/unit-of-work/execute-unit-of-work.d.ts +133 -0
  150. package/dist/query/unit-of-work/execute-unit-of-work.d.ts.map +1 -0
  151. package/dist/query/unit-of-work/execute-unit-of-work.js +197 -0
  152. package/dist/query/unit-of-work/execute-unit-of-work.js.map +1 -0
  153. package/dist/query/unit-of-work/retry-policy.d.ts +88 -0
  154. package/dist/query/unit-of-work/retry-policy.d.ts.map +1 -0
  155. package/dist/query/unit-of-work/retry-policy.js +61 -0
  156. package/dist/query/unit-of-work/retry-policy.js.map +1 -0
  157. package/dist/query/{unit-of-work.d.ts → unit-of-work/unit-of-work.d.ts} +145 -58
  158. package/dist/query/unit-of-work/unit-of-work.d.ts.map +1 -0
  159. package/dist/query/{unit-of-work.js → unit-of-work/unit-of-work.js} +435 -198
  160. package/dist/query/unit-of-work/unit-of-work.js.map +1 -0
  161. package/dist/query/value-decoding.js +71 -0
  162. package/dist/query/value-decoding.js.map +1 -0
  163. package/dist/query/value-encoding.js +124 -0
  164. package/dist/query/value-encoding.js.map +1 -0
  165. package/dist/schema/create.d.ts +3 -0
  166. package/dist/schema/create.d.ts.map +1 -1
  167. package/dist/schema/create.js +4 -0
  168. package/dist/schema/create.js.map +1 -1
  169. package/dist/schema/type-conversion/create-sql-type-mapper.js +29 -0
  170. package/dist/schema/type-conversion/create-sql-type-mapper.js.map +1 -0
  171. package/dist/schema/type-conversion/dialect/mysql.js +57 -0
  172. package/dist/schema/type-conversion/dialect/mysql.js.map +1 -0
  173. package/dist/schema/type-conversion/dialect/postgres.js +56 -0
  174. package/dist/schema/type-conversion/dialect/postgres.js.map +1 -0
  175. package/dist/schema/type-conversion/dialect/sqlite.js +52 -0
  176. package/dist/schema/type-conversion/dialect/sqlite.js.map +1 -0
  177. package/dist/schema/type-conversion/type-mapping.js +63 -0
  178. package/dist/schema/type-conversion/type-mapping.js.map +1 -0
  179. package/dist/sql-driver/connection/connection-provider.d.ts +13 -0
  180. package/dist/sql-driver/connection/connection-provider.d.ts.map +1 -0
  181. package/dist/sql-driver/connection/connection-provider.js +19 -0
  182. package/dist/sql-driver/connection/connection-provider.js.map +1 -0
  183. package/dist/sql-driver/connection/single-connection-provider.js +23 -0
  184. package/dist/sql-driver/connection/single-connection-provider.js.map +1 -0
  185. package/dist/sql-driver/dialect-adapter/dialect-adapter.d.ts +7 -0
  186. package/dist/sql-driver/dialect-adapter/dialect-adapter.d.ts.map +1 -0
  187. package/dist/sql-driver/dialects/dialects.d.ts +2 -0
  188. package/dist/sql-driver/dialects/dialects.js +3 -0
  189. package/dist/sql-driver/dialects/durable-object-dialect.d.ts +72 -0
  190. package/dist/sql-driver/dialects/durable-object-dialect.d.ts.map +1 -0
  191. package/dist/sql-driver/dialects/durable-object-dialect.js +130 -0
  192. package/dist/sql-driver/dialects/durable-object-dialect.js.map +1 -0
  193. package/dist/sql-driver/driver/runtime-driver.d.ts +23 -0
  194. package/dist/sql-driver/driver/runtime-driver.d.ts.map +1 -0
  195. package/dist/sql-driver/driver/runtime-driver.js +56 -0
  196. package/dist/sql-driver/driver/runtime-driver.js.map +1 -0
  197. package/dist/sql-driver/query-executor/default-query-executor.js +26 -0
  198. package/dist/sql-driver/query-executor/default-query-executor.js.map +1 -0
  199. package/dist/sql-driver/query-executor/plugin.d.ts +17 -0
  200. package/dist/sql-driver/query-executor/plugin.d.ts.map +1 -0
  201. package/dist/sql-driver/query-executor/query-executor-base.js +25 -0
  202. package/dist/sql-driver/query-executor/query-executor-base.js.map +1 -0
  203. package/dist/sql-driver/query-executor/query-executor.d.ts +36 -0
  204. package/dist/sql-driver/query-executor/query-executor.d.ts.map +1 -0
  205. package/dist/sql-driver/sql-driver-adapter.d.ts +29 -0
  206. package/dist/sql-driver/sql-driver-adapter.d.ts.map +1 -0
  207. package/dist/sql-driver/sql-driver-adapter.js +68 -0
  208. package/dist/sql-driver/sql-driver-adapter.js.map +1 -0
  209. package/dist/sql-driver/sql-driver.d.ts +38 -0
  210. package/dist/sql-driver/sql-driver.d.ts.map +1 -0
  211. package/dist/sql-driver/sql-driver.js +1 -0
  212. package/dist/sql-driver/sql.js +50 -0
  213. package/dist/sql-driver/sql.js.map +1 -0
  214. package/dist/with-database.d.ts +32 -0
  215. package/dist/with-database.d.ts.map +1 -0
  216. package/dist/with-database.js +34 -0
  217. package/dist/with-database.js.map +1 -0
  218. package/package.json +43 -9
  219. package/src/adapters/adapters.ts +23 -4
  220. package/src/adapters/drizzle/drizzle-adapter-pglite.test.ts +140 -185
  221. package/src/adapters/drizzle/{drizzle-adapter-sqlite.test.ts → drizzle-adapter-sqlite3.test.ts} +187 -55
  222. package/src/adapters/drizzle/drizzle-adapter.ts +14 -93
  223. package/src/adapters/drizzle/generate.test.ts +102 -269
  224. package/src/adapters/drizzle/generate.ts +89 -63
  225. package/src/adapters/drizzle/migrate-drizzle.test.ts +19 -0
  226. package/src/adapters/drizzle/shared.ts +0 -34
  227. package/src/adapters/drizzle/test-utils.ts +36 -5
  228. package/src/adapters/generic-sql/README.md +14 -0
  229. package/src/adapters/generic-sql/driver-config.ts +144 -0
  230. package/src/adapters/generic-sql/generic-sql-adapter.test.ts +50 -0
  231. package/src/adapters/generic-sql/generic-sql-adapter.ts +146 -0
  232. package/src/adapters/generic-sql/generic-sql-uow-executor.ts +130 -0
  233. package/src/adapters/generic-sql/migration/cold-kysely.ts +55 -0
  234. package/src/adapters/{kysely/migration/execute-mysql.test.ts → generic-sql/migration/dialect/mysql.test.ts} +342 -484
  235. package/src/adapters/generic-sql/migration/dialect/mysql.ts +104 -0
  236. package/src/adapters/generic-sql/migration/dialect/postgres.test.ts +1008 -0
  237. package/src/adapters/generic-sql/migration/dialect/postgres.ts +113 -0
  238. package/src/adapters/{kysely/migration/execute-sqlite.test.ts → generic-sql/migration/dialect/sqlite.test.ts} +307 -510
  239. package/src/adapters/generic-sql/migration/dialect/sqlite.ts +189 -0
  240. package/src/adapters/generic-sql/migration/executor.ts +33 -0
  241. package/src/adapters/generic-sql/migration/prepared-migrations.test.ts +661 -0
  242. package/src/adapters/generic-sql/migration/prepared-migrations.ts +214 -0
  243. package/src/adapters/generic-sql/migration/sql-generator.ts +413 -0
  244. package/src/adapters/generic-sql/query/create-sql-query-compiler.ts +36 -0
  245. package/src/adapters/generic-sql/query/cursor-utils.ts +56 -0
  246. package/src/adapters/generic-sql/query/dialect/mysql.ts +34 -0
  247. package/src/adapters/generic-sql/query/dialect/postgres.ts +32 -0
  248. package/src/adapters/generic-sql/query/dialect/sqlite.ts +32 -0
  249. package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.test.ts +1568 -0
  250. package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.ts +314 -0
  251. package/src/adapters/generic-sql/query/select-builder.test.ts +256 -0
  252. package/src/adapters/generic-sql/query/select-builder.ts +137 -0
  253. package/src/adapters/generic-sql/query/sql-query-compiler.test.ts +195 -0
  254. package/src/adapters/generic-sql/query/sql-query-compiler.ts +367 -0
  255. package/src/adapters/generic-sql/query/where-builder.test.ts +744 -0
  256. package/src/adapters/generic-sql/query/where-builder.ts +211 -0
  257. package/src/adapters/generic-sql/result-interpreter.ts +102 -0
  258. package/src/adapters/generic-sql/test/generic-drizzle-adapter-sqlite3.test.ts +899 -0
  259. package/src/adapters/generic-sql/uow-decoder.test.ts +399 -0
  260. package/src/adapters/generic-sql/uow-decoder.ts +152 -0
  261. package/src/adapters/generic-sql/uow-encoder.test.ts +183 -0
  262. package/src/adapters/generic-sql/uow-encoder.ts +131 -0
  263. package/src/adapters/kysely/kysely-adapter-pglite.test.ts +90 -96
  264. package/src/adapters/kysely/kysely-adapter-sqlocal.test.ts +215 -0
  265. package/src/adapters/kysely/kysely-adapter.ts +10 -242
  266. package/src/adapters/{drizzle/drizzle-query.ts → shared/from-unit-of-work-compiler.ts} +111 -106
  267. package/src/adapters/shared/table-name-mapper.ts +50 -0
  268. package/src/adapters/shared/uow-operation-compiler.ts +211 -0
  269. package/src/db-fragment-definition-builder.test.ts +887 -0
  270. package/src/db-fragment-definition-builder.ts +737 -0
  271. package/src/db-fragment-instantiator.test.ts +543 -0
  272. package/src/db-fragment-integration.test.ts +406 -0
  273. package/src/fragments/internal-fragment.test.ts +549 -0
  274. package/src/fragments/internal-fragment.ts +249 -0
  275. package/src/hooks/hooks.test.ts +575 -0
  276. package/src/hooks/hooks.ts +179 -0
  277. package/src/migration-engine/generation-engine.test.ts +60 -27
  278. package/src/migration-engine/generation-engine.ts +99 -92
  279. package/src/mod.ts +139 -78
  280. package/src/query/column-defaults.ts +49 -0
  281. package/src/query/cursor.test.ts +147 -3
  282. package/src/query/cursor.ts +25 -8
  283. package/src/query/orm/orm.ts +1 -1
  284. package/src/query/query-type.test.ts +9 -9
  285. package/src/query/serialize/create-sql-serializer.ts +34 -0
  286. package/src/query/serialize/dialect/mysql-serializer.ts +142 -0
  287. package/src/query/serialize/dialect/postgres-serializer.ts +129 -0
  288. package/src/query/serialize/dialect/sqlite-serializer.test.ts +251 -0
  289. package/src/query/serialize/dialect/sqlite-serializer.ts +156 -0
  290. package/src/query/serialize/sql-serializer.ts +143 -0
  291. package/src/query/{query.ts → simple-query-interface.ts} +4 -4
  292. package/src/query/unit-of-work/execute-unit-of-work.test.ts +1310 -0
  293. package/src/query/unit-of-work/execute-unit-of-work.ts +504 -0
  294. package/src/query/unit-of-work/retry-policy.test.ts +217 -0
  295. package/src/query/unit-of-work/retry-policy.ts +141 -0
  296. package/src/query/unit-of-work/unit-of-work-coordinator.test.ts +831 -0
  297. package/src/query/{unit-of-work-types.test.ts → unit-of-work/unit-of-work-types.test.ts} +7 -5
  298. package/src/query/unit-of-work/unit-of-work.test.ts +1716 -0
  299. package/src/query/{unit-of-work.ts → unit-of-work/unit-of-work.ts} +716 -420
  300. package/src/query/{result-transform.test.ts → value-decoding.test.ts} +45 -298
  301. package/src/query/value-decoding.ts +113 -0
  302. package/src/query/value-encoding.test.ts +390 -0
  303. package/src/query/value-encoding.ts +168 -0
  304. package/src/schema/create.test.ts +5 -1
  305. package/src/schema/create.ts +5 -0
  306. package/src/schema/serialize.test.ts +165 -407
  307. package/src/schema/type-conversion/create-sql-type-mapper.ts +28 -0
  308. package/src/schema/type-conversion/dialect/mysql.ts +64 -0
  309. package/src/schema/type-conversion/dialect/postgres.ts +62 -0
  310. package/src/schema/type-conversion/dialect/sqlite.ts +63 -0
  311. package/src/schema/type-conversion/type-mapping.test.ts +137 -0
  312. package/src/schema/type-conversion/type-mapping.ts +153 -0
  313. package/src/shared/connection-pool.ts +5 -5
  314. package/src/sql-driver/better-sqlite3.test.ts +126 -0
  315. package/src/sql-driver/connection/connection-provider.ts +27 -0
  316. package/src/sql-driver/connection/single-connection-provider.ts +42 -0
  317. package/src/sql-driver/dialect-adapter/dialect-adapter.ts +9 -0
  318. package/src/sql-driver/dialect-adapter/sqlite-dialect-adapter.ts +7 -0
  319. package/src/sql-driver/dialects/dialects.ts +1 -0
  320. package/src/sql-driver/dialects/durable-object-dialect.ts +260 -0
  321. package/src/sql-driver/driver/runtime-driver.ts +91 -0
  322. package/src/sql-driver/query-executor/default-query-executor.ts +38 -0
  323. package/src/sql-driver/query-executor/plugin.ts +22 -0
  324. package/src/sql-driver/query-executor/query-executor-base.ts +53 -0
  325. package/src/sql-driver/query-executor/query-executor.ts +44 -0
  326. package/src/sql-driver/sql-driver-adapter.ts +96 -0
  327. package/src/sql-driver/sql-driver.ts +53 -0
  328. package/src/sql-driver/sql.ts +57 -0
  329. package/src/sql-driver/sqlocal.test.ts +117 -0
  330. package/src/with-database.ts +152 -0
  331. package/tsdown.config.ts +8 -2
  332. package/dist/adapters/drizzle/drizzle-connection-pool.js +0 -40
  333. package/dist/adapters/drizzle/drizzle-connection-pool.js.map +0 -1
  334. package/dist/adapters/drizzle/drizzle-query.d.ts +0 -23
  335. package/dist/adapters/drizzle/drizzle-query.d.ts.map +0 -1
  336. package/dist/adapters/drizzle/drizzle-query.js.map +0 -1
  337. package/dist/adapters/drizzle/drizzle-uow-compiler.d.ts +0 -10
  338. package/dist/adapters/drizzle/drizzle-uow-compiler.d.ts.map +0 -1
  339. package/dist/adapters/drizzle/drizzle-uow-compiler.js +0 -315
  340. package/dist/adapters/drizzle/drizzle-uow-compiler.js.map +0 -1
  341. package/dist/adapters/drizzle/drizzle-uow-decoder.js +0 -116
  342. package/dist/adapters/drizzle/drizzle-uow-decoder.js.map +0 -1
  343. package/dist/adapters/drizzle/drizzle-uow-executor.js +0 -149
  344. package/dist/adapters/drizzle/drizzle-uow-executor.js.map +0 -1
  345. package/dist/adapters/drizzle/join-column-utils.js +0 -28
  346. package/dist/adapters/drizzle/join-column-utils.js.map +0 -1
  347. package/dist/adapters/drizzle/shared.d.ts +0 -14
  348. package/dist/adapters/drizzle/shared.d.ts.map +0 -1
  349. package/dist/adapters/drizzle/shared.js +0 -35
  350. package/dist/adapters/drizzle/shared.js.map +0 -1
  351. package/dist/adapters/kysely/kysely-connection-pool.js +0 -41
  352. package/dist/adapters/kysely/kysely-connection-pool.js.map +0 -1
  353. package/dist/adapters/kysely/kysely-query-builder.js +0 -321
  354. package/dist/adapters/kysely/kysely-query-builder.js.map +0 -1
  355. package/dist/adapters/kysely/kysely-query-compiler.js +0 -66
  356. package/dist/adapters/kysely/kysely-query-compiler.js.map +0 -1
  357. package/dist/adapters/kysely/kysely-query.d.ts +0 -22
  358. package/dist/adapters/kysely/kysely-query.d.ts.map +0 -1
  359. package/dist/adapters/kysely/kysely-query.js +0 -223
  360. package/dist/adapters/kysely/kysely-query.js.map +0 -1
  361. package/dist/adapters/kysely/kysely-shared.d.ts.map +0 -1
  362. package/dist/adapters/kysely/kysely-shared.js +0 -18
  363. package/dist/adapters/kysely/kysely-shared.js.map +0 -1
  364. package/dist/adapters/kysely/kysely-uow-compiler.js +0 -170
  365. package/dist/adapters/kysely/kysely-uow-compiler.js.map +0 -1
  366. package/dist/adapters/kysely/kysely-uow-executor.js +0 -89
  367. package/dist/adapters/kysely/kysely-uow-executor.js.map +0 -1
  368. package/dist/adapters/kysely/migration/execute-base.js +0 -128
  369. package/dist/adapters/kysely/migration/execute-base.js.map +0 -1
  370. package/dist/adapters/kysely/migration/execute-factory.js +0 -34
  371. package/dist/adapters/kysely/migration/execute-factory.js.map +0 -1
  372. package/dist/adapters/kysely/migration/execute-mssql.js +0 -112
  373. package/dist/adapters/kysely/migration/execute-mssql.js.map +0 -1
  374. package/dist/adapters/kysely/migration/execute-mysql.js +0 -93
  375. package/dist/adapters/kysely/migration/execute-mysql.js.map +0 -1
  376. package/dist/adapters/kysely/migration/execute-postgres.js +0 -104
  377. package/dist/adapters/kysely/migration/execute-postgres.js.map +0 -1
  378. package/dist/adapters/kysely/migration/execute-sqlite.js +0 -123
  379. package/dist/adapters/kysely/migration/execute-sqlite.js.map +0 -1
  380. package/dist/adapters/kysely/migration/execute.js +0 -34
  381. package/dist/adapters/kysely/migration/execute.js.map +0 -1
  382. package/dist/bind-services.d.ts +0 -7
  383. package/dist/bind-services.d.ts.map +0 -1
  384. package/dist/bind-services.js +0 -14
  385. package/dist/bind-services.js.map +0 -1
  386. package/dist/fragment.d.ts +0 -173
  387. package/dist/fragment.d.ts.map +0 -1
  388. package/dist/fragment.js +0 -191
  389. package/dist/fragment.js.map +0 -1
  390. package/dist/migration-engine/create.d.ts +0 -37
  391. package/dist/migration-engine/create.d.ts.map +0 -1
  392. package/dist/migration-engine/create.js +0 -58
  393. package/dist/migration-engine/create.js.map +0 -1
  394. package/dist/migration-engine/shared.d.ts +0 -112
  395. package/dist/migration-engine/shared.d.ts.map +0 -1
  396. package/dist/query/query.d.ts.map +0 -1
  397. package/dist/query/result-transform.js +0 -168
  398. package/dist/query/result-transform.js.map +0 -1
  399. package/dist/query/unit-of-work.d.ts.map +0 -1
  400. package/dist/query/unit-of-work.js.map +0 -1
  401. package/dist/schema/serialize.js +0 -106
  402. package/dist/schema/serialize.js.map +0 -1
  403. package/dist/shared/settings-schema.js +0 -36
  404. package/dist/shared/settings-schema.js.map +0 -1
  405. package/src/adapters/drizzle/drizzle-adapter.test.ts +0 -170
  406. package/src/adapters/drizzle/drizzle-connection-pool.ts +0 -66
  407. package/src/adapters/drizzle/drizzle-query.test.ts +0 -499
  408. package/src/adapters/drizzle/drizzle-uow-compiler.test.ts +0 -1383
  409. package/src/adapters/drizzle/drizzle-uow-compiler.ts +0 -636
  410. package/src/adapters/drizzle/drizzle-uow-decoder.ts +0 -218
  411. package/src/adapters/drizzle/drizzle-uow-executor.ts +0 -276
  412. package/src/adapters/drizzle/join-column-utils.test.ts +0 -79
  413. package/src/adapters/drizzle/join-column-utils.ts +0 -39
  414. package/src/adapters/kysely/kysely-connection-pool.ts +0 -70
  415. package/src/adapters/kysely/kysely-query-builder.test.ts +0 -1344
  416. package/src/adapters/kysely/kysely-query-builder.ts +0 -666
  417. package/src/adapters/kysely/kysely-query-compiler.ts +0 -132
  418. package/src/adapters/kysely/kysely-query.test.ts +0 -498
  419. package/src/adapters/kysely/kysely-query.ts +0 -390
  420. package/src/adapters/kysely/kysely-shared.ts +0 -23
  421. package/src/adapters/kysely/kysely-uow-compiler.test.ts +0 -998
  422. package/src/adapters/kysely/kysely-uow-compiler.ts +0 -318
  423. package/src/adapters/kysely/kysely-uow-executor.ts +0 -145
  424. package/src/adapters/kysely/kysely-uow-joins.test.ts +0 -811
  425. package/src/adapters/kysely/migration/execute-base.ts +0 -256
  426. package/src/adapters/kysely/migration/execute-factory.ts +0 -53
  427. package/src/adapters/kysely/migration/execute-mssql.ts +0 -250
  428. package/src/adapters/kysely/migration/execute-mysql.ts +0 -211
  429. package/src/adapters/kysely/migration/execute-postgres.test.ts +0 -2657
  430. package/src/adapters/kysely/migration/execute-postgres.ts +0 -234
  431. package/src/adapters/kysely/migration/execute-sqlite.ts +0 -247
  432. package/src/adapters/kysely/migration/execute.ts +0 -50
  433. package/src/adapters/kysely/migration/kysely-migrator.test.ts +0 -261
  434. package/src/bind-services.test.ts +0 -214
  435. package/src/bind-services.ts +0 -37
  436. package/src/db-fragment.test.ts +0 -800
  437. package/src/fragment.ts +0 -727
  438. package/src/query/result-transform.ts +0 -271
  439. package/src/query/unit-of-work-multi-schema.test.ts +0 -64
  440. package/src/query/unit-of-work.test.ts +0 -943
  441. package/src/schema/serialize.ts +0 -396
  442. package/src/shared/settings-schema.ts +0 -61
  443. package/src/uow-context-integration.test.ts +0 -102
  444. package/src/uow-context.test.ts +0 -182
  445. /package/dist/query/{query.js → simple-query-interface.js} +0 -0
@@ -0,0 +1,179 @@
1
+ import type { RetryPolicy } from "../query/unit-of-work/retry-policy";
2
+ import { ExponentialBackoffRetryPolicy } from "../query/unit-of-work/retry-policy";
3
+ import type { IUnitOfWork } from "../query/unit-of-work/unit-of-work";
4
+ import type { InternalFragmentInstance } from "../fragments/internal-fragment";
5
+
6
+ /**
7
+ * Context available in hook functions via `this`.
8
+ * Contains the nonce for idempotency and database access.
9
+ */
10
+ export interface HookContext {
11
+ /**
12
+ * Unique nonce for this transaction.
13
+ * Use this for idempotency checks in your hook implementation.
14
+ */
15
+ nonce: string;
16
+ }
17
+
18
+ /**
19
+ * A hook function signature.
20
+ * Hooks receive a typed payload and access context via `this`.
21
+ */
22
+ export type HookFn<TPayload = unknown> = (payload: TPayload) => void | Promise<void>;
23
+
24
+ /**
25
+ * Map of hook names to hook functions.
26
+ * Used for type-safe hook definitions and triggering.
27
+ */
28
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
+ export type HooksMap = Record<string, HookFn<any>>;
30
+
31
+ /**
32
+ * Extract the payload type from a hook function.
33
+ */
34
+ export type HookPayload<T> = T extends HookFn<infer P> ? P : never;
35
+
36
+ /**
37
+ * Options for triggering a hook.
38
+ */
39
+ export interface TriggerHookOptions {
40
+ /**
41
+ * Optional retry policy override for this specific hook trigger.
42
+ * If not provided, uses the default retry policy.
43
+ */
44
+ retryPolicy?: RetryPolicy;
45
+ }
46
+
47
+ /**
48
+ * Internal representation of a triggered hook.
49
+ * Stored in the Unit of Work before execution.
50
+ */
51
+ export interface TriggeredHook {
52
+ hookName: string;
53
+ payload: unknown;
54
+ options?: TriggerHookOptions;
55
+ }
56
+
57
+ /**
58
+ * Configuration for hook processing.
59
+ */
60
+ export interface HookProcessorConfig {
61
+ hooks: HooksMap;
62
+ namespace: string;
63
+ internalFragment: InternalFragmentInstance;
64
+ defaultRetryPolicy?: RetryPolicy;
65
+ }
66
+
67
+ /**
68
+ * Add hook events as mutation operations to the UOW.
69
+ * This should be called before executeMutations() so hook records are created
70
+ * in the same transaction as the user's mutations.
71
+ */
72
+ export function prepareHookMutations(uow: IUnitOfWork, config: HookProcessorConfig): void {
73
+ const { namespace, internalFragment, defaultRetryPolicy } = config;
74
+ const retryPolicy = defaultRetryPolicy ?? new ExponentialBackoffRetryPolicy({ maxRetries: 5 });
75
+
76
+ const triggeredHooks = uow.getTriggeredHooks();
77
+
78
+ if (triggeredHooks.length === 0) {
79
+ return;
80
+ }
81
+
82
+ const internalSchema = internalFragment.$internal.deps.schema;
83
+ const internalUow = uow.forSchema(internalSchema);
84
+
85
+ for (const hook of triggeredHooks) {
86
+ const hookRetryPolicy = hook.options?.retryPolicy ?? retryPolicy;
87
+ const maxAttempts = hookRetryPolicy.shouldRetry(4) ? 5 : 1;
88
+ internalUow.create("fragno_hooks", {
89
+ namespace,
90
+ hookName: hook.hookName,
91
+ payload: hook.payload,
92
+ status: "pending",
93
+ attempts: 0,
94
+ maxAttempts,
95
+ lastAttemptAt: null,
96
+ nextRetryAt: null,
97
+ error: null,
98
+ nonce: uow.nonce,
99
+ });
100
+ }
101
+ }
102
+
103
+ /**
104
+ * Process pending hook events after the transaction has committed.
105
+ * This should be called in the onSuccess callback after executeMutations().
106
+ */
107
+ export async function processHooks(config: HookProcessorConfig): Promise<void> {
108
+ const { hooks, namespace, internalFragment, defaultRetryPolicy } = config;
109
+ const retryPolicy = defaultRetryPolicy ?? new ExponentialBackoffRetryPolicy({ maxRetries: 5 });
110
+
111
+ await internalFragment.inContext(async function () {
112
+ return await this.uow(async ({ executeRetrieve, executeMutate }) => {
113
+ const pendingEventsPromise =
114
+ internalFragment.services.hookService.getPendingHookEvents(namespace);
115
+ await executeRetrieve();
116
+
117
+ const pendingEvents = await pendingEventsPromise;
118
+
119
+ if (pendingEvents.length === 0) {
120
+ return;
121
+ }
122
+
123
+ const processedEvents = await Promise.allSettled(
124
+ pendingEvents.map(async (event) => {
125
+ const hookFn = hooks[event.hookName];
126
+ if (!hookFn) {
127
+ return {
128
+ eventId: event.id,
129
+ status: "failed" as const,
130
+ error: `Hook '${event.hookName}' not found in hooks map`,
131
+ attempts: event.attempts,
132
+ maxAttempts: event.maxAttempts,
133
+ };
134
+ }
135
+
136
+ try {
137
+ const hookContext: HookContext = { nonce: event.nonce };
138
+ await hookFn.call(hookContext, event.payload);
139
+ return {
140
+ eventId: event.id,
141
+ status: "completed" as const,
142
+ };
143
+ } catch (error) {
144
+ const errorMessage = error instanceof Error ? error.message : String(error);
145
+ return {
146
+ eventId: event.id,
147
+ status: "failed" as const,
148
+ error: errorMessage,
149
+ attempts: event.attempts,
150
+ maxAttempts: event.maxAttempts,
151
+ };
152
+ }
153
+ }),
154
+ );
155
+
156
+ for (const processedEvent of processedEvents) {
157
+ if (processedEvent.status === "rejected") {
158
+ continue;
159
+ }
160
+
161
+ const { eventId, status } = processedEvent.value;
162
+
163
+ if (status === "completed") {
164
+ internalFragment.services.hookService.markHookCompleted(eventId);
165
+ } else if (status === "failed") {
166
+ const { error, attempts } = processedEvent.value;
167
+ internalFragment.services.hookService.markHookFailed(
168
+ eventId,
169
+ error,
170
+ attempts,
171
+ retryPolicy,
172
+ );
173
+ }
174
+ }
175
+
176
+ await executeMutate();
177
+ });
178
+ });
179
+ }
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, beforeAll, beforeEach, vi, afterEach } from "vitest";
2
- import { Kysely, PostgresDialect } from "kysely";
2
+ import { DummyDriver, MysqlAdapter, PostgresAdapter, SqliteAdapter } from "kysely";
3
3
  import {
4
4
  postProcessMigrationFilenames,
5
5
  type GenerationInternalResult,
@@ -8,17 +8,30 @@ import {
8
8
  import { KyselyAdapter } from "../adapters/kysely/kysely-adapter";
9
9
  import { column, idColumn, schema, type AnySchema } from "../schema/create";
10
10
  import { FragnoDatabase } from "../mod";
11
+ import {
12
+ MySQL2DriverConfig,
13
+ NodePostgresDriverConfig,
14
+ SQLocalDriverConfig,
15
+ } from "../adapters/generic-sql/driver-config";
11
16
 
12
17
  describe("generateMigrationsOrSchema - kysely", () => {
13
18
  const mockDate = new Date("2025-10-24T12:00:00Z");
14
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
- let db: Kysely<any>;
16
19
  let adapter: KyselyAdapter;
17
20
 
18
21
  beforeAll(() => {
19
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
- db = new Kysely({ dialect: new PostgresDialect({} as any) });
21
- adapter = new KyselyAdapter({ db, provider: "postgresql" });
22
+ adapter = new KyselyAdapter({
23
+ dialect: {
24
+ createAdapter: () => new PostgresAdapter(),
25
+ createDriver: () => new DummyDriver(),
26
+ createQueryCompiler: () => ({
27
+ compileQuery: () => ({
28
+ sql: "",
29
+ parameters: [],
30
+ }),
31
+ }),
32
+ },
33
+ driverConfig: new NodePostgresDriverConfig(),
34
+ });
22
35
 
23
36
  // Mock the adapter methods
24
37
  vi.spyOn(adapter, "isConnectionHealthy").mockResolvedValue(true);
@@ -50,8 +63,8 @@ describe("generateMigrationsOrSchema - kysely", () => {
50
63
  const results = await generateMigrationsOrSchema([fragnoDb]);
51
64
 
52
65
  expect(results).toHaveLength(2); // Settings + test-db
53
- expect(results[0].namespace).toBe("fragno-db-settings");
54
- expect(results[0].path).toBe("20251024_001_f000_t001_fragno-db-settings.sql");
66
+ expect(results[0].namespace).toBe(""); // Empty namespace for settings table
67
+ expect(results[0].path).toMatch(/^20251024_001_f000_t00\d_fragno_db_settings.sql$/);
55
68
  expect(results[0].schema).toContain("create table");
56
69
  expect(results[0].schema).toContain("fragno_db_settings");
57
70
 
@@ -101,8 +114,8 @@ describe("generateMigrationsOrSchema - kysely", () => {
101
114
  const results = await generateMigrationsOrSchema([fragnoDb1, fragnoDb2, fragnoDb3]);
102
115
 
103
116
  expect(results).toHaveLength(4); // Settings + 3 databases
104
- expect(results[0].namespace).toBe("fragno-db-settings");
105
- expect(results[0].path).toBe("20251024_001_f000_t001_fragno-db-settings.sql");
117
+ expect(results[0].namespace).toBe(""); // Empty namespace for settings table
118
+ expect(results[0].path).toMatch(/^20251024_001_f000_t00\d_fragno_db_settings.sql$/);
106
119
 
107
120
  expect(results[1].namespace).toBe("apple-db");
108
121
  expect(results[1].path).toBe("20251024_002_f000_t001_apple-db.sql");
@@ -142,7 +155,7 @@ describe("generateMigrationsOrSchema - kysely", () => {
142
155
  // Settings table already at version 1, so no settings migration needed
143
156
  // But fragment migration is still generated
144
157
  expect(results).toHaveLength(2);
145
- expect(results[0].namespace).toBe("fragno-db-settings");
158
+ expect(results[0].namespace).toBe(""); // Empty namespace for settings table
146
159
  expect(results[1].namespace).toBe("test-db");
147
160
  expect(results[1].path).toBe("20251024_002_f000_t002_test-db.sql");
148
161
  expect(results[1].schema).toContain("create table");
@@ -170,7 +183,7 @@ describe("generateMigrationsOrSchema - kysely", () => {
170
183
 
171
184
  // Settings migration is generated, but no fragment migration (since toVersion=0)
172
185
  expect(results).toHaveLength(1);
173
- expect(results[0].namespace).toBe("fragno-db-settings");
186
+ expect(results[0].namespace).toBe(""); // Empty namespace for settings table
174
187
  });
175
188
 
176
189
  it("should throw error when no databases provided", async () => {
@@ -281,9 +294,19 @@ describe("generateMigrationsOrSchema - kysely", () => {
281
294
  });
282
295
 
283
296
  it("should include MySQL-specific foreign key checks in generated SQL", async () => {
284
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
285
- const mysqlDb = new Kysely({ dialect: new PostgresDialect({} as any) });
286
- const mysqlAdapter = new KyselyAdapter({ db: mysqlDb, provider: "mysql" });
297
+ const mysqlAdapter = new KyselyAdapter({
298
+ dialect: {
299
+ createAdapter: () => new MysqlAdapter(),
300
+ createDriver: () => new DummyDriver(),
301
+ createQueryCompiler: () => ({
302
+ compileQuery: () => ({
303
+ sql: "",
304
+ parameters: [],
305
+ }),
306
+ }),
307
+ },
308
+ driverConfig: new MySQL2DriverConfig(),
309
+ });
287
310
 
288
311
  vi.spyOn(mysqlAdapter, "isConnectionHealthy").mockResolvedValue(true);
289
312
  vi.spyOn(mysqlAdapter, "getSchemaVersion").mockResolvedValue(undefined);
@@ -316,9 +339,19 @@ describe("generateMigrationsOrSchema - kysely", () => {
316
339
  });
317
340
 
318
341
  it("should include SQLite-specific pragma in generated SQL", async () => {
319
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
320
- const sqliteDb = new Kysely({ dialect: new PostgresDialect({} as any) });
321
- const sqliteAdapter = new KyselyAdapter({ db: sqliteDb, provider: "sqlite" });
342
+ const sqliteAdapter = new KyselyAdapter({
343
+ dialect: {
344
+ createAdapter: () => new SqliteAdapter(),
345
+ createDriver: () => new DummyDriver(),
346
+ createQueryCompiler: () => ({
347
+ compileQuery: () => ({
348
+ sql: "",
349
+ parameters: [],
350
+ }),
351
+ }),
352
+ },
353
+ driverConfig: new SQLocalDriverConfig(),
354
+ });
322
355
 
323
356
  vi.spyOn(sqliteAdapter, "isConnectionHealthy").mockResolvedValue(true);
324
357
  vi.spyOn(sqliteAdapter, "getSchemaVersion").mockResolvedValue(undefined);
@@ -377,7 +410,7 @@ describe("postProcessMigrationFilenames", () => {
377
410
  {
378
411
  schema: "schema2",
379
412
  path: "placeholder.sql",
380
- namespace: "fragno-db-settings",
413
+ namespace: "", // Empty namespace for settings table
381
414
  fromVersion: 0,
382
415
  toVersion: 1,
383
416
  },
@@ -393,8 +426,8 @@ describe("postProcessMigrationFilenames", () => {
393
426
  const result = postProcessMigrationFilenames(files);
394
427
 
395
428
  expect(result).toHaveLength(3);
396
- expect(result[0].namespace).toBe("fragno-db-settings");
397
- expect(result[0].path).toBe("20251024_001_f000_t001_fragno-db-settings.sql");
429
+ expect(result[0].namespace).toBe(""); // Empty namespace for settings table
430
+ expect(result[0].path).toBe("20251024_001_f000_t001_fragno_db_settings.sql");
398
431
  });
399
432
 
400
433
  it("should sort non-settings namespaces alphabetically", () => {
@@ -435,9 +468,9 @@ describe("postProcessMigrationFilenames", () => {
435
468
  {
436
469
  schema: "CREATE TABLE users;",
437
470
  path: "placeholder.sql",
438
- namespace: "fragno-db-settings",
471
+ namespace: "", // Empty namespace for settings table
439
472
  fromVersion: 0,
440
- toVersion: 1,
473
+ toVersion: 5,
441
474
  },
442
475
  {
443
476
  schema: "CREATE TABLE comments;",
@@ -450,7 +483,7 @@ describe("postProcessMigrationFilenames", () => {
450
483
 
451
484
  const result = postProcessMigrationFilenames(files);
452
485
 
453
- expect(result[0].path).toBe("20251024_001_f000_t001_fragno-db-settings.sql");
486
+ expect(result[0].path).toBe("20251024_001_f000_t005_fragno_db_settings.sql");
454
487
  expect(result[1].path).toBe("20251024_002_f005_t010_comment-db.sql");
455
488
  });
456
489
 
@@ -514,7 +547,7 @@ describe("postProcessMigrationFilenames", () => {
514
547
  {
515
548
  schema: "schema2",
516
549
  path: "placeholder.sql",
517
- namespace: "fragno-db-settings",
550
+ namespace: "", // Empty namespace for settings table
518
551
  fromVersion: 0,
519
552
  toVersion: 5,
520
553
  },
@@ -537,8 +570,8 @@ describe("postProcessMigrationFilenames", () => {
537
570
  const result = postProcessMigrationFilenames(files);
538
571
 
539
572
  expect(result).toHaveLength(4);
540
- expect(result[0].namespace).toBe("fragno-db-settings");
541
- expect(result[0].path).toBe("20251024_001_f000_t005_fragno-db-settings.sql");
573
+ expect(result[0].namespace).toBe(""); // Empty namespace for settings table
574
+ expect(result[0].path).toBe("20251024_001_f000_t005_fragno_db_settings.sql");
542
575
  expect(result[1].namespace).toBe("apple-db");
543
576
  expect(result[1].path).toBe("20251024_002_f003_t004_apple-db.sql");
544
577
  expect(result[2].namespace).toBe("mango-db");