@fragno-dev/db 0.1.8 → 0.1.9

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 (119) hide show
  1. package/.turbo/turbo-build.log +103 -101
  2. package/CHANGELOG.md +6 -0
  3. package/dist/adapters/drizzle/drizzle-adapter.d.ts.map +1 -1
  4. package/dist/adapters/drizzle/drizzle-adapter.js +1 -1
  5. package/dist/adapters/drizzle/drizzle-query.d.ts +5 -0
  6. package/dist/adapters/drizzle/drizzle-query.js +40 -16
  7. package/dist/adapters/drizzle/drizzle-query.js.map +1 -1
  8. package/dist/adapters/drizzle/drizzle-uow-compiler.js +12 -21
  9. package/dist/adapters/drizzle/drizzle-uow-compiler.js.map +1 -1
  10. package/dist/adapters/drizzle/drizzle-uow-executor.js +3 -3
  11. package/dist/adapters/drizzle/generate.d.ts +24 -0
  12. package/dist/adapters/drizzle/generate.d.ts.map +1 -0
  13. package/dist/adapters/drizzle/generate.js +34 -18
  14. package/dist/adapters/drizzle/generate.js.map +1 -1
  15. package/dist/adapters/drizzle/shared.js +13 -4
  16. package/dist/adapters/drizzle/shared.js.map +1 -1
  17. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/alias.js +1 -1
  18. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/alias.js.map +1 -1
  19. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/casing.js +1 -1
  20. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/casing.js.map +1 -1
  21. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/column-builder.js +1 -1
  22. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/column-builder.js.map +1 -1
  23. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/column.js +1 -1
  24. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/column.js.map +1 -1
  25. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/entity.js +1 -1
  26. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/entity.js.map +1 -1
  27. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/errors.js +1 -1
  28. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/errors.js.map +1 -1
  29. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/columns/common.js +1 -1
  30. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/columns/common.js.map +1 -1
  31. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/columns/enum.js +1 -1
  32. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/columns/enum.js.map +1 -1
  33. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/foreign-keys.js +1 -1
  34. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/foreign-keys.js.map +1 -1
  35. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/unique-constraint.js +1 -1
  36. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/unique-constraint.js.map +1 -1
  37. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/utils/array.js +1 -1
  38. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/utils/array.js.map +1 -1
  39. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/query-builders/query-builder.js +1 -1
  40. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/query-builders/query-builder.js.map +1 -1
  41. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/query-promise.js +1 -1
  42. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/query-promise.js.map +1 -1
  43. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/relations.js +1 -1
  44. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/relations.js.map +1 -1
  45. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/selection-proxy.js +1 -1
  46. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/selection-proxy.js.map +1 -1
  47. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/expressions/conditions.js +1 -1
  48. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/expressions/conditions.js.map +1 -1
  49. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/expressions/select.js +1 -1
  50. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/expressions/select.js.map +1 -1
  51. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/functions/aggregate.js +1 -1
  52. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/functions/aggregate.js.map +1 -1
  53. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/sql.js +1 -1
  54. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/sql.js.map +1 -1
  55. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/columns/common.js +1 -1
  56. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/columns/common.js.map +1 -1
  57. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/db.js +1 -1
  58. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/db.js.map +1 -1
  59. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/dialect.js +1 -1
  60. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/dialect.js.map +1 -1
  61. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/foreign-keys.js +1 -1
  62. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/foreign-keys.js.map +1 -1
  63. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/count.js +1 -1
  64. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/count.js.map +1 -1
  65. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/delete.js +1 -1
  66. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/delete.js.map +1 -1
  67. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/insert.js +1 -1
  68. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/insert.js.map +1 -1
  69. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/query-builder.js +1 -1
  70. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/query-builder.js.map +1 -1
  71. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/query.js +1 -1
  72. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/query.js.map +1 -1
  73. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/raw.js +1 -1
  74. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/raw.js.map +1 -1
  75. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/select.js +1 -1
  76. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/select.js.map +1 -1
  77. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/update.js +1 -1
  78. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/update.js.map +1 -1
  79. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/table.js +1 -1
  80. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/table.js.map +1 -1
  81. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/unique-constraint.js +1 -1
  82. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/unique-constraint.js.map +1 -1
  83. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/utils.js +1 -1
  84. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/utils.js.map +1 -1
  85. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/view-base.js +1 -1
  86. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/view-base.js.map +1 -1
  87. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/subquery.js +1 -1
  88. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/subquery.js.map +1 -1
  89. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/table.js +1 -1
  90. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/table.js.map +1 -1
  91. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d/node_modules/drizzle-orm/table.utils.js +6 -0
  92. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/table.utils.js.map +1 -1
  93. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d/node_modules/drizzle-orm/tracing-utils.js +8 -0
  94. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/tracing-utils.js.map +1 -1
  95. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d/node_modules/drizzle-orm/tracing.js +8 -0
  96. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/tracing.js.map +1 -1
  97. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/utils.js +1 -1
  98. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/utils.js.map +1 -1
  99. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/view-common.js +1 -1
  100. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/view-common.js.map +1 -1
  101. package/dist/query/unit-of-work.d.ts +6 -2
  102. package/dist/query/unit-of-work.d.ts.map +1 -1
  103. package/dist/query/unit-of-work.js +19 -3
  104. package/dist/query/unit-of-work.js.map +1 -1
  105. package/package.json +8 -3
  106. package/src/adapters/drizzle/drizzle-adapter.test.ts +3 -3
  107. package/src/adapters/drizzle/drizzle-query.test.ts +449 -0
  108. package/src/adapters/drizzle/drizzle-query.ts +58 -21
  109. package/src/adapters/drizzle/drizzle-uow-compiler.test.ts +97 -0
  110. package/src/adapters/drizzle/drizzle-uow-compiler.ts +16 -7
  111. package/src/adapters/drizzle/generate.test.ts +168 -56
  112. package/src/adapters/drizzle/generate.ts +80 -21
  113. package/src/adapters/drizzle/shared.ts +14 -4
  114. package/src/adapters/drizzle/test-utils.ts +1 -0
  115. package/src/query/unit-of-work.ts +28 -0
  116. package/tsdown.config.ts +1 -0
  117. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260/node_modules/drizzle-orm/table.utils.js +0 -6
  118. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260/node_modules/drizzle-orm/tracing-utils.js +0 -8
  119. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260/node_modules/drizzle-orm/tracing.js +0 -8
@@ -4,11 +4,12 @@ import {
4
4
  type AnyColumn,
5
5
  type AnySchema,
6
6
  type AnyTable,
7
+ type Relation,
7
8
  InternalIdColumn,
8
9
  } from "../../schema/create";
9
10
  import type { SQLProvider } from "../../shared/providers";
10
11
  import { schemaToDBType, type DBTypeLiteral } from "../../schema/serialize";
11
- import { createTableNameMapper } from "./shared";
12
+ import { createTableNameMapper, sanitizeNamespace } from "./shared";
12
13
  import { settingsSchema, SETTINGS_TABLE_NAME } from "../../shared/settings-schema";
13
14
 
14
15
  // ============================================================================
@@ -407,10 +408,13 @@ function generateTable(
407
408
  const columns = generateAllColumns(ctx, table, customTypes);
408
409
  const constraints = generateTableConstraints(ctx, table, namespace);
409
410
 
410
- // Suffix table name with namespace if provided
411
- const physicalTableName = namespace ? `${table.ormName}_${namespace}` : table.ormName;
412
- // Sanitize namespace for use in export name (valid JS identifier)
413
- const exportName = namespace ? `${table.ormName}_${sanitizeNamespace(namespace)}` : table.ormName;
411
+ // Suffix table name with namespace if provided, and sanitize for use as database table name
412
+ // Database table names must also be valid identifiers to work with Drizzle's relational query system
413
+ const physicalTableName = namespace
414
+ ? `${table.ormName}_${sanitizeNamespace(namespace)}`
415
+ : table.ormName;
416
+ // Same sanitized name for TypeScript export
417
+ const exportName = physicalTableName;
414
418
 
415
419
  const args: string[] = [`"${physicalTableName}"`, `{\n${columns.join(",\n")}\n}`];
416
420
 
@@ -429,11 +433,13 @@ function generateRelation(
429
433
  ctx: GeneratorContext,
430
434
  table: AnyTable,
431
435
  namespace?: string,
436
+ inverseRelations?: Array<{ fromTable: AnyTable; relation: Relation }>,
432
437
  ): string | undefined {
433
438
  const relations: string[] = [];
434
439
  let hasOne = false;
435
440
  let hasMany = false;
436
441
 
442
+ // Generate explicit relations defined on this table
437
443
  for (const relation of Object.values(table.relations)) {
438
444
  const options: string[] = [`relationName: "${relation.id}"`];
439
445
 
@@ -479,6 +485,30 @@ function generateRelation(
479
485
  relations.push(ident(`${relation.name}: ${relation.type}(${args.join(", ")})`));
480
486
  }
481
487
 
488
+ // Generate inverse relations for tables that reference this table
489
+ // Drizzle requires both sides of a relation to be defined
490
+ if (inverseRelations && inverseRelations.length > 0) {
491
+ for (const { fromTable, relation } of inverseRelations) {
492
+ // Only generate inverse for "one" relations (they become "many" on this side)
493
+ if (relation.type === "one") {
494
+ hasMany = true;
495
+
496
+ const fromTableRef = namespace
497
+ ? `${fromTable.ormName}_${sanitizeNamespace(namespace)}`
498
+ : fromTable.ormName;
499
+
500
+ // Generate inverse relation name with consistent suffix
501
+ // e.g., if session has "sessionOwner" relation to user, user gets "sessionList" inverse relation
502
+ const inverseRelationName = `${fromTable.ormName}List`;
503
+
504
+ const options: string[] = [`relationName: "${relation.id}"`];
505
+ const args: string[] = [fromTableRef, `{\n${ident(options.join(",\n"))}\n}`];
506
+
507
+ relations.push(ident(`${inverseRelationName}: many(${args.join(", ")})`));
508
+ }
509
+ }
510
+ }
511
+
482
512
  if (relations.length === 0) {
483
513
  return undefined;
484
514
  }
@@ -508,19 +538,15 @@ ${relations.join(",\n")}
508
538
  // UTILITIES
509
539
  // ============================================================================
510
540
 
511
- /**
512
- * Sanitize a namespace to be a valid JavaScript identifier
513
- * Replaces hyphens and other invalid characters with underscores
514
- */
515
- function sanitizeNamespace(namespace: string): string {
516
- return namespace.replace(/[^a-zA-Z0-9_]/g, "_");
517
- }
518
-
519
541
  /**
520
542
  * Generate a schema export object for a fragment
521
543
  * This groups all tables by their logical names for easier access
522
544
  */
523
- function generateFragmentSchemaExport(schema: AnySchema, namespace: string): string {
545
+ function generateFragmentSchemaExport(
546
+ schema: AnySchema,
547
+ namespace: string,
548
+ tablesWithRelations?: Set<string>,
549
+ ): string {
524
550
  const entries: string[] = [];
525
551
 
526
552
  for (const table of Object.values(schema.tables)) {
@@ -528,14 +554,23 @@ function generateFragmentSchemaExport(schema: AnySchema, namespace: string): str
528
554
  ? `${table.ormName}_${sanitizeNamespace(namespace)}`
529
555
  : table.ormName;
530
556
 
557
+ // Use sanitized export name (valid JS identifier) as the key
558
+ // Drizzle requires all schema keys to be valid identifiers
559
+ entries.push(` ${physicalExportName}: ${physicalExportName}`);
560
+
561
+ // Add convenient alias using the original table name (without namespace)
531
562
  if (namespace) {
532
- const physicalTableName = namespace ? `${table.ormName}_${namespace}` : table.ormName;
533
- // Use physical table name as key for Drizzle schema lookups
534
- entries.push(` "${physicalTableName}": ${physicalExportName}`);
563
+ entries.push(` ${table.ormName}: ${physicalExportName}`);
535
564
  }
536
565
 
537
- // Also provide logical name for convenience
538
- entries.push(` ${table.ormName}: ${physicalExportName}`);
566
+ // Include relations for this table if they exist (either explicit or inverse)
567
+ if (tablesWithRelations?.has(table.name)) {
568
+ const relationsName = namespace
569
+ ? `${table.ormName}_${sanitizeNamespace(namespace)}Relations`
570
+ : `${table.ormName}Relations`;
571
+
572
+ entries.push(` ${relationsName}: ${relationsName}`);
573
+ }
539
574
  }
540
575
 
541
576
  // Add schema version as a number
@@ -616,17 +651,41 @@ export function generateSchema(
616
651
  const tableCode = generateTable(ctx, table, customTypes, namespace);
617
652
  fragmentTables.push("");
618
653
  fragmentTables.push(tableCode);
654
+ }
619
655
 
620
- const relationCode = generateRelation(ctx, table, namespace);
656
+ // Build a map of inverse relations for tables that are referenced but don't have their own relations
657
+ // This is needed for Drizzle's relational query API to work correctly
658
+ const inverseRelations = new Map<string, Array<{ fromTable: AnyTable; relation: Relation }>>();
659
+ for (const table of Object.values(schema.tables)) {
660
+ for (const relation of Object.values(table.relations)) {
661
+ // Track this relation as an inverse on the target table
662
+ const targetTableName = relation.table.name;
663
+ if (!inverseRelations.has(targetTableName)) {
664
+ inverseRelations.set(targetTableName, []);
665
+ }
666
+ inverseRelations.get(targetTableName)!.push({ fromTable: table, relation });
667
+ }
668
+ }
669
+
670
+ // Generate relations for all tables (both explicit and inverse)
671
+ const tablesWithRelations = new Set<string>();
672
+ for (const table of Object.values(schema.tables)) {
673
+ const relationCode = generateRelation(
674
+ ctx,
675
+ table,
676
+ namespace,
677
+ inverseRelations.get(table.name),
678
+ );
621
679
  if (relationCode) {
622
680
  fragmentTables.push("");
623
681
  fragmentTables.push(relationCode);
682
+ tablesWithRelations.add(table.name);
624
683
  }
625
684
  }
626
685
 
627
686
  // Generate schema export object
628
687
  fragmentTables.push("");
629
- fragmentTables.push(generateFragmentSchemaExport(schema, namespace));
688
+ fragmentTables.push(generateFragmentSchemaExport(schema, namespace, tablesWithRelations));
630
689
 
631
690
  sections.push(...fragmentTables);
632
691
  }
@@ -30,16 +30,26 @@ export interface TableNameMapper {
30
30
  toLogical(physicalName: string): string;
31
31
  }
32
32
 
33
+ /**
34
+ * Sanitize a namespace to be a valid JavaScript identifier
35
+ * Replaces hyphens and other invalid characters with underscores
36
+ */
37
+ export function sanitizeNamespace(namespace: string): string {
38
+ return namespace.replace(/[^a-zA-Z0-9_]/g, "_");
39
+ }
40
+
33
41
  /**
34
42
  * Creates a table name mapper for a given namespace.
35
- * Physical names have format: {logicalName}_{namespace}
43
+ * Physical names have format: {logicalName}_{sanitizedNamespace}
44
+ * The namespace is sanitized to match TypeScript export names used in the schema
36
45
  */
37
46
  export function createTableNameMapper(namespace: string): TableNameMapper {
47
+ const sanitized = sanitizeNamespace(namespace);
38
48
  return {
39
- toPhysical: (logicalName: string) => `${logicalName}_${namespace}`,
49
+ toPhysical: (logicalName: string) => `${logicalName}_${sanitized}`,
40
50
  toLogical: (physicalName: string) => {
41
- if (physicalName.endsWith(`_${namespace}`)) {
42
- return physicalName.slice(0, -(namespace.length + 1));
51
+ if (physicalName.endsWith(`_${sanitized}`)) {
52
+ return physicalName.slice(0, -(sanitized.length + 1));
43
53
  }
44
54
  return physicalName;
45
55
  },
@@ -53,6 +53,7 @@ export async function writeAndLoadSchema(
53
53
  return {
54
54
  schemaModule,
55
55
  schemaFilePath,
56
+ drizzleSchemaTs,
56
57
  cleanup,
57
58
  };
58
59
  }
@@ -801,6 +801,11 @@ export function createUnitOfWork<
801
801
  >;
802
802
  }
803
803
 
804
+ export interface UnitOfWorkConfig {
805
+ dryRun?: boolean;
806
+ onQuery?: (query: unknown) => void;
807
+ }
808
+
804
809
  /**
805
810
  * Unit of Work implementation with optimistic concurrency control
806
811
  *
@@ -835,13 +840,19 @@ export class UnitOfWork<
835
840
  const TRawInput = unknown,
836
841
  > {
837
842
  #schema: TSchema;
843
+
838
844
  #name?: string;
845
+ #config?: UnitOfWorkConfig;
846
+
839
847
  #state: UOWState = "building-retrieval";
848
+
840
849
  #retrievalOps: RetrievalOperation<TSchema>[] = [];
841
850
  #mutationOps: MutationOperation<TSchema>[] = [];
851
+
842
852
  #compiler: UOWCompiler<TSchema, unknown>;
843
853
  #executor: UOWExecutor<unknown, TRawInput>;
844
854
  #decoder: UOWDecoder<TSchema, TRawInput>;
855
+
845
856
  #retrievalResults?: TRetrievalResults;
846
857
  #createdInternalIds: (bigint | null)[] = [];
847
858
 
@@ -851,12 +862,14 @@ export class UnitOfWork<
851
862
  executor: UOWExecutor<unknown, TRawInput>,
852
863
  decoder: UOWDecoder<TSchema, TRawInput>,
853
864
  name?: string,
865
+ config?: UnitOfWorkConfig,
854
866
  ) {
855
867
  this.#schema = schema;
856
868
  this.#compiler = compiler;
857
869
  this.#executor = executor;
858
870
  this.#decoder = decoder;
859
871
  this.#name = name;
872
+ this.#config = config;
860
873
  }
861
874
 
862
875
  get schema(): TSchema {
@@ -891,10 +904,17 @@ export class UnitOfWork<
891
904
  for (const op of this.#retrievalOps) {
892
905
  const compiled = this.#compiler.compileRetrievalOperation(op);
893
906
  if (compiled !== null) {
907
+ this.#config?.onQuery?.(compiled);
908
+
894
909
  retrievalBatch.push(compiled);
895
910
  }
896
911
  }
897
912
 
913
+ if (this.#config?.dryRun) {
914
+ this.#state = "executed";
915
+ return [] as unknown as TRetrievalResults;
916
+ }
917
+
898
918
  const results = this.#decoder(
899
919
  await this.#executor.executeRetrievalPhase(retrievalBatch),
900
920
  this.#retrievalOps,
@@ -1099,10 +1119,18 @@ export class UnitOfWork<
1099
1119
  for (const op of this.#mutationOps) {
1100
1120
  const compiled = this.#compiler.compileMutationOperation(op);
1101
1121
  if (compiled !== null) {
1122
+ this.#config?.onQuery?.(compiled);
1102
1123
  mutationBatch.push(compiled);
1103
1124
  }
1104
1125
  }
1105
1126
 
1127
+ if (this.#config?.dryRun) {
1128
+ this.#state = "executed";
1129
+ return {
1130
+ success: true,
1131
+ };
1132
+ }
1133
+
1106
1134
  // Execute mutation phase
1107
1135
  const result = await this.#executor.executeMutationPhase(mutationBatch);
1108
1136
  this.#state = "executed";
package/tsdown.config.ts CHANGED
@@ -9,6 +9,7 @@ export default defineConfig({
9
9
  "./src/adapters/adapters.ts",
10
10
  "./src/adapters/kysely/kysely-adapter.ts",
11
11
  "./src/adapters/drizzle/drizzle-adapter.ts",
12
+ "./src/adapters/drizzle/generate.ts",
12
13
  "./src/query/unit-of-work.ts",
13
14
  "./src/query/cursor.ts",
14
15
  "./src/fragment.ts",
@@ -1,6 +0,0 @@
1
- //#region ../../node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql+pglite@0.3.11_@libsql+client@0.15.15_@types+better-sql_aee8b50e4fe3dba0cf9f533329f36260/node_modules/drizzle-orm/table.utils.js
2
- const TableName = Symbol.for("drizzle:Name");
3
-
4
- //#endregion
5
- export { TableName };
6
- //# sourceMappingURL=table.utils.js.map
@@ -1,8 +0,0 @@
1
- //#region ../../node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql+pglite@0.3.11_@libsql+client@0.15.15_@types+better-sql_aee8b50e4fe3dba0cf9f533329f36260/node_modules/drizzle-orm/tracing-utils.js
2
- function iife(fn, ...args) {
3
- return fn(...args);
4
- }
5
-
6
- //#endregion
7
- export { iife };
8
- //# sourceMappingURL=tracing-utils.js.map
@@ -1,8 +0,0 @@
1
- //#region ../../node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql+pglite@0.3.11_@libsql+client@0.15.15_@types+better-sql_aee8b50e4fe3dba0cf9f533329f36260/node_modules/drizzle-orm/tracing.js
2
- const tracer = { startActiveSpan(name, fn) {
3
- return fn();
4
- } };
5
-
6
- //#endregion
7
- export { tracer };
8
- //# sourceMappingURL=tracing.js.map