@fragno-dev/db 0.1.1 → 0.1.3

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 (222) hide show
  1. package/.turbo/turbo-build.log +196 -137
  2. package/CHANGELOG.md +18 -0
  3. package/LICENSE.md +16 -0
  4. package/dist/adapters/adapters.d.ts +11 -1
  5. package/dist/adapters/adapters.d.ts.map +1 -1
  6. package/dist/adapters/drizzle/drizzle-adapter.d.ts +9 -2
  7. package/dist/adapters/drizzle/drizzle-adapter.d.ts.map +1 -1
  8. package/dist/adapters/drizzle/drizzle-adapter.js +23 -39
  9. package/dist/adapters/drizzle/drizzle-adapter.js.map +1 -1
  10. package/dist/adapters/drizzle/drizzle-query.d.ts.map +1 -1
  11. package/dist/adapters/drizzle/drizzle-query.js +5 -4
  12. package/dist/adapters/drizzle/drizzle-query.js.map +1 -1
  13. package/dist/adapters/drizzle/drizzle-uow-compiler.js +12 -10
  14. package/dist/adapters/drizzle/drizzle-uow-compiler.js.map +1 -1
  15. package/dist/adapters/drizzle/drizzle-uow-decoder.js +14 -4
  16. package/dist/adapters/drizzle/drizzle-uow-decoder.js.map +1 -1
  17. package/dist/adapters/drizzle/drizzle-uow-executor.js +78 -60
  18. package/dist/adapters/drizzle/drizzle-uow-executor.js.map +1 -1
  19. package/dist/adapters/drizzle/generate.js +111 -37
  20. package/dist/adapters/drizzle/generate.js.map +1 -1
  21. package/dist/adapters/drizzle/shared.js +14 -1
  22. package/dist/adapters/drizzle/shared.js.map +1 -1
  23. package/dist/adapters/kysely/kysely-adapter.d.ts +2 -1
  24. package/dist/adapters/kysely/kysely-adapter.d.ts.map +1 -1
  25. package/dist/adapters/kysely/kysely-adapter.js +25 -30
  26. package/dist/adapters/kysely/kysely-adapter.js.map +1 -1
  27. package/dist/adapters/kysely/kysely-query-builder.js +48 -44
  28. package/dist/adapters/kysely/kysely-query-builder.js.map +1 -1
  29. package/dist/adapters/kysely/kysely-query-compiler.js +2 -2
  30. package/dist/adapters/kysely/kysely-query-compiler.js.map +1 -1
  31. package/dist/adapters/kysely/kysely-query.js +3 -2
  32. package/dist/adapters/kysely/kysely-query.js.map +1 -1
  33. package/dist/adapters/kysely/kysely-shared.js +18 -0
  34. package/dist/adapters/kysely/kysely-shared.js.map +1 -0
  35. package/dist/adapters/kysely/kysely-uow-compiler.js +4 -3
  36. package/dist/adapters/kysely/kysely-uow-compiler.js.map +1 -1
  37. package/dist/adapters/kysely/migration/execute.js +15 -12
  38. package/dist/adapters/kysely/migration/execute.js.map +1 -1
  39. package/dist/migration-engine/auto-from-schema.js +2 -8
  40. package/dist/migration-engine/auto-from-schema.js.map +1 -1
  41. package/dist/migration-engine/create.d.ts +1 -5
  42. package/dist/migration-engine/create.js +1 -1
  43. package/dist/migration-engine/create.js.map +1 -1
  44. package/dist/migration-engine/generation-engine.d.ts +51 -0
  45. package/dist/migration-engine/generation-engine.d.ts.map +1 -0
  46. package/dist/migration-engine/generation-engine.js +165 -0
  47. package/dist/migration-engine/generation-engine.js.map +1 -0
  48. package/dist/migration-engine/shared.d.ts +5 -2
  49. package/dist/migration-engine/shared.d.ts.map +1 -1
  50. package/dist/migration-engine/shared.js.map +1 -1
  51. package/dist/mod.d.ts +0 -8
  52. package/dist/mod.d.ts.map +1 -1
  53. package/dist/mod.js +0 -32
  54. package/dist/mod.js.map +1 -1
  55. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/alias.js +77 -0
  56. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/alias.js.map +1 -0
  57. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/casing.js +49 -0
  58. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/casing.js.map +1 -0
  59. package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/column-builder.js +1 -1
  60. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/column-builder.js.map +1 -0
  61. package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/column.js +1 -1
  62. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/column.js.map +1 -0
  63. package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/entity.js +1 -1
  64. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/entity.js.map +1 -0
  65. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/errors.js +21 -0
  66. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/errors.js.map +1 -0
  67. package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/pg-core/columns/common.js +1 -1
  68. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/pg-core/columns/common.js.map +1 -0
  69. package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/pg-core/columns/enum.js +1 -1
  70. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/pg-core/columns/enum.js.map +1 -0
  71. package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/pg-core/foreign-keys.js +1 -1
  72. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/pg-core/foreign-keys.js.map +1 -0
  73. package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/pg-core/unique-constraint.js +1 -1
  74. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/pg-core/unique-constraint.js.map +1 -0
  75. package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/pg-core/utils/array.js +1 -1
  76. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/pg-core/utils/array.js.map +1 -0
  77. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/query-builders/query-builder.js +14 -0
  78. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/query-builders/query-builder.js.map +1 -0
  79. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/query-promise.js +26 -0
  80. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/query-promise.js.map +1 -0
  81. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/relations.js +127 -0
  82. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/relations.js.map +1 -0
  83. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/selection-proxy.js +47 -0
  84. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/selection-proxy.js.map +1 -0
  85. package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/sql/expressions/conditions.js +20 -2
  86. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sql/expressions/conditions.js.map +1 -0
  87. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sql/expressions/select.js +13 -0
  88. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sql/expressions/select.js.map +1 -0
  89. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sql/functions/aggregate.js +10 -0
  90. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sql/functions/aggregate.js.map +1 -0
  91. package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/sql/sql.js +1 -1
  92. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sql/sql.js.map +1 -0
  93. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/columns/common.js +60 -0
  94. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/columns/common.js.map +1 -0
  95. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/db.js +269 -0
  96. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/db.js.map +1 -0
  97. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/dialect.js +457 -0
  98. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/dialect.js.map +1 -0
  99. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/foreign-keys.js +68 -0
  100. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/foreign-keys.js.map +1 -0
  101. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/count.js +41 -0
  102. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/count.js.map +1 -0
  103. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/delete.js +119 -0
  104. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/delete.js.map +1 -0
  105. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/insert.js +170 -0
  106. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/insert.js.map +1 -0
  107. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/query-builder.js +75 -0
  108. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/query-builder.js.map +1 -0
  109. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/query.js +107 -0
  110. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/query.js.map +1 -0
  111. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/raw.js +37 -0
  112. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/raw.js.map +1 -0
  113. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/select.js +621 -0
  114. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/select.js.map +1 -0
  115. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/update.js +170 -0
  116. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/update.js.map +1 -0
  117. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/table.js +20 -0
  118. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/table.js.map +1 -0
  119. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/unique-constraint.js +48 -0
  120. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/unique-constraint.js.map +1 -0
  121. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/utils.js +17 -0
  122. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/utils.js.map +1 -0
  123. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/view-base.js +11 -0
  124. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/view-base.js.map +1 -0
  125. package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/subquery.js +2 -2
  126. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/subquery.js.map +1 -0
  127. package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/table.js +8 -2
  128. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/table.js.map +1 -0
  129. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/table.utils.js +6 -0
  130. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/table.utils.js.map +1 -0
  131. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/tracing-utils.js +8 -0
  132. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/tracing-utils.js.map +1 -0
  133. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/tracing.js +8 -0
  134. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/tracing.js.map +1 -0
  135. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/utils.js +53 -0
  136. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/utils.js.map +1 -0
  137. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/view-common.js +6 -0
  138. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/view-common.js.map +1 -0
  139. package/dist/query/condition-builder.js.map +1 -1
  140. package/dist/query/result-transform.js +2 -1
  141. package/dist/query/result-transform.js.map +1 -1
  142. package/dist/schema/create.d.ts +74 -16
  143. package/dist/schema/create.d.ts.map +1 -1
  144. package/dist/schema/create.js +76 -11
  145. package/dist/schema/create.js.map +1 -1
  146. package/dist/schema/serialize.js +3 -0
  147. package/dist/schema/serialize.js.map +1 -1
  148. package/dist/shared/settings-schema.js +36 -0
  149. package/dist/shared/settings-schema.js.map +1 -0
  150. package/dist/util/import-generator.js.map +1 -1
  151. package/dist/util/parse.js.map +1 -1
  152. package/package.json +20 -23
  153. package/src/adapters/adapters.ts +10 -3
  154. package/src/adapters/drizzle/drizzle-adapter-pglite.test.ts +11 -7
  155. package/src/adapters/drizzle/drizzle-adapter-sqlite.test.ts +585 -0
  156. package/src/adapters/drizzle/drizzle-adapter.test.ts +78 -30
  157. package/src/adapters/drizzle/drizzle-adapter.ts +38 -78
  158. package/src/adapters/drizzle/drizzle-query.ts +6 -9
  159. package/src/adapters/drizzle/drizzle-uow-compiler.test.ts +10 -4
  160. package/src/adapters/drizzle/drizzle-uow-compiler.ts +12 -6
  161. package/src/adapters/drizzle/drizzle-uow-decoder.ts +22 -5
  162. package/src/adapters/drizzle/drizzle-uow-executor.ts +156 -116
  163. package/src/adapters/drizzle/generate.test.ts +582 -159
  164. package/src/adapters/drizzle/generate.ts +196 -41
  165. package/src/adapters/drizzle/migrate-drizzle.test.ts +30 -6
  166. package/src/adapters/drizzle/shared.ts +31 -1
  167. package/src/adapters/drizzle/test-utils.ts +3 -1
  168. package/src/adapters/kysely/kysely-adapter-pglite.test.ts +25 -27
  169. package/src/adapters/kysely/kysely-adapter.ts +35 -58
  170. package/src/adapters/kysely/kysely-query-builder.ts +75 -44
  171. package/src/adapters/kysely/kysely-query-compiler.ts +3 -1
  172. package/src/adapters/kysely/kysely-query.ts +8 -2
  173. package/src/adapters/kysely/kysely-shared.ts +23 -0
  174. package/src/adapters/kysely/kysely-uow-compiler.ts +5 -2
  175. package/src/adapters/kysely/migration/execute-mysql.test.ts +2 -2
  176. package/src/adapters/kysely/migration/execute-postgres.test.ts +19 -19
  177. package/src/adapters/kysely/migration/execute.ts +48 -17
  178. package/src/adapters/kysely/migration/kysely-migrator.test.ts +19 -37
  179. package/src/fragment.test.ts +1 -0
  180. package/src/migration-engine/auto-from-schema.ts +14 -18
  181. package/src/migration-engine/create.ts +1 -6
  182. package/src/migration-engine/generation-engine.test.ts +597 -0
  183. package/src/migration-engine/generation-engine.ts +356 -0
  184. package/src/migration-engine/shared.ts +1 -4
  185. package/src/mod.ts +0 -66
  186. package/src/query/condition-builder.ts +24 -8
  187. package/src/query/result-transform.ts +7 -1
  188. package/src/schema/create.test.ts +4 -1
  189. package/src/schema/create.ts +132 -24
  190. package/src/schema/serialize.test.ts +1 -0
  191. package/src/schema/serialize.ts +28 -7
  192. package/src/shared/settings-schema.ts +61 -0
  193. package/src/util/deep-equal.ts +21 -7
  194. package/src/util/import-generator.ts +3 -1
  195. package/src/util/parse.ts +3 -1
  196. package/tsdown.config.ts +1 -0
  197. package/.turbo/turbo-test.log +0 -37
  198. package/.turbo/turbo-types$colon$check.log +0 -1
  199. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/column-builder.js.map +0 -1
  200. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/column.js.map +0 -1
  201. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/entity.js.map +0 -1
  202. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/pg-core/columns/common.js.map +0 -1
  203. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/pg-core/columns/enum.js.map +0 -1
  204. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/pg-core/foreign-keys.js.map +0 -1
  205. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/pg-core/unique-constraint.js.map +0 -1
  206. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/pg-core/utils/array.js.map +0 -1
  207. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/expressions/conditions.js.map +0 -1
  208. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/expressions/select.js +0 -13
  209. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/expressions/select.js.map +0 -1
  210. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/functions/aggregate.js +0 -10
  211. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/functions/aggregate.js.map +0 -1
  212. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/sql.js.map +0 -1
  213. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/subquery.js.map +0 -1
  214. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/table.js.map +0 -1
  215. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/table.utils.js +0 -6
  216. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/table.utils.js.map +0 -1
  217. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/tracing-utils.js +0 -8
  218. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/tracing-utils.js.map +0 -1
  219. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/tracing.js +0 -8
  220. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/tracing.js.map +0 -1
  221. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/view-common.js +0 -6
  222. package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/view-common.js.map +0 -1
@@ -15,7 +15,7 @@ describe("DrizzleAdapter", () => {
15
15
  provider: "postgresql",
16
16
  });
17
17
 
18
- const generator = adapter.createSchemaGenerator(testSchema, "test");
18
+ const generator = adapter.createSchemaGenerator([{ schema: testSchema, namespace: "test" }]);
19
19
  const result = generator.generateSchema({ path: "schema.ts" });
20
20
 
21
21
  expect(result.path).toBe("schema.ts");
@@ -23,22 +23,38 @@ describe("DrizzleAdapter", () => {
23
23
  "import { pgTable, varchar, text, bigserial, integer, uniqueIndex } from "drizzle-orm/pg-core"
24
24
  import { createId } from "@fragno-dev/db/id"
25
25
 
26
- export const users = pgTable("users", {
27
- id: varchar("id", { length: 30 }).notNull().$defaultFn(() => createId()),
28
- name: text("name").notNull(),
29
- _internalId: bigserial("_internalId", { mode: "number" }).primaryKey().notNull(),
30
- _version: integer("_version").notNull().default(0)
31
- })
26
+ // ============================================================================
27
+ // Settings Table (shared across all fragments)
28
+ // ============================================================================
32
29
 
33
30
  export const fragno_db_settings = pgTable("fragno_db_settings", {
34
31
  id: varchar("id", { length: 30 }).notNull().$defaultFn(() => createId()),
35
32
  key: text("key").notNull(),
36
- value: text("value").notNull().default("1"),
33
+ value: text("value").notNull(),
37
34
  _internalId: bigserial("_internalId", { mode: "number" }).primaryKey().notNull(),
38
35
  _version: integer("_version").notNull().default(0)
39
36
  }, (table) => [
40
37
  uniqueIndex("unique_key").on(table.key)
41
- ])"
38
+ ])
39
+
40
+ export const fragnoDbSettingSchemaVersion = 1;
41
+
42
+ // ============================================================================
43
+ // Fragment: test
44
+ // ============================================================================
45
+
46
+ export const users_test = pgTable("users_test", {
47
+ id: varchar("id", { length: 30 }).notNull().$defaultFn(() => createId()),
48
+ name: text("name").notNull(),
49
+ _internalId: bigserial("_internalId", { mode: "number" }).primaryKey().notNull(),
50
+ _version: integer("_version").notNull().default(0)
51
+ })
52
+
53
+ export const test_schema = {
54
+ "users_test": users_test,
55
+ users: users_test,
56
+ schemaVersion: 1
57
+ }"
42
58
  `);
43
59
  });
44
60
 
@@ -48,7 +64,7 @@ describe("DrizzleAdapter", () => {
48
64
  provider: "sqlite",
49
65
  });
50
66
 
51
- const generator = adapter.createSchemaGenerator(testSchema, "test");
67
+ const generator = adapter.createSchemaGenerator([{ schema: testSchema, namespace: "test" }]);
52
68
  const result = generator.generateSchema({ path: "schema.ts" });
53
69
 
54
70
  expect(result.path).toBe("schema.ts");
@@ -56,22 +72,38 @@ describe("DrizzleAdapter", () => {
56
72
  "import { sqliteTable, text, integer, uniqueIndex } from "drizzle-orm/sqlite-core"
57
73
  import { createId } from "@fragno-dev/db/id"
58
74
 
59
- export const users = sqliteTable("users", {
60
- id: text("id").notNull().$defaultFn(() => createId()),
61
- name: text("name").notNull(),
62
- _internalId: integer("_internalId").primaryKey().autoincrement().notNull(),
63
- _version: integer("_version").notNull().default(0)
64
- })
75
+ // ============================================================================
76
+ // Settings Table (shared across all fragments)
77
+ // ============================================================================
65
78
 
66
79
  export const fragno_db_settings = sqliteTable("fragno_db_settings", {
67
80
  id: text("id").notNull().$defaultFn(() => createId()),
68
81
  key: text("key").notNull(),
69
- value: text("value").notNull().default("1"),
70
- _internalId: integer("_internalId").primaryKey().autoincrement().notNull(),
82
+ value: text("value").notNull(),
83
+ _internalId: integer("_internalId").primaryKey({ autoIncrement: true }).notNull(),
71
84
  _version: integer("_version").notNull().default(0)
72
85
  }, (table) => [
73
86
  uniqueIndex("unique_key").on(table.key)
74
- ])"
87
+ ])
88
+
89
+ export const fragnoDbSettingSchemaVersion = 1;
90
+
91
+ // ============================================================================
92
+ // Fragment: test
93
+ // ============================================================================
94
+
95
+ export const users_test = sqliteTable("users_test", {
96
+ id: text("id").notNull().$defaultFn(() => createId()),
97
+ name: text("name").notNull(),
98
+ _internalId: integer("_internalId").primaryKey({ autoIncrement: true }).notNull(),
99
+ _version: integer("_version").notNull().default(0)
100
+ })
101
+
102
+ export const test_schema = {
103
+ "users_test": users_test,
104
+ users: users_test,
105
+ schemaVersion: 1
106
+ }"
75
107
  `);
76
108
  });
77
109
 
@@ -81,10 +113,10 @@ describe("DrizzleAdapter", () => {
81
113
  provider: "postgresql",
82
114
  });
83
115
 
84
- const generator = adapter.createSchemaGenerator(testSchema, "myapp");
116
+ const generator = adapter.createSchemaGenerator([{ schema: testSchema, namespace: "myapp" }]);
85
117
  const result = generator.generateSchema();
86
118
 
87
- expect(result.path).toBe("drizzle-schema-myapp.ts");
119
+ expect(result.path).toBe("fragno-schema.ts");
88
120
  });
89
121
 
90
122
  it("should preserve original schema tables", () => {
@@ -93,7 +125,7 @@ describe("DrizzleAdapter", () => {
93
125
  provider: "postgresql",
94
126
  });
95
127
 
96
- const generator = adapter.createSchemaGenerator(testSchema, "test");
128
+ const generator = adapter.createSchemaGenerator([{ schema: testSchema, namespace: "test" }]);
97
129
  const result = generator.generateSchema();
98
130
 
99
131
  // Original table should still be there
@@ -101,22 +133,38 @@ describe("DrizzleAdapter", () => {
101
133
  "import { pgTable, varchar, text, bigserial, integer, uniqueIndex } from "drizzle-orm/pg-core"
102
134
  import { createId } from "@fragno-dev/db/id"
103
135
 
104
- export const users = pgTable("users", {
105
- id: varchar("id", { length: 30 }).notNull().$defaultFn(() => createId()),
106
- name: text("name").notNull(),
107
- _internalId: bigserial("_internalId", { mode: "number" }).primaryKey().notNull(),
108
- _version: integer("_version").notNull().default(0)
109
- })
136
+ // ============================================================================
137
+ // Settings Table (shared across all fragments)
138
+ // ============================================================================
110
139
 
111
140
  export const fragno_db_settings = pgTable("fragno_db_settings", {
112
141
  id: varchar("id", { length: 30 }).notNull().$defaultFn(() => createId()),
113
142
  key: text("key").notNull(),
114
- value: text("value").notNull().default("1"),
143
+ value: text("value").notNull(),
115
144
  _internalId: bigserial("_internalId", { mode: "number" }).primaryKey().notNull(),
116
145
  _version: integer("_version").notNull().default(0)
117
146
  }, (table) => [
118
147
  uniqueIndex("unique_key").on(table.key)
119
- ])"
148
+ ])
149
+
150
+ export const fragnoDbSettingSchemaVersion = 1;
151
+
152
+ // ============================================================================
153
+ // Fragment: test
154
+ // ============================================================================
155
+
156
+ export const users_test = pgTable("users_test", {
157
+ id: varchar("id", { length: 30 }).notNull().$defaultFn(() => createId()),
158
+ name: text("name").notNull(),
159
+ _internalId: bigserial("_internalId", { mode: "number" }).primaryKey().notNull(),
160
+ _version: integer("_version").notNull().default(0)
161
+ })
162
+
163
+ export const test_schema = {
164
+ "users_test": users_test,
165
+ users: users_test,
166
+ schemaVersion: 1
167
+ }"
120
168
  `);
121
169
  });
122
170
  });
@@ -1,19 +1,12 @@
1
1
  import type { DatabaseAdapter } from "../adapters";
2
- import {
3
- column,
4
- idColumn,
5
- schema,
6
- SchemaBuilder,
7
- type AnySchema,
8
- type FragnoId,
9
- } from "../../schema/create";
2
+ import { type AnySchema } from "../../schema/create";
10
3
  import type { AbstractQuery } from "../../query/query";
11
4
  import type { SchemaGenerator } from "../../schema-generator/schema-generator";
12
5
  import { generateSchema } from "./generate";
13
6
  import { fromDrizzle, type DrizzleUOWConfig } from "./drizzle-query";
14
- import { createId } from "../../id";
15
-
16
- const SETTINGS_TABLE_NAME = "fragno_db_settings" as const;
7
+ import { createTableNameMapper, type DBType, type DrizzleResult } from "./shared";
8
+ import { createSettingsManager, settingsSchema } from "../../shared/settings-schema";
9
+ import { sql } from "drizzle-orm";
17
10
 
18
11
  export interface DrizzleConfig {
19
12
  db: unknown;
@@ -27,92 +20,59 @@ export class DrizzleAdapter implements DatabaseAdapter<DrizzleUOWConfig> {
27
20
  this.#drizzleConfig = config;
28
21
  }
29
22
 
30
- #createFullSchema<T extends AnySchema>(schema: T) {
31
- return new SchemaBuilder()
32
- .mergeWithExistingSchema(schema)
33
- .mergeWithExistingSchema(createSettingsSchema(schema.version))
34
- .build();
23
+ get provider(): "sqlite" | "mysql" | "postgresql" {
24
+ return this.#drizzleConfig.provider;
25
+ }
26
+
27
+ async isConnectionHealthy(): Promise<boolean> {
28
+ try {
29
+ const result = await (this.#drizzleConfig.db as DBType).execute(sql`SELECT 1 as healthy`);
30
+
31
+ // Handle different result formats across providers
32
+ // PostgreSQL/MySQL: { rows: [...] }
33
+ // SQLite: array directly or { rows: [...] }
34
+ if (Array.isArray(result)) {
35
+ return result.length > 0 && result[0]["healthy"] === 1;
36
+ } else {
37
+ const drizzleResult = result as DrizzleResult;
38
+ return drizzleResult.rows[0]["healthy"] === 1;
39
+ }
40
+ } catch {
41
+ return false;
42
+ }
35
43
  }
36
44
 
37
45
  async getSchemaVersion(namespace: string): Promise<string | undefined> {
38
- const queryEngine = this.createQueryEngine(createSettingsSchema(0), namespace);
46
+ const queryEngine = this.createQueryEngine(settingsSchema, namespace);
39
47
  const manager = createSettingsManager(queryEngine, namespace);
40
- const randomId = createId();
41
-
42
- const result = await manager.createKeyWithDefault(randomId);
43
- if (result) {
44
- await manager.delete(result.id);
45
- }
46
48
 
49
+ // Try to read the version key directly
50
+ const result = await manager.get("version");
47
51
  return result?.value;
48
52
  }
49
53
 
50
54
  createQueryEngine<TSchema extends AnySchema>(
51
55
  schema: TSchema,
52
- _namespace: string,
56
+ namespace: string,
53
57
  ): AbstractQuery<TSchema, DrizzleUOWConfig> {
54
- return fromDrizzle(schema, this.#drizzleConfig);
58
+ // Only create mapper if namespace is non-empty
59
+ const mapper = namespace ? createTableNameMapper(namespace) : undefined;
60
+ return fromDrizzle(schema, this.#drizzleConfig, mapper);
55
61
  }
56
62
 
57
- createSchemaGenerator(schema: AnySchema, namespace: string): SchemaGenerator {
63
+ createSchemaGenerator(
64
+ fragments: { schema: AnySchema; namespace: string }[],
65
+ options?: { path?: string },
66
+ ): SchemaGenerator {
58
67
  return {
59
- generateSchema: (options) => {
60
- const path = options?.path ?? `drizzle-schema-${namespace}.ts`;
61
-
62
- const schemaWithSettingsTable = this.#createFullSchema(schema);
68
+ generateSchema: (genOptions) => {
69
+ const path = genOptions?.path ?? options?.path ?? "fragno-schema.ts";
63
70
 
64
71
  return {
65
- schema: generateSchema(schemaWithSettingsTable, this.#drizzleConfig.provider),
72
+ schema: generateSchema(fragments, this.#drizzleConfig.provider),
66
73
  path,
67
74
  };
68
75
  },
69
76
  };
70
77
  }
71
78
  }
72
-
73
- function createSettingsSchema(version: number) {
74
- return schema((s) => {
75
- return s.addTable(SETTINGS_TABLE_NAME, (t) => {
76
- return t
77
- .addColumn("id", idColumn())
78
- .addColumn("key", column("string"))
79
- .addColumn("value", column("string").defaultTo(String(version)))
80
- .createIndex("unique_key", ["key"], { unique: true });
81
- });
82
- });
83
- }
84
-
85
- function createSettingsManager(
86
- queryEngine: AbstractQuery<ReturnType<typeof createSettingsSchema>, DrizzleUOWConfig>,
87
- namespace: string,
88
- ) {
89
- return {
90
- async createKeyWithDefault(key: string) {
91
- const writeUow = queryEngine
92
- .createUnitOfWork("createKeyWithDefault")
93
- .create(SETTINGS_TABLE_NAME, {
94
- key: `${namespace}.${key}`,
95
- });
96
- const { success } = await writeUow.executeMutations();
97
- if (!success) {
98
- throw new Error("Failed to create key with default");
99
- }
100
-
101
- return this.get(key);
102
- },
103
-
104
- async get(key: string): Promise<{ id: FragnoId; key: string; value: string } | undefined> {
105
- const uow = queryEngine
106
- .createUnitOfWork()
107
- .find(SETTINGS_TABLE_NAME, (b) =>
108
- b.whereIndex("unique_key", (eb) => eb("key", "=", `${namespace}.${key}`)),
109
- );
110
- const [[result]] = await uow.executeRetrieve();
111
- return result; // FIXME: result should be maybe undefined
112
- },
113
-
114
- async delete(id: FragnoId) {
115
- await queryEngine.delete(SETTINGS_TABLE_NAME, id);
116
- },
117
- };
118
- }
@@ -5,14 +5,9 @@ import type { CompiledMutation, UOWExecutor } from "../../query/unit-of-work";
5
5
  import { createDrizzleUOWCompiler, type DrizzleCompiledQuery } from "./drizzle-uow-compiler";
6
6
  import { executeDrizzleRetrievalPhase, executeDrizzleMutationPhase } from "./drizzle-uow-executor";
7
7
  import { UnitOfWork } from "../../query/unit-of-work";
8
- import { parseDrizzle } from "./shared";
8
+ import { parseDrizzle, type DrizzleResult, type TableNameMapper } from "./shared";
9
9
  import { createDrizzleUOWDecoder } from "./drizzle-uow-decoder";
10
10
 
11
- export interface DrizzleResult {
12
- rows: Record<string, unknown>[];
13
- affectedRows: number;
14
- }
15
-
16
11
  /**
17
12
  * Configuration options for creating a Drizzle Unit of Work
18
13
  */
@@ -33,6 +28,7 @@ export interface DrizzleUOWConfig {
33
28
  *
34
29
  * @param schema - The database schema definition
35
30
  * @param config - Drizzle configuration containing the database instance and provider
31
+ * @param mapper - Optional table name mapper for namespace prefixing
36
32
  * @returns An AbstractQuery instance for performing database operations
37
33
  *
38
34
  * @example
@@ -48,18 +44,19 @@ export interface DrizzleUOWConfig {
48
44
  export function fromDrizzle<T extends AnySchema>(
49
45
  schema: T,
50
46
  config: DrizzleConfig,
47
+ mapper?: TableNameMapper,
51
48
  ): AbstractQuery<T, DrizzleUOWConfig> {
52
49
  const [db] = parseDrizzle(config.db);
53
50
  const { provider } = config;
54
51
 
55
52
  function createUOW(name?: string, uowConfig?: DrizzleUOWConfig) {
56
- const uowCompiler = createDrizzleUOWCompiler(schema, config, uowConfig?.onQuery);
53
+ const uowCompiler = createDrizzleUOWCompiler(schema, config, mapper, uowConfig?.onQuery);
57
54
 
58
55
  const executor: UOWExecutor<DrizzleCompiledQuery, DrizzleResult> = {
59
56
  executeRetrievalPhase: (retrievalBatch: DrizzleCompiledQuery[]) =>
60
- executeDrizzleRetrievalPhase(db, retrievalBatch),
57
+ executeDrizzleRetrievalPhase(db, retrievalBatch, provider),
61
58
  executeMutationPhase: (mutationBatch: CompiledMutation<DrizzleCompiledQuery>[]) =>
62
- executeDrizzleMutationPhase(db, mutationBatch),
59
+ executeDrizzleMutationPhase(db, mutationBatch, provider),
63
60
  };
64
61
 
65
62
  const decoder = createDrizzleUOWDecoder(schema, provider);
@@ -755,9 +755,15 @@ describe("drizzle-uow-compiler", () => {
755
755
  return t
756
756
  .addColumn("id", idColumn())
757
757
  .addColumn("message", column("string"))
758
- .addColumn("sessionId", column("string").defaultTo$("auto")) // runtime auto
759
- .addColumn("timestamp", column("timestamp").defaultTo$("now")) // runtime now
760
- .addColumn("counter", column("integer").defaultTo$((() => 42) as () => number)) // runtime function
758
+ .addColumn(
759
+ "sessionId",
760
+ column("string").defaultTo$((b) => b.cuid()),
761
+ ) // runtime cuid
762
+ .addColumn(
763
+ "timestamp",
764
+ column("timestamp").defaultTo$((b) => b.now()),
765
+ ) // runtime now
766
+ .addColumn("counter", column("integer").defaultTo$(42)) // runtime function
761
767
  .addColumn("status", column("string").defaultTo("pending")) // static default
762
768
  .createIndex("idx_session", ["sessionId"]);
763
769
  });
@@ -947,7 +953,7 @@ describe("drizzle-uow-compiler", () => {
947
953
  return async () => {
948
954
  await cleanup();
949
955
  };
950
- }, 15000);
956
+ }, 20000);
951
957
 
952
958
  function createNestedUOW(name?: string) {
953
959
  const compiler = createDrizzleUOWCompiler(nestedSchema, nestedConfig);
@@ -9,7 +9,7 @@ import type {
9
9
  } from "../../query/unit-of-work";
10
10
  import { buildCondition, type Condition } from "../../query/condition-builder";
11
11
  import type { DrizzleConfig } from "./drizzle-adapter";
12
- import { type ColumnType, type TableType, parseDrizzle } from "./shared";
12
+ import { type ColumnType, type TableType, type TableNameMapper, parseDrizzle } from "./shared";
13
13
  import { encodeValues, ReferenceSubquery } from "../../query/result-transform";
14
14
  import { serialize } from "../../schema/serialize";
15
15
  import { decodeCursor, serializeCursorValues } from "../../query/cursor";
@@ -29,12 +29,14 @@ export type DrizzleCompiledQuery = {
29
29
  *
30
30
  * @param schema - The database schema
31
31
  * @param config - Drizzle configuration
32
+ * @param mapper - Optional table name mapper for namespace prefixing
32
33
  * @param onQuery - Optional callback to receive compiled queries for logging/debugging
33
34
  * @returns A UOWCompiler instance for Drizzle
34
35
  */
35
36
  export function createDrizzleUOWCompiler<TSchema extends AnySchema>(
36
37
  schema: TSchema,
37
38
  config: DrizzleConfig,
39
+ mapper?: TableNameMapper,
38
40
  onQuery?: (query: DrizzleCompiledQuery) => void,
39
41
  ): UOWCompiler<TSchema, DrizzleCompiledQuery> {
40
42
  const [db, drizzleTables] = parseDrizzle(config.db);
@@ -45,14 +47,15 @@ export function createDrizzleUOWCompiler<TSchema extends AnySchema>(
45
47
  * @throws Error if table is not found in Drizzle schema
46
48
  */
47
49
  function toDrizzleTable(table: AnyTable): TableType {
48
- const tableName = table.ormName;
49
- const out = drizzleTables[tableName];
50
+ // Map logical table name to physical table name using the mapper
51
+ const physicalTableName = mapper ? mapper.toPhysical(table.ormName) : table.ormName;
52
+ const out = drizzleTables[physicalTableName];
50
53
  if (out) {
51
54
  return out;
52
55
  }
53
56
 
54
57
  throw new Error(
55
- `[Drizzle] Unknown table name ${tableName}, is it included in your Drizzle schema?`,
58
+ `[Drizzle] Unknown table name ${physicalTableName} (logical: ${table.ormName}), is it included in your Drizzle schema?`,
56
59
  );
57
60
  }
58
61
 
@@ -150,7 +153,9 @@ export function createDrizzleUOWCompiler<TSchema extends AnySchema>(
150
153
 
151
154
  if (condition.type === "not") {
152
155
  const result = buildWhere(condition.item);
153
- if (!result) return;
156
+ if (!result) {
157
+ return;
158
+ }
154
159
 
155
160
  return Drizzle.not(result);
156
161
  }
@@ -435,7 +440,8 @@ export function createDrizzleUOWCompiler<TSchema extends AnySchema>(
435
440
  queryConfig.with = processJoins(joins);
436
441
  }
437
442
 
438
- const compiledQuery = db.query[op.table.ormName].findMany(queryConfig).toSQL();
443
+ const physicalTableName = mapper ? mapper.toPhysical(op.table.ormName) : op.table.ormName;
444
+ const compiledQuery = db.query[physicalTableName].findMany(queryConfig).toSQL();
439
445
  onQuery?.(compiledQuery);
440
446
  return compiledQuery;
441
447
  }
@@ -2,8 +2,8 @@ import type { AnySchema, AnyTable } from "../../schema/create";
2
2
  import type { SQLProvider } from "../../shared/providers";
3
3
  import type { RetrievalOperation, UOWDecoder } from "../../query/unit-of-work";
4
4
  import { decodeResult } from "../../query/result-transform";
5
- import type { DrizzleResult } from "./drizzle-query";
6
5
  import { getOrderedJoinColumns } from "./join-column-utils";
6
+ import type { DrizzleResult } from "./shared";
7
7
 
8
8
  /**
9
9
  * Join information with nested join support
@@ -92,6 +92,7 @@ function transformJoinArraysToObjects(
92
92
  joins?: JoinInfo[];
93
93
  };
94
94
  },
95
+ provider: SQLProvider,
95
96
  ): Record<string, unknown> {
96
97
  // Only process find operations with joins
97
98
  if (op.type !== "find" || !op.options?.joins) {
@@ -102,7 +103,17 @@ function transformJoinArraysToObjects(
102
103
 
103
104
  for (const join of op.options.joins) {
104
105
  const relationName = join.relation.name;
105
- const value = row[relationName];
106
+ let value = row[relationName];
107
+
108
+ // For SQLite, json_array returns a JSON string that needs to be parsed
109
+ if (provider === "sqlite" && typeof value === "string") {
110
+ try {
111
+ value = JSON.parse(value) as unknown;
112
+ } catch {
113
+ // If parsing fails, skip this join
114
+ continue;
115
+ }
116
+ }
106
117
 
107
118
  // Skip if not an array (join didn't return data)
108
119
  if (!Array.isArray(value)) {
@@ -149,15 +160,21 @@ export function createDrizzleUOWDecoder<TSchema extends AnySchema>(
149
160
  // Handle count operations - return the count value directly
150
161
  if (op.type === "count") {
151
162
  if (result.rows.length > 0 && result.rows[0]) {
152
- const row = result.rows[0];
153
- return (row as Record<string, unknown>)["count"] as number;
163
+ const row = result.rows[0] as Record<string, unknown>;
164
+ const countValue = row["count"] ?? row["count(*)"];
165
+
166
+ if (typeof countValue !== "number") {
167
+ throw new Error(`Unexpected result for count, received: ${countValue}`);
168
+ }
169
+
170
+ return countValue;
154
171
  }
155
172
  return 0;
156
173
  }
157
174
 
158
175
  // Handle find operations - decode each row
159
176
  return result.rows.map((row) => {
160
- const transformedRow = transformJoinArraysToObjects(row, op);
177
+ const transformedRow = transformJoinArraysToObjects(row, op, provider);
161
178
  return decodeResult(transformedRow, op.table, provider);
162
179
  });
163
180
  });