@fragno-dev/db 0.1.2 → 0.1.5
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.
- package/.turbo/turbo-build.log +210 -146
- package/CHANGELOG.md +19 -0
- package/LICENSE.md +16 -0
- package/dist/adapters/adapters.js +1 -0
- package/dist/adapters/drizzle/drizzle-adapter.d.ts.map +1 -1
- package/dist/adapters/drizzle/drizzle-adapter.js +4 -2
- package/dist/adapters/drizzle/drizzle-adapter.js.map +1 -1
- package/dist/adapters/drizzle/drizzle-query.js +2 -2
- package/dist/adapters/drizzle/drizzle-query.js.map +1 -1
- package/dist/adapters/drizzle/drizzle-uow-compiler.js +4 -4
- package/dist/adapters/drizzle/drizzle-uow-decoder.js +14 -4
- package/dist/adapters/drizzle/drizzle-uow-decoder.js.map +1 -1
- package/dist/adapters/drizzle/drizzle-uow-executor.js +78 -60
- package/dist/adapters/drizzle/drizzle-uow-executor.js.map +1 -1
- package/dist/adapters/drizzle/generate.js +5 -4
- package/dist/adapters/drizzle/generate.js.map +1 -1
- package/dist/adapters/kysely/kysely-adapter.d.ts.map +1 -1
- package/dist/adapters/kysely/kysely-adapter.js +33 -22
- package/dist/adapters/kysely/kysely-adapter.js.map +1 -1
- package/dist/adapters/kysely/migration/execute-base.js +128 -0
- package/dist/adapters/kysely/migration/execute-base.js.map +1 -0
- package/dist/adapters/kysely/migration/execute-factory.js +27 -0
- package/dist/adapters/kysely/migration/execute-factory.js.map +1 -0
- package/dist/adapters/kysely/migration/execute-mssql.js +112 -0
- package/dist/adapters/kysely/migration/execute-mssql.js.map +1 -0
- package/dist/adapters/kysely/migration/execute-mysql.js +93 -0
- package/dist/adapters/kysely/migration/execute-mysql.js.map +1 -0
- package/dist/adapters/kysely/migration/execute-postgres.js +104 -0
- package/dist/adapters/kysely/migration/execute-postgres.js.map +1 -0
- package/dist/adapters/kysely/migration/execute-sqlite.js +123 -0
- package/dist/adapters/kysely/migration/execute-sqlite.js.map +1 -0
- package/dist/adapters/kysely/migration/execute.js +23 -168
- package/dist/adapters/kysely/migration/execute.js.map +1 -1
- package/dist/migration-engine/shared.d.ts +24 -5
- package/dist/migration-engine/shared.d.ts.map +1 -1
- package/dist/migration-engine/shared.js.map +1 -1
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/dist/query/query.d.ts +4 -4
- package/dist/query/query.d.ts.map +1 -1
- package/dist/query/unit-of-work.d.ts +22 -22
- package/dist/query/unit-of-work.d.ts.map +1 -1
- package/dist/schema/create.d.ts +41 -41
- package/dist/schema/create.d.ts.map +1 -1
- package/dist/schema/serialize.js +3 -0
- package/dist/schema/serialize.js.map +1 -1
- package/package.json +20 -24
- package/src/adapters/drizzle/drizzle-adapter-sqlite.test.ts +585 -0
- package/src/adapters/drizzle/drizzle-adapter.test.ts +2 -2
- package/src/adapters/drizzle/drizzle-adapter.ts +11 -4
- package/src/adapters/drizzle/drizzle-query.ts +2 -2
- package/src/adapters/drizzle/drizzle-uow-compiler.test.ts +1 -1
- package/src/adapters/drizzle/drizzle-uow-decoder.ts +21 -4
- package/src/adapters/drizzle/drizzle-uow-executor.ts +155 -115
- package/src/adapters/drizzle/generate.test.ts +111 -14
- package/src/adapters/drizzle/generate.ts +12 -7
- package/src/adapters/kysely/kysely-adapter.ts +46 -27
- package/src/adapters/kysely/migration/execute-base.ts +256 -0
- package/src/adapters/kysely/migration/execute-factory.ts +30 -0
- package/src/adapters/kysely/migration/execute-mssql.ts +250 -0
- package/src/adapters/kysely/migration/execute-mysql.ts +211 -0
- package/src/adapters/kysely/migration/execute-postgres.ts +234 -0
- package/src/adapters/kysely/migration/execute-sqlite.test.ts +1363 -0
- package/src/adapters/kysely/migration/execute-sqlite.ts +247 -0
- package/src/adapters/kysely/migration/execute.ts +33 -396
- package/src/adapters/kysely/migration/kysely-migrator.test.ts +84 -2
- package/src/migration-engine/shared.ts +29 -11
- package/src/schema/serialize.test.ts +1 -0
- package/src/schema/serialize.ts +7 -0
- package/tsdown.config.ts +1 -0
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/column-builder.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/column.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/entity.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/pg-core/columns/common.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/pg-core/columns/enum.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/pg-core/foreign-keys.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/pg-core/unique-constraint.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/pg-core/utils/array.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/expressions/conditions.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/expressions/select.js +0 -13
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/expressions/select.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/functions/aggregate.js +0 -10
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/functions/aggregate.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/sql.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/subquery.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/table.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/table.utils.js +0 -6
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/table.utils.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/tracing-utils.js +0 -8
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/tracing-utils.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/tracing.js +0 -8
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/tracing.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/view-common.js +0 -6
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/view-common.js.map +0 -1
|
@@ -0,0 +1,457 @@
|
|
|
1
|
+
import { entityKind, is } from "../entity.js";
|
|
2
|
+
import { Column } from "../column.js";
|
|
3
|
+
import { Subquery } from "../subquery.js";
|
|
4
|
+
import { ViewBaseConfig } from "../view-common.js";
|
|
5
|
+
import { Table, getTableName, getTableUniqueName } from "../table.js";
|
|
6
|
+
import { Param, SQL, sql } from "../sql/sql.js";
|
|
7
|
+
import { aliasedTable, aliasedTableColumn, mapColumnsInAliasedSQLToAlias, mapColumnsInSQLToAlias } from "../alias.js";
|
|
8
|
+
import { DrizzleError } from "../errors.js";
|
|
9
|
+
import { orderSelectedFields } from "../utils.js";
|
|
10
|
+
import { and, eq } from "../sql/expressions/conditions.js";
|
|
11
|
+
import { Many, One, getOperators, getOrderByOperators, normalizeRelation } from "../relations.js";
|
|
12
|
+
import { SQLiteColumn } from "./columns/common.js";
|
|
13
|
+
import { SQLiteTable } from "./table.js";
|
|
14
|
+
import { CasingCache } from "../casing.js";
|
|
15
|
+
import { SQLiteViewBase } from "./view-base.js";
|
|
16
|
+
|
|
17
|
+
//#region ../../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
|
|
18
|
+
var SQLiteDialect = class {
|
|
19
|
+
static [entityKind] = "SQLiteDialect";
|
|
20
|
+
/** @internal */
|
|
21
|
+
casing;
|
|
22
|
+
constructor(config) {
|
|
23
|
+
this.casing = new CasingCache(config?.casing);
|
|
24
|
+
}
|
|
25
|
+
escapeName(name) {
|
|
26
|
+
return `"${name}"`;
|
|
27
|
+
}
|
|
28
|
+
escapeParam(_num) {
|
|
29
|
+
return "?";
|
|
30
|
+
}
|
|
31
|
+
escapeString(str) {
|
|
32
|
+
return `'${str.replace(/'/g, "''")}'`;
|
|
33
|
+
}
|
|
34
|
+
buildWithCTE(queries) {
|
|
35
|
+
if (!queries?.length) return void 0;
|
|
36
|
+
const withSqlChunks = [sql`with `];
|
|
37
|
+
for (const [i, w] of queries.entries()) {
|
|
38
|
+
withSqlChunks.push(sql`${sql.identifier(w._.alias)} as (${w._.sql})`);
|
|
39
|
+
if (i < queries.length - 1) withSqlChunks.push(sql`, `);
|
|
40
|
+
}
|
|
41
|
+
withSqlChunks.push(sql` `);
|
|
42
|
+
return sql.join(withSqlChunks);
|
|
43
|
+
}
|
|
44
|
+
buildDeleteQuery({ table, where, returning, withList, limit, orderBy }) {
|
|
45
|
+
const withSql = this.buildWithCTE(withList);
|
|
46
|
+
const returningSql = returning ? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}` : void 0;
|
|
47
|
+
return sql`${withSql}delete from ${table}${where ? sql` where ${where}` : void 0}${returningSql}${this.buildOrderBy(orderBy)}${this.buildLimit(limit)}`;
|
|
48
|
+
}
|
|
49
|
+
buildUpdateSet(table, set) {
|
|
50
|
+
const tableColumns = table[Table.Symbol.Columns];
|
|
51
|
+
const columnNames = Object.keys(tableColumns).filter((colName) => set[colName] !== void 0 || tableColumns[colName]?.onUpdateFn !== void 0);
|
|
52
|
+
const setSize = columnNames.length;
|
|
53
|
+
return sql.join(columnNames.flatMap((colName, i) => {
|
|
54
|
+
const col = tableColumns[colName];
|
|
55
|
+
const value = set[colName] ?? sql.param(col.onUpdateFn(), col);
|
|
56
|
+
const res = sql`${sql.identifier(this.casing.getColumnCasing(col))} = ${value}`;
|
|
57
|
+
if (i < setSize - 1) return [res, sql.raw(", ")];
|
|
58
|
+
return [res];
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
buildUpdateQuery({ table, set, where, returning, withList, joins, from, limit, orderBy }) {
|
|
62
|
+
const withSql = this.buildWithCTE(withList);
|
|
63
|
+
const setSql = this.buildUpdateSet(table, set);
|
|
64
|
+
const fromSql = from && sql.join([sql.raw(" from "), this.buildFromTable(from)]);
|
|
65
|
+
const joinsSql = this.buildJoins(joins);
|
|
66
|
+
const returningSql = returning ? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}` : void 0;
|
|
67
|
+
return sql`${withSql}update ${table} set ${setSql}${fromSql}${joinsSql}${where ? sql` where ${where}` : void 0}${returningSql}${this.buildOrderBy(orderBy)}${this.buildLimit(limit)}`;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Builds selection SQL with provided fields/expressions
|
|
71
|
+
*
|
|
72
|
+
* Examples:
|
|
73
|
+
*
|
|
74
|
+
* `select <selection> from`
|
|
75
|
+
*
|
|
76
|
+
* `insert ... returning <selection>`
|
|
77
|
+
*
|
|
78
|
+
* If `isSingleTable` is true, then columns won't be prefixed with table name
|
|
79
|
+
*/
|
|
80
|
+
buildSelection(fields, { isSingleTable = false } = {}) {
|
|
81
|
+
const columnsLen = fields.length;
|
|
82
|
+
const chunks = fields.flatMap(({ field }, i) => {
|
|
83
|
+
const chunk = [];
|
|
84
|
+
if (is(field, SQL.Aliased) && field.isSelectionField) chunk.push(sql.identifier(field.fieldAlias));
|
|
85
|
+
else if (is(field, SQL.Aliased) || is(field, SQL)) {
|
|
86
|
+
const query = is(field, SQL.Aliased) ? field.sql : field;
|
|
87
|
+
if (isSingleTable) chunk.push(new SQL(query.queryChunks.map((c) => {
|
|
88
|
+
if (is(c, Column)) return sql.identifier(this.casing.getColumnCasing(c));
|
|
89
|
+
return c;
|
|
90
|
+
})));
|
|
91
|
+
else chunk.push(query);
|
|
92
|
+
if (is(field, SQL.Aliased)) chunk.push(sql` as ${sql.identifier(field.fieldAlias)}`);
|
|
93
|
+
} else if (is(field, Column)) {
|
|
94
|
+
const tableName = field.table[Table.Symbol.Name];
|
|
95
|
+
if (field.columnType === "SQLiteNumericBigInt") if (isSingleTable) chunk.push(sql`cast(${sql.identifier(this.casing.getColumnCasing(field))} as text)`);
|
|
96
|
+
else chunk.push(sql`cast(${sql.identifier(tableName)}.${sql.identifier(this.casing.getColumnCasing(field))} as text)`);
|
|
97
|
+
else if (isSingleTable) chunk.push(sql.identifier(this.casing.getColumnCasing(field)));
|
|
98
|
+
else chunk.push(sql`${sql.identifier(tableName)}.${sql.identifier(this.casing.getColumnCasing(field))}`);
|
|
99
|
+
}
|
|
100
|
+
if (i < columnsLen - 1) chunk.push(sql`, `);
|
|
101
|
+
return chunk;
|
|
102
|
+
});
|
|
103
|
+
return sql.join(chunks);
|
|
104
|
+
}
|
|
105
|
+
buildJoins(joins) {
|
|
106
|
+
if (!joins || joins.length === 0) return;
|
|
107
|
+
const joinsArray = [];
|
|
108
|
+
if (joins) for (const [index, joinMeta] of joins.entries()) {
|
|
109
|
+
if (index === 0) joinsArray.push(sql` `);
|
|
110
|
+
const table = joinMeta.table;
|
|
111
|
+
const onSql = joinMeta.on ? sql` on ${joinMeta.on}` : void 0;
|
|
112
|
+
if (is(table, SQLiteTable)) {
|
|
113
|
+
const tableName = table[SQLiteTable.Symbol.Name];
|
|
114
|
+
const tableSchema = table[SQLiteTable.Symbol.Schema];
|
|
115
|
+
const origTableName = table[SQLiteTable.Symbol.OriginalName];
|
|
116
|
+
const alias = tableName === origTableName ? void 0 : joinMeta.alias;
|
|
117
|
+
joinsArray.push(sql`${sql.raw(joinMeta.joinType)} join ${tableSchema ? sql`${sql.identifier(tableSchema)}.` : void 0}${sql.identifier(origTableName)}${alias && sql` ${sql.identifier(alias)}`}${onSql}`);
|
|
118
|
+
} else joinsArray.push(sql`${sql.raw(joinMeta.joinType)} join ${table}${onSql}`);
|
|
119
|
+
if (index < joins.length - 1) joinsArray.push(sql` `);
|
|
120
|
+
}
|
|
121
|
+
return sql.join(joinsArray);
|
|
122
|
+
}
|
|
123
|
+
buildLimit(limit) {
|
|
124
|
+
return typeof limit === "object" || typeof limit === "number" && limit >= 0 ? sql` limit ${limit}` : void 0;
|
|
125
|
+
}
|
|
126
|
+
buildOrderBy(orderBy) {
|
|
127
|
+
const orderByList = [];
|
|
128
|
+
if (orderBy) for (const [index, orderByValue] of orderBy.entries()) {
|
|
129
|
+
orderByList.push(orderByValue);
|
|
130
|
+
if (index < orderBy.length - 1) orderByList.push(sql`, `);
|
|
131
|
+
}
|
|
132
|
+
return orderByList.length > 0 ? sql` order by ${sql.join(orderByList)}` : void 0;
|
|
133
|
+
}
|
|
134
|
+
buildFromTable(table) {
|
|
135
|
+
if (is(table, Table) && table[Table.Symbol.IsAlias]) return sql`${sql`${sql.identifier(table[Table.Symbol.Schema] ?? "")}.`.if(table[Table.Symbol.Schema])}${sql.identifier(table[Table.Symbol.OriginalName])} ${sql.identifier(table[Table.Symbol.Name])}`;
|
|
136
|
+
return table;
|
|
137
|
+
}
|
|
138
|
+
buildSelectQuery({ withList, fields, fieldsFlat, where, having, table, joins, orderBy, groupBy, limit, offset, distinct, setOperators }) {
|
|
139
|
+
const fieldsList = fieldsFlat ?? orderSelectedFields(fields);
|
|
140
|
+
for (const f of fieldsList) if (is(f.field, Column) && getTableName(f.field.table) !== (is(table, Subquery) ? table._.alias : is(table, SQLiteViewBase) ? table[ViewBaseConfig].name : is(table, SQL) ? void 0 : getTableName(table)) && !((table2) => joins?.some(({ alias }) => alias === (table2[Table.Symbol.IsAlias] ? getTableName(table2) : table2[Table.Symbol.BaseName])))(f.field.table)) {
|
|
141
|
+
const tableName = getTableName(f.field.table);
|
|
142
|
+
throw new Error(`Your "${f.path.join("->")}" field references a column "${tableName}"."${f.field.name}", but the table "${tableName}" is not part of the query! Did you forget to join it?`);
|
|
143
|
+
}
|
|
144
|
+
const isSingleTable = !joins || joins.length === 0;
|
|
145
|
+
const withSql = this.buildWithCTE(withList);
|
|
146
|
+
const distinctSql = distinct ? sql` distinct` : void 0;
|
|
147
|
+
const selection = this.buildSelection(fieldsList, { isSingleTable });
|
|
148
|
+
const tableSql = this.buildFromTable(table);
|
|
149
|
+
const joinsSql = this.buildJoins(joins);
|
|
150
|
+
const whereSql = where ? sql` where ${where}` : void 0;
|
|
151
|
+
const havingSql = having ? sql` having ${having}` : void 0;
|
|
152
|
+
const groupByList = [];
|
|
153
|
+
if (groupBy) for (const [index, groupByValue] of groupBy.entries()) {
|
|
154
|
+
groupByList.push(groupByValue);
|
|
155
|
+
if (index < groupBy.length - 1) groupByList.push(sql`, `);
|
|
156
|
+
}
|
|
157
|
+
const finalQuery = sql`${withSql}select${distinctSql} ${selection} from ${tableSql}${joinsSql}${whereSql}${groupByList.length > 0 ? sql` group by ${sql.join(groupByList)}` : void 0}${havingSql}${this.buildOrderBy(orderBy)}${this.buildLimit(limit)}${offset ? sql` offset ${offset}` : void 0}`;
|
|
158
|
+
if (setOperators.length > 0) return this.buildSetOperations(finalQuery, setOperators);
|
|
159
|
+
return finalQuery;
|
|
160
|
+
}
|
|
161
|
+
buildSetOperations(leftSelect, setOperators) {
|
|
162
|
+
const [setOperator, ...rest] = setOperators;
|
|
163
|
+
if (!setOperator) throw new Error("Cannot pass undefined values to any set operator");
|
|
164
|
+
if (rest.length === 0) return this.buildSetOperationQuery({
|
|
165
|
+
leftSelect,
|
|
166
|
+
setOperator
|
|
167
|
+
});
|
|
168
|
+
return this.buildSetOperations(this.buildSetOperationQuery({
|
|
169
|
+
leftSelect,
|
|
170
|
+
setOperator
|
|
171
|
+
}), rest);
|
|
172
|
+
}
|
|
173
|
+
buildSetOperationQuery({ leftSelect, setOperator: { type, isAll, rightSelect, limit, orderBy, offset } }) {
|
|
174
|
+
const leftChunk = sql`${leftSelect.getSQL()} `;
|
|
175
|
+
const rightChunk = sql`${rightSelect.getSQL()}`;
|
|
176
|
+
let orderBySql;
|
|
177
|
+
if (orderBy && orderBy.length > 0) {
|
|
178
|
+
const orderByValues = [];
|
|
179
|
+
for (const singleOrderBy of orderBy) if (is(singleOrderBy, SQLiteColumn)) orderByValues.push(sql.identifier(singleOrderBy.name));
|
|
180
|
+
else if (is(singleOrderBy, SQL)) {
|
|
181
|
+
for (let i = 0; i < singleOrderBy.queryChunks.length; i++) {
|
|
182
|
+
const chunk = singleOrderBy.queryChunks[i];
|
|
183
|
+
if (is(chunk, SQLiteColumn)) singleOrderBy.queryChunks[i] = sql.identifier(this.casing.getColumnCasing(chunk));
|
|
184
|
+
}
|
|
185
|
+
orderByValues.push(sql`${singleOrderBy}`);
|
|
186
|
+
} else orderByValues.push(sql`${singleOrderBy}`);
|
|
187
|
+
orderBySql = sql` order by ${sql.join(orderByValues, sql`, `)}`;
|
|
188
|
+
}
|
|
189
|
+
const limitSql = typeof limit === "object" || typeof limit === "number" && limit >= 0 ? sql` limit ${limit}` : void 0;
|
|
190
|
+
const operatorChunk = sql.raw(`${type} ${isAll ? "all " : ""}`);
|
|
191
|
+
const offsetSql = offset ? sql` offset ${offset}` : void 0;
|
|
192
|
+
return sql`${leftChunk}${operatorChunk}${rightChunk}${orderBySql}${limitSql}${offsetSql}`;
|
|
193
|
+
}
|
|
194
|
+
buildInsertQuery({ table, values: valuesOrSelect, onConflict, returning, withList, select }) {
|
|
195
|
+
const valuesSqlList = [];
|
|
196
|
+
const columns = table[Table.Symbol.Columns];
|
|
197
|
+
const colEntries = Object.entries(columns).filter(([_, col]) => !col.shouldDisableInsert());
|
|
198
|
+
const insertOrder = colEntries.map(([, column]) => sql.identifier(this.casing.getColumnCasing(column)));
|
|
199
|
+
if (select) {
|
|
200
|
+
const select2 = valuesOrSelect;
|
|
201
|
+
if (is(select2, SQL)) valuesSqlList.push(select2);
|
|
202
|
+
else valuesSqlList.push(select2.getSQL());
|
|
203
|
+
} else {
|
|
204
|
+
const values = valuesOrSelect;
|
|
205
|
+
valuesSqlList.push(sql.raw("values "));
|
|
206
|
+
for (const [valueIndex, value] of values.entries()) {
|
|
207
|
+
const valueList = [];
|
|
208
|
+
for (const [fieldName, col] of colEntries) {
|
|
209
|
+
const colValue = value[fieldName];
|
|
210
|
+
if (colValue === void 0 || is(colValue, Param) && colValue.value === void 0) {
|
|
211
|
+
let defaultValue;
|
|
212
|
+
if (col.default !== null && col.default !== void 0) defaultValue = is(col.default, SQL) ? col.default : sql.param(col.default, col);
|
|
213
|
+
else if (col.defaultFn !== void 0) {
|
|
214
|
+
const defaultFnResult = col.defaultFn();
|
|
215
|
+
defaultValue = is(defaultFnResult, SQL) ? defaultFnResult : sql.param(defaultFnResult, col);
|
|
216
|
+
} else if (!col.default && col.onUpdateFn !== void 0) {
|
|
217
|
+
const onUpdateFnResult = col.onUpdateFn();
|
|
218
|
+
defaultValue = is(onUpdateFnResult, SQL) ? onUpdateFnResult : sql.param(onUpdateFnResult, col);
|
|
219
|
+
} else defaultValue = sql`null`;
|
|
220
|
+
valueList.push(defaultValue);
|
|
221
|
+
} else valueList.push(colValue);
|
|
222
|
+
}
|
|
223
|
+
valuesSqlList.push(valueList);
|
|
224
|
+
if (valueIndex < values.length - 1) valuesSqlList.push(sql`, `);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
const withSql = this.buildWithCTE(withList);
|
|
228
|
+
const valuesSql = sql.join(valuesSqlList);
|
|
229
|
+
const returningSql = returning ? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}` : void 0;
|
|
230
|
+
return sql`${withSql}insert into ${table} ${insertOrder} ${valuesSql}${onConflict?.length ? sql.join(onConflict) : void 0}${returningSql}`;
|
|
231
|
+
}
|
|
232
|
+
sqlToQuery(sql2, invokeSource) {
|
|
233
|
+
return sql2.toQuery({
|
|
234
|
+
casing: this.casing,
|
|
235
|
+
escapeName: this.escapeName,
|
|
236
|
+
escapeParam: this.escapeParam,
|
|
237
|
+
escapeString: this.escapeString,
|
|
238
|
+
invokeSource
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
buildRelationalQuery({ fullSchema, schema, tableNamesMap, table, tableConfig, queryConfig: config, tableAlias, nestedQueryRelation, joinOn }) {
|
|
242
|
+
let selection = [];
|
|
243
|
+
let limit, offset, orderBy = [], where;
|
|
244
|
+
const joins = [];
|
|
245
|
+
if (config === true) selection = Object.entries(tableConfig.columns).map(([key, value]) => ({
|
|
246
|
+
dbKey: value.name,
|
|
247
|
+
tsKey: key,
|
|
248
|
+
field: aliasedTableColumn(value, tableAlias),
|
|
249
|
+
relationTableTsKey: void 0,
|
|
250
|
+
isJson: false,
|
|
251
|
+
selection: []
|
|
252
|
+
}));
|
|
253
|
+
else {
|
|
254
|
+
const aliasedColumns = Object.fromEntries(Object.entries(tableConfig.columns).map(([key, value]) => [key, aliasedTableColumn(value, tableAlias)]));
|
|
255
|
+
if (config.where) {
|
|
256
|
+
const whereSql = typeof config.where === "function" ? config.where(aliasedColumns, getOperators()) : config.where;
|
|
257
|
+
where = whereSql && mapColumnsInSQLToAlias(whereSql, tableAlias);
|
|
258
|
+
}
|
|
259
|
+
const fieldsSelection = [];
|
|
260
|
+
let selectedColumns = [];
|
|
261
|
+
if (config.columns) {
|
|
262
|
+
let isIncludeMode = false;
|
|
263
|
+
for (const [field, value] of Object.entries(config.columns)) {
|
|
264
|
+
if (value === void 0) continue;
|
|
265
|
+
if (field in tableConfig.columns) {
|
|
266
|
+
if (!isIncludeMode && value === true) isIncludeMode = true;
|
|
267
|
+
selectedColumns.push(field);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
if (selectedColumns.length > 0) selectedColumns = isIncludeMode ? selectedColumns.filter((c) => config.columns?.[c] === true) : Object.keys(tableConfig.columns).filter((key) => !selectedColumns.includes(key));
|
|
271
|
+
} else selectedColumns = Object.keys(tableConfig.columns);
|
|
272
|
+
for (const field of selectedColumns) {
|
|
273
|
+
const column = tableConfig.columns[field];
|
|
274
|
+
fieldsSelection.push({
|
|
275
|
+
tsKey: field,
|
|
276
|
+
value: column
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
let selectedRelations = [];
|
|
280
|
+
if (config.with) selectedRelations = Object.entries(config.with).filter((entry) => !!entry[1]).map(([tsKey, queryConfig]) => ({
|
|
281
|
+
tsKey,
|
|
282
|
+
queryConfig,
|
|
283
|
+
relation: tableConfig.relations[tsKey]
|
|
284
|
+
}));
|
|
285
|
+
let extras;
|
|
286
|
+
if (config.extras) {
|
|
287
|
+
extras = typeof config.extras === "function" ? config.extras(aliasedColumns, { sql }) : config.extras;
|
|
288
|
+
for (const [tsKey, value] of Object.entries(extras)) fieldsSelection.push({
|
|
289
|
+
tsKey,
|
|
290
|
+
value: mapColumnsInAliasedSQLToAlias(value, tableAlias)
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
for (const { tsKey, value } of fieldsSelection) selection.push({
|
|
294
|
+
dbKey: is(value, SQL.Aliased) ? value.fieldAlias : tableConfig.columns[tsKey].name,
|
|
295
|
+
tsKey,
|
|
296
|
+
field: is(value, Column) ? aliasedTableColumn(value, tableAlias) : value,
|
|
297
|
+
relationTableTsKey: void 0,
|
|
298
|
+
isJson: false,
|
|
299
|
+
selection: []
|
|
300
|
+
});
|
|
301
|
+
let orderByOrig = typeof config.orderBy === "function" ? config.orderBy(aliasedColumns, getOrderByOperators()) : config.orderBy ?? [];
|
|
302
|
+
if (!Array.isArray(orderByOrig)) orderByOrig = [orderByOrig];
|
|
303
|
+
orderBy = orderByOrig.map((orderByValue) => {
|
|
304
|
+
if (is(orderByValue, Column)) return aliasedTableColumn(orderByValue, tableAlias);
|
|
305
|
+
return mapColumnsInSQLToAlias(orderByValue, tableAlias);
|
|
306
|
+
});
|
|
307
|
+
limit = config.limit;
|
|
308
|
+
offset = config.offset;
|
|
309
|
+
for (const { tsKey: selectedRelationTsKey, queryConfig: selectedRelationConfigValue, relation } of selectedRelations) {
|
|
310
|
+
const normalizedRelation = normalizeRelation(schema, tableNamesMap, relation);
|
|
311
|
+
const relationTableTsName = tableNamesMap[getTableUniqueName(relation.referencedTable)];
|
|
312
|
+
const relationTableAlias = `${tableAlias}_${selectedRelationTsKey}`;
|
|
313
|
+
const joinOn2 = and(...normalizedRelation.fields.map((field2, i) => eq(aliasedTableColumn(normalizedRelation.references[i], relationTableAlias), aliasedTableColumn(field2, tableAlias))));
|
|
314
|
+
const builtRelation = this.buildRelationalQuery({
|
|
315
|
+
fullSchema,
|
|
316
|
+
schema,
|
|
317
|
+
tableNamesMap,
|
|
318
|
+
table: fullSchema[relationTableTsName],
|
|
319
|
+
tableConfig: schema[relationTableTsName],
|
|
320
|
+
queryConfig: is(relation, One) ? selectedRelationConfigValue === true ? { limit: 1 } : {
|
|
321
|
+
...selectedRelationConfigValue,
|
|
322
|
+
limit: 1
|
|
323
|
+
} : selectedRelationConfigValue,
|
|
324
|
+
tableAlias: relationTableAlias,
|
|
325
|
+
joinOn: joinOn2,
|
|
326
|
+
nestedQueryRelation: relation
|
|
327
|
+
});
|
|
328
|
+
const field = sql`(${builtRelation.sql})`.as(selectedRelationTsKey);
|
|
329
|
+
selection.push({
|
|
330
|
+
dbKey: selectedRelationTsKey,
|
|
331
|
+
tsKey: selectedRelationTsKey,
|
|
332
|
+
field,
|
|
333
|
+
relationTableTsKey: relationTableTsName,
|
|
334
|
+
isJson: true,
|
|
335
|
+
selection: builtRelation.selection
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
if (selection.length === 0) throw new DrizzleError({ message: `No fields selected for table "${tableConfig.tsName}" ("${tableAlias}"). You need to have at least one item in "columns", "with" or "extras". If you need to select all columns, omit the "columns" key or set it to undefined.` });
|
|
340
|
+
let result;
|
|
341
|
+
where = and(joinOn, where);
|
|
342
|
+
if (nestedQueryRelation) {
|
|
343
|
+
let field = sql`json_array(${sql.join(selection.map(({ field: field2 }) => is(field2, SQLiteColumn) ? sql.identifier(this.casing.getColumnCasing(field2)) : is(field2, SQL.Aliased) ? field2.sql : field2), sql`, `)})`;
|
|
344
|
+
if (is(nestedQueryRelation, Many)) field = sql`coalesce(json_group_array(${field}), json_array())`;
|
|
345
|
+
const nestedSelection = [{
|
|
346
|
+
dbKey: "data",
|
|
347
|
+
tsKey: "data",
|
|
348
|
+
field: field.as("data"),
|
|
349
|
+
isJson: true,
|
|
350
|
+
relationTableTsKey: tableConfig.tsName,
|
|
351
|
+
selection
|
|
352
|
+
}];
|
|
353
|
+
if (limit !== void 0 || offset !== void 0 || orderBy.length > 0) {
|
|
354
|
+
result = this.buildSelectQuery({
|
|
355
|
+
table: aliasedTable(table, tableAlias),
|
|
356
|
+
fields: {},
|
|
357
|
+
fieldsFlat: [{
|
|
358
|
+
path: [],
|
|
359
|
+
field: sql.raw("*")
|
|
360
|
+
}],
|
|
361
|
+
where,
|
|
362
|
+
limit,
|
|
363
|
+
offset,
|
|
364
|
+
orderBy,
|
|
365
|
+
setOperators: []
|
|
366
|
+
});
|
|
367
|
+
where = void 0;
|
|
368
|
+
limit = void 0;
|
|
369
|
+
offset = void 0;
|
|
370
|
+
orderBy = void 0;
|
|
371
|
+
} else result = aliasedTable(table, tableAlias);
|
|
372
|
+
result = this.buildSelectQuery({
|
|
373
|
+
table: is(result, SQLiteTable) ? result : new Subquery(result, {}, tableAlias),
|
|
374
|
+
fields: {},
|
|
375
|
+
fieldsFlat: nestedSelection.map(({ field: field2 }) => ({
|
|
376
|
+
path: [],
|
|
377
|
+
field: is(field2, Column) ? aliasedTableColumn(field2, tableAlias) : field2
|
|
378
|
+
})),
|
|
379
|
+
joins,
|
|
380
|
+
where,
|
|
381
|
+
limit,
|
|
382
|
+
offset,
|
|
383
|
+
orderBy,
|
|
384
|
+
setOperators: []
|
|
385
|
+
});
|
|
386
|
+
} else result = this.buildSelectQuery({
|
|
387
|
+
table: aliasedTable(table, tableAlias),
|
|
388
|
+
fields: {},
|
|
389
|
+
fieldsFlat: selection.map(({ field }) => ({
|
|
390
|
+
path: [],
|
|
391
|
+
field: is(field, Column) ? aliasedTableColumn(field, tableAlias) : field
|
|
392
|
+
})),
|
|
393
|
+
joins,
|
|
394
|
+
where,
|
|
395
|
+
limit,
|
|
396
|
+
offset,
|
|
397
|
+
orderBy,
|
|
398
|
+
setOperators: []
|
|
399
|
+
});
|
|
400
|
+
return {
|
|
401
|
+
tableTsKey: tableConfig.tsName,
|
|
402
|
+
sql: result,
|
|
403
|
+
selection
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
};
|
|
407
|
+
var SQLiteSyncDialect = class extends SQLiteDialect {
|
|
408
|
+
static [entityKind] = "SQLiteSyncDialect";
|
|
409
|
+
migrate(migrations, session, config) {
|
|
410
|
+
const migrationsTable = config === void 0 ? "__drizzle_migrations" : typeof config === "string" ? "__drizzle_migrations" : config.migrationsTable ?? "__drizzle_migrations";
|
|
411
|
+
const migrationTableCreate = sql`
|
|
412
|
+
CREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (
|
|
413
|
+
id SERIAL PRIMARY KEY,
|
|
414
|
+
hash text NOT NULL,
|
|
415
|
+
created_at numeric
|
|
416
|
+
)
|
|
417
|
+
`;
|
|
418
|
+
session.run(migrationTableCreate);
|
|
419
|
+
const lastDbMigration = session.values(sql`SELECT id, hash, created_at FROM ${sql.identifier(migrationsTable)} ORDER BY created_at DESC LIMIT 1`)[0] ?? void 0;
|
|
420
|
+
session.run(sql`BEGIN`);
|
|
421
|
+
try {
|
|
422
|
+
for (const migration of migrations) if (!lastDbMigration || Number(lastDbMigration[2]) < migration.folderMillis) {
|
|
423
|
+
for (const stmt of migration.sql) session.run(sql.raw(stmt));
|
|
424
|
+
session.run(sql`INSERT INTO ${sql.identifier(migrationsTable)} ("hash", "created_at") VALUES(${migration.hash}, ${migration.folderMillis})`);
|
|
425
|
+
}
|
|
426
|
+
session.run(sql`COMMIT`);
|
|
427
|
+
} catch (e) {
|
|
428
|
+
session.run(sql`ROLLBACK`);
|
|
429
|
+
throw e;
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
};
|
|
433
|
+
var SQLiteAsyncDialect = class extends SQLiteDialect {
|
|
434
|
+
static [entityKind] = "SQLiteAsyncDialect";
|
|
435
|
+
async migrate(migrations, session, config) {
|
|
436
|
+
const migrationsTable = config === void 0 ? "__drizzle_migrations" : typeof config === "string" ? "__drizzle_migrations" : config.migrationsTable ?? "__drizzle_migrations";
|
|
437
|
+
const migrationTableCreate = sql`
|
|
438
|
+
CREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (
|
|
439
|
+
id SERIAL PRIMARY KEY,
|
|
440
|
+
hash text NOT NULL,
|
|
441
|
+
created_at numeric
|
|
442
|
+
)
|
|
443
|
+
`;
|
|
444
|
+
await session.run(migrationTableCreate);
|
|
445
|
+
const lastDbMigration = (await session.values(sql`SELECT id, hash, created_at FROM ${sql.identifier(migrationsTable)} ORDER BY created_at DESC LIMIT 1`))[0] ?? void 0;
|
|
446
|
+
await session.transaction(async (tx) => {
|
|
447
|
+
for (const migration of migrations) if (!lastDbMigration || Number(lastDbMigration[2]) < migration.folderMillis) {
|
|
448
|
+
for (const stmt of migration.sql) await tx.run(sql.raw(stmt));
|
|
449
|
+
await tx.run(sql`INSERT INTO ${sql.identifier(migrationsTable)} ("hash", "created_at") VALUES(${migration.hash}, ${migration.folderMillis})`);
|
|
450
|
+
}
|
|
451
|
+
});
|
|
452
|
+
}
|
|
453
|
+
};
|
|
454
|
+
|
|
455
|
+
//#endregion
|
|
456
|
+
export { SQLiteDialect, SQLiteSyncDialect };
|
|
457
|
+
//# sourceMappingURL=dialect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialect.js","names":[],"sources":["../../../../../../../../../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"],"sourcesContent":["import { aliasedTable, aliasedTableColumn, mapColumnsInAliasedSQLToAlias, mapColumnsInSQLToAlias } from \"../alias.js\";\nimport { CasingCache } from \"../casing.js\";\nimport { Column } from \"../column.js\";\nimport { entityKind, is } from \"../entity.js\";\nimport { DrizzleError } from \"../errors.js\";\nimport {\n getOperators,\n getOrderByOperators,\n Many,\n normalizeRelation,\n One\n} from \"../relations.js\";\nimport { and, eq } from \"../sql/index.js\";\nimport { Param, SQL, sql } from \"../sql/sql.js\";\nimport { SQLiteColumn } from \"./columns/index.js\";\nimport { SQLiteTable } from \"./table.js\";\nimport { Subquery } from \"../subquery.js\";\nimport { getTableName, getTableUniqueName, Table } from \"../table.js\";\nimport { orderSelectedFields } from \"../utils.js\";\nimport { ViewBaseConfig } from \"../view-common.js\";\nimport { SQLiteViewBase } from \"./view-base.js\";\nclass SQLiteDialect {\n static [entityKind] = \"SQLiteDialect\";\n /** @internal */\n casing;\n constructor(config) {\n this.casing = new CasingCache(config?.casing);\n }\n escapeName(name) {\n return `\"${name}\"`;\n }\n escapeParam(_num) {\n return \"?\";\n }\n escapeString(str) {\n return `'${str.replace(/'/g, \"''\")}'`;\n }\n buildWithCTE(queries) {\n if (!queries?.length) return void 0;\n const withSqlChunks = [sql`with `];\n for (const [i, w] of queries.entries()) {\n withSqlChunks.push(sql`${sql.identifier(w._.alias)} as (${w._.sql})`);\n if (i < queries.length - 1) {\n withSqlChunks.push(sql`, `);\n }\n }\n withSqlChunks.push(sql` `);\n return sql.join(withSqlChunks);\n }\n buildDeleteQuery({ table, where, returning, withList, limit, orderBy }) {\n const withSql = this.buildWithCTE(withList);\n const returningSql = returning ? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}` : void 0;\n const whereSql = where ? sql` where ${where}` : void 0;\n const orderBySql = this.buildOrderBy(orderBy);\n const limitSql = this.buildLimit(limit);\n return sql`${withSql}delete from ${table}${whereSql}${returningSql}${orderBySql}${limitSql}`;\n }\n buildUpdateSet(table, set) {\n const tableColumns = table[Table.Symbol.Columns];\n const columnNames = Object.keys(tableColumns).filter(\n (colName) => set[colName] !== void 0 || tableColumns[colName]?.onUpdateFn !== void 0\n );\n const setSize = columnNames.length;\n return sql.join(columnNames.flatMap((colName, i) => {\n const col = tableColumns[colName];\n const value = set[colName] ?? sql.param(col.onUpdateFn(), col);\n const res = sql`${sql.identifier(this.casing.getColumnCasing(col))} = ${value}`;\n if (i < setSize - 1) {\n return [res, sql.raw(\", \")];\n }\n return [res];\n }));\n }\n buildUpdateQuery({ table, set, where, returning, withList, joins, from, limit, orderBy }) {\n const withSql = this.buildWithCTE(withList);\n const setSql = this.buildUpdateSet(table, set);\n const fromSql = from && sql.join([sql.raw(\" from \"), this.buildFromTable(from)]);\n const joinsSql = this.buildJoins(joins);\n const returningSql = returning ? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}` : void 0;\n const whereSql = where ? sql` where ${where}` : void 0;\n const orderBySql = this.buildOrderBy(orderBy);\n const limitSql = this.buildLimit(limit);\n return sql`${withSql}update ${table} set ${setSql}${fromSql}${joinsSql}${whereSql}${returningSql}${orderBySql}${limitSql}`;\n }\n /**\n * Builds selection SQL with provided fields/expressions\n *\n * Examples:\n *\n * `select <selection> from`\n *\n * `insert ... returning <selection>`\n *\n * If `isSingleTable` is true, then columns won't be prefixed with table name\n */\n buildSelection(fields, { isSingleTable = false } = {}) {\n const columnsLen = fields.length;\n const chunks = fields.flatMap(({ field }, i) => {\n const chunk = [];\n if (is(field, SQL.Aliased) && field.isSelectionField) {\n chunk.push(sql.identifier(field.fieldAlias));\n } else if (is(field, SQL.Aliased) || is(field, SQL)) {\n const query = is(field, SQL.Aliased) ? field.sql : field;\n if (isSingleTable) {\n chunk.push(\n new SQL(\n query.queryChunks.map((c) => {\n if (is(c, Column)) {\n return sql.identifier(this.casing.getColumnCasing(c));\n }\n return c;\n })\n )\n );\n } else {\n chunk.push(query);\n }\n if (is(field, SQL.Aliased)) {\n chunk.push(sql` as ${sql.identifier(field.fieldAlias)}`);\n }\n } else if (is(field, Column)) {\n const tableName = field.table[Table.Symbol.Name];\n if (field.columnType === \"SQLiteNumericBigInt\") {\n if (isSingleTable) {\n chunk.push(sql`cast(${sql.identifier(this.casing.getColumnCasing(field))} as text)`);\n } else {\n chunk.push(\n sql`cast(${sql.identifier(tableName)}.${sql.identifier(this.casing.getColumnCasing(field))} as text)`\n );\n }\n } else {\n if (isSingleTable) {\n chunk.push(sql.identifier(this.casing.getColumnCasing(field)));\n } else {\n chunk.push(sql`${sql.identifier(tableName)}.${sql.identifier(this.casing.getColumnCasing(field))}`);\n }\n }\n }\n if (i < columnsLen - 1) {\n chunk.push(sql`, `);\n }\n return chunk;\n });\n return sql.join(chunks);\n }\n buildJoins(joins) {\n if (!joins || joins.length === 0) {\n return void 0;\n }\n const joinsArray = [];\n if (joins) {\n for (const [index, joinMeta] of joins.entries()) {\n if (index === 0) {\n joinsArray.push(sql` `);\n }\n const table = joinMeta.table;\n const onSql = joinMeta.on ? sql` on ${joinMeta.on}` : void 0;\n if (is(table, SQLiteTable)) {\n const tableName = table[SQLiteTable.Symbol.Name];\n const tableSchema = table[SQLiteTable.Symbol.Schema];\n const origTableName = table[SQLiteTable.Symbol.OriginalName];\n const alias = tableName === origTableName ? void 0 : joinMeta.alias;\n joinsArray.push(\n sql`${sql.raw(joinMeta.joinType)} join ${tableSchema ? sql`${sql.identifier(tableSchema)}.` : void 0}${sql.identifier(origTableName)}${alias && sql` ${sql.identifier(alias)}`}${onSql}`\n );\n } else {\n joinsArray.push(\n sql`${sql.raw(joinMeta.joinType)} join ${table}${onSql}`\n );\n }\n if (index < joins.length - 1) {\n joinsArray.push(sql` `);\n }\n }\n }\n return sql.join(joinsArray);\n }\n buildLimit(limit) {\n return typeof limit === \"object\" || typeof limit === \"number\" && limit >= 0 ? sql` limit ${limit}` : void 0;\n }\n buildOrderBy(orderBy) {\n const orderByList = [];\n if (orderBy) {\n for (const [index, orderByValue] of orderBy.entries()) {\n orderByList.push(orderByValue);\n if (index < orderBy.length - 1) {\n orderByList.push(sql`, `);\n }\n }\n }\n return orderByList.length > 0 ? sql` order by ${sql.join(orderByList)}` : void 0;\n }\n buildFromTable(table) {\n if (is(table, Table) && table[Table.Symbol.IsAlias]) {\n return sql`${sql`${sql.identifier(table[Table.Symbol.Schema] ?? \"\")}.`.if(table[Table.Symbol.Schema])}${sql.identifier(table[Table.Symbol.OriginalName])} ${sql.identifier(table[Table.Symbol.Name])}`;\n }\n return table;\n }\n buildSelectQuery({\n withList,\n fields,\n fieldsFlat,\n where,\n having,\n table,\n joins,\n orderBy,\n groupBy,\n limit,\n offset,\n distinct,\n setOperators\n }) {\n const fieldsList = fieldsFlat ?? orderSelectedFields(fields);\n for (const f of fieldsList) {\n if (is(f.field, Column) && getTableName(f.field.table) !== (is(table, Subquery) ? table._.alias : is(table, SQLiteViewBase) ? table[ViewBaseConfig].name : is(table, SQL) ? void 0 : getTableName(table)) && !((table2) => joins?.some(\n ({ alias }) => alias === (table2[Table.Symbol.IsAlias] ? getTableName(table2) : table2[Table.Symbol.BaseName])\n ))(f.field.table)) {\n const tableName = getTableName(f.field.table);\n throw new Error(\n `Your \"${f.path.join(\"->\")}\" field references a column \"${tableName}\".\"${f.field.name}\", but the table \"${tableName}\" is not part of the query! Did you forget to join it?`\n );\n }\n }\n const isSingleTable = !joins || joins.length === 0;\n const withSql = this.buildWithCTE(withList);\n const distinctSql = distinct ? sql` distinct` : void 0;\n const selection = this.buildSelection(fieldsList, { isSingleTable });\n const tableSql = this.buildFromTable(table);\n const joinsSql = this.buildJoins(joins);\n const whereSql = where ? sql` where ${where}` : void 0;\n const havingSql = having ? sql` having ${having}` : void 0;\n const groupByList = [];\n if (groupBy) {\n for (const [index, groupByValue] of groupBy.entries()) {\n groupByList.push(groupByValue);\n if (index < groupBy.length - 1) {\n groupByList.push(sql`, `);\n }\n }\n }\n const groupBySql = groupByList.length > 0 ? sql` group by ${sql.join(groupByList)}` : void 0;\n const orderBySql = this.buildOrderBy(orderBy);\n const limitSql = this.buildLimit(limit);\n const offsetSql = offset ? sql` offset ${offset}` : void 0;\n const finalQuery = sql`${withSql}select${distinctSql} ${selection} from ${tableSql}${joinsSql}${whereSql}${groupBySql}${havingSql}${orderBySql}${limitSql}${offsetSql}`;\n if (setOperators.length > 0) {\n return this.buildSetOperations(finalQuery, setOperators);\n }\n return finalQuery;\n }\n buildSetOperations(leftSelect, setOperators) {\n const [setOperator, ...rest] = setOperators;\n if (!setOperator) {\n throw new Error(\"Cannot pass undefined values to any set operator\");\n }\n if (rest.length === 0) {\n return this.buildSetOperationQuery({ leftSelect, setOperator });\n }\n return this.buildSetOperations(\n this.buildSetOperationQuery({ leftSelect, setOperator }),\n rest\n );\n }\n buildSetOperationQuery({\n leftSelect,\n setOperator: { type, isAll, rightSelect, limit, orderBy, offset }\n }) {\n const leftChunk = sql`${leftSelect.getSQL()} `;\n const rightChunk = sql`${rightSelect.getSQL()}`;\n let orderBySql;\n if (orderBy && orderBy.length > 0) {\n const orderByValues = [];\n for (const singleOrderBy of orderBy) {\n if (is(singleOrderBy, SQLiteColumn)) {\n orderByValues.push(sql.identifier(singleOrderBy.name));\n } else if (is(singleOrderBy, SQL)) {\n for (let i = 0; i < singleOrderBy.queryChunks.length; i++) {\n const chunk = singleOrderBy.queryChunks[i];\n if (is(chunk, SQLiteColumn)) {\n singleOrderBy.queryChunks[i] = sql.identifier(this.casing.getColumnCasing(chunk));\n }\n }\n orderByValues.push(sql`${singleOrderBy}`);\n } else {\n orderByValues.push(sql`${singleOrderBy}`);\n }\n }\n orderBySql = sql` order by ${sql.join(orderByValues, sql`, `)}`;\n }\n const limitSql = typeof limit === \"object\" || typeof limit === \"number\" && limit >= 0 ? sql` limit ${limit}` : void 0;\n const operatorChunk = sql.raw(`${type} ${isAll ? \"all \" : \"\"}`);\n const offsetSql = offset ? sql` offset ${offset}` : void 0;\n return sql`${leftChunk}${operatorChunk}${rightChunk}${orderBySql}${limitSql}${offsetSql}`;\n }\n buildInsertQuery({ table, values: valuesOrSelect, onConflict, returning, withList, select }) {\n const valuesSqlList = [];\n const columns = table[Table.Symbol.Columns];\n const colEntries = Object.entries(columns).filter(\n ([_, col]) => !col.shouldDisableInsert()\n );\n const insertOrder = colEntries.map(([, column]) => sql.identifier(this.casing.getColumnCasing(column)));\n if (select) {\n const select2 = valuesOrSelect;\n if (is(select2, SQL)) {\n valuesSqlList.push(select2);\n } else {\n valuesSqlList.push(select2.getSQL());\n }\n } else {\n const values = valuesOrSelect;\n valuesSqlList.push(sql.raw(\"values \"));\n for (const [valueIndex, value] of values.entries()) {\n const valueList = [];\n for (const [fieldName, col] of colEntries) {\n const colValue = value[fieldName];\n if (colValue === void 0 || is(colValue, Param) && colValue.value === void 0) {\n let defaultValue;\n if (col.default !== null && col.default !== void 0) {\n defaultValue = is(col.default, SQL) ? col.default : sql.param(col.default, col);\n } else if (col.defaultFn !== void 0) {\n const defaultFnResult = col.defaultFn();\n defaultValue = is(defaultFnResult, SQL) ? defaultFnResult : sql.param(defaultFnResult, col);\n } else if (!col.default && col.onUpdateFn !== void 0) {\n const onUpdateFnResult = col.onUpdateFn();\n defaultValue = is(onUpdateFnResult, SQL) ? onUpdateFnResult : sql.param(onUpdateFnResult, col);\n } else {\n defaultValue = sql`null`;\n }\n valueList.push(defaultValue);\n } else {\n valueList.push(colValue);\n }\n }\n valuesSqlList.push(valueList);\n if (valueIndex < values.length - 1) {\n valuesSqlList.push(sql`, `);\n }\n }\n }\n const withSql = this.buildWithCTE(withList);\n const valuesSql = sql.join(valuesSqlList);\n const returningSql = returning ? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}` : void 0;\n const onConflictSql = onConflict?.length ? sql.join(onConflict) : void 0;\n return sql`${withSql}insert into ${table} ${insertOrder} ${valuesSql}${onConflictSql}${returningSql}`;\n }\n sqlToQuery(sql2, invokeSource) {\n return sql2.toQuery({\n casing: this.casing,\n escapeName: this.escapeName,\n escapeParam: this.escapeParam,\n escapeString: this.escapeString,\n invokeSource\n });\n }\n buildRelationalQuery({\n fullSchema,\n schema,\n tableNamesMap,\n table,\n tableConfig,\n queryConfig: config,\n tableAlias,\n nestedQueryRelation,\n joinOn\n }) {\n let selection = [];\n let limit, offset, orderBy = [], where;\n const joins = [];\n if (config === true) {\n const selectionEntries = Object.entries(tableConfig.columns);\n selection = selectionEntries.map(([key, value]) => ({\n dbKey: value.name,\n tsKey: key,\n field: aliasedTableColumn(value, tableAlias),\n relationTableTsKey: void 0,\n isJson: false,\n selection: []\n }));\n } else {\n const aliasedColumns = Object.fromEntries(\n Object.entries(tableConfig.columns).map(([key, value]) => [key, aliasedTableColumn(value, tableAlias)])\n );\n if (config.where) {\n const whereSql = typeof config.where === \"function\" ? config.where(aliasedColumns, getOperators()) : config.where;\n where = whereSql && mapColumnsInSQLToAlias(whereSql, tableAlias);\n }\n const fieldsSelection = [];\n let selectedColumns = [];\n if (config.columns) {\n let isIncludeMode = false;\n for (const [field, value] of Object.entries(config.columns)) {\n if (value === void 0) {\n continue;\n }\n if (field in tableConfig.columns) {\n if (!isIncludeMode && value === true) {\n isIncludeMode = true;\n }\n selectedColumns.push(field);\n }\n }\n if (selectedColumns.length > 0) {\n selectedColumns = isIncludeMode ? selectedColumns.filter((c) => config.columns?.[c] === true) : Object.keys(tableConfig.columns).filter((key) => !selectedColumns.includes(key));\n }\n } else {\n selectedColumns = Object.keys(tableConfig.columns);\n }\n for (const field of selectedColumns) {\n const column = tableConfig.columns[field];\n fieldsSelection.push({ tsKey: field, value: column });\n }\n let selectedRelations = [];\n if (config.with) {\n selectedRelations = Object.entries(config.with).filter((entry) => !!entry[1]).map(([tsKey, queryConfig]) => ({ tsKey, queryConfig, relation: tableConfig.relations[tsKey] }));\n }\n let extras;\n if (config.extras) {\n extras = typeof config.extras === \"function\" ? config.extras(aliasedColumns, { sql }) : config.extras;\n for (const [tsKey, value] of Object.entries(extras)) {\n fieldsSelection.push({\n tsKey,\n value: mapColumnsInAliasedSQLToAlias(value, tableAlias)\n });\n }\n }\n for (const { tsKey, value } of fieldsSelection) {\n selection.push({\n dbKey: is(value, SQL.Aliased) ? value.fieldAlias : tableConfig.columns[tsKey].name,\n tsKey,\n field: is(value, Column) ? aliasedTableColumn(value, tableAlias) : value,\n relationTableTsKey: void 0,\n isJson: false,\n selection: []\n });\n }\n let orderByOrig = typeof config.orderBy === \"function\" ? config.orderBy(aliasedColumns, getOrderByOperators()) : config.orderBy ?? [];\n if (!Array.isArray(orderByOrig)) {\n orderByOrig = [orderByOrig];\n }\n orderBy = orderByOrig.map((orderByValue) => {\n if (is(orderByValue, Column)) {\n return aliasedTableColumn(orderByValue, tableAlias);\n }\n return mapColumnsInSQLToAlias(orderByValue, tableAlias);\n });\n limit = config.limit;\n offset = config.offset;\n for (const {\n tsKey: selectedRelationTsKey,\n queryConfig: selectedRelationConfigValue,\n relation\n } of selectedRelations) {\n const normalizedRelation = normalizeRelation(schema, tableNamesMap, relation);\n const relationTableName = getTableUniqueName(relation.referencedTable);\n const relationTableTsName = tableNamesMap[relationTableName];\n const relationTableAlias = `${tableAlias}_${selectedRelationTsKey}`;\n const joinOn2 = and(\n ...normalizedRelation.fields.map(\n (field2, i) => eq(\n aliasedTableColumn(normalizedRelation.references[i], relationTableAlias),\n aliasedTableColumn(field2, tableAlias)\n )\n )\n );\n const builtRelation = this.buildRelationalQuery({\n fullSchema,\n schema,\n tableNamesMap,\n table: fullSchema[relationTableTsName],\n tableConfig: schema[relationTableTsName],\n queryConfig: is(relation, One) ? selectedRelationConfigValue === true ? { limit: 1 } : { ...selectedRelationConfigValue, limit: 1 } : selectedRelationConfigValue,\n tableAlias: relationTableAlias,\n joinOn: joinOn2,\n nestedQueryRelation: relation\n });\n const field = sql`(${builtRelation.sql})`.as(selectedRelationTsKey);\n selection.push({\n dbKey: selectedRelationTsKey,\n tsKey: selectedRelationTsKey,\n field,\n relationTableTsKey: relationTableTsName,\n isJson: true,\n selection: builtRelation.selection\n });\n }\n }\n if (selection.length === 0) {\n throw new DrizzleError({\n message: `No fields selected for table \"${tableConfig.tsName}\" (\"${tableAlias}\"). You need to have at least one item in \"columns\", \"with\" or \"extras\". If you need to select all columns, omit the \"columns\" key or set it to undefined.`\n });\n }\n let result;\n where = and(joinOn, where);\n if (nestedQueryRelation) {\n let field = sql`json_array(${sql.join(\n selection.map(\n ({ field: field2 }) => is(field2, SQLiteColumn) ? sql.identifier(this.casing.getColumnCasing(field2)) : is(field2, SQL.Aliased) ? field2.sql : field2\n ),\n sql`, `\n )})`;\n if (is(nestedQueryRelation, Many)) {\n field = sql`coalesce(json_group_array(${field}), json_array())`;\n }\n const nestedSelection = [{\n dbKey: \"data\",\n tsKey: \"data\",\n field: field.as(\"data\"),\n isJson: true,\n relationTableTsKey: tableConfig.tsName,\n selection\n }];\n const needsSubquery = limit !== void 0 || offset !== void 0 || orderBy.length > 0;\n if (needsSubquery) {\n result = this.buildSelectQuery({\n table: aliasedTable(table, tableAlias),\n fields: {},\n fieldsFlat: [\n {\n path: [],\n field: sql.raw(\"*\")\n }\n ],\n where,\n limit,\n offset,\n orderBy,\n setOperators: []\n });\n where = void 0;\n limit = void 0;\n offset = void 0;\n orderBy = void 0;\n } else {\n result = aliasedTable(table, tableAlias);\n }\n result = this.buildSelectQuery({\n table: is(result, SQLiteTable) ? result : new Subquery(result, {}, tableAlias),\n fields: {},\n fieldsFlat: nestedSelection.map(({ field: field2 }) => ({\n path: [],\n field: is(field2, Column) ? aliasedTableColumn(field2, tableAlias) : field2\n })),\n joins,\n where,\n limit,\n offset,\n orderBy,\n setOperators: []\n });\n } else {\n result = this.buildSelectQuery({\n table: aliasedTable(table, tableAlias),\n fields: {},\n fieldsFlat: selection.map(({ field }) => ({\n path: [],\n field: is(field, Column) ? aliasedTableColumn(field, tableAlias) : field\n })),\n joins,\n where,\n limit,\n offset,\n orderBy,\n setOperators: []\n });\n }\n return {\n tableTsKey: tableConfig.tsName,\n sql: result,\n selection\n };\n }\n}\nclass SQLiteSyncDialect extends SQLiteDialect {\n static [entityKind] = \"SQLiteSyncDialect\";\n migrate(migrations, session, config) {\n const migrationsTable = config === void 0 ? \"__drizzle_migrations\" : typeof config === \"string\" ? \"__drizzle_migrations\" : config.migrationsTable ?? \"__drizzle_migrations\";\n const migrationTableCreate = sql`\n\t\t\tCREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (\n\t\t\t\tid SERIAL PRIMARY KEY,\n\t\t\t\thash text NOT NULL,\n\t\t\t\tcreated_at numeric\n\t\t\t)\n\t\t`;\n session.run(migrationTableCreate);\n const dbMigrations = session.values(\n sql`SELECT id, hash, created_at FROM ${sql.identifier(migrationsTable)} ORDER BY created_at DESC LIMIT 1`\n );\n const lastDbMigration = dbMigrations[0] ?? void 0;\n session.run(sql`BEGIN`);\n try {\n for (const migration of migrations) {\n if (!lastDbMigration || Number(lastDbMigration[2]) < migration.folderMillis) {\n for (const stmt of migration.sql) {\n session.run(sql.raw(stmt));\n }\n session.run(\n sql`INSERT INTO ${sql.identifier(migrationsTable)} (\"hash\", \"created_at\") VALUES(${migration.hash}, ${migration.folderMillis})`\n );\n }\n }\n session.run(sql`COMMIT`);\n } catch (e) {\n session.run(sql`ROLLBACK`);\n throw e;\n }\n }\n}\nclass SQLiteAsyncDialect extends SQLiteDialect {\n static [entityKind] = \"SQLiteAsyncDialect\";\n async migrate(migrations, session, config) {\n const migrationsTable = config === void 0 ? \"__drizzle_migrations\" : typeof config === \"string\" ? \"__drizzle_migrations\" : config.migrationsTable ?? \"__drizzle_migrations\";\n const migrationTableCreate = sql`\n\t\t\tCREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (\n\t\t\t\tid SERIAL PRIMARY KEY,\n\t\t\t\thash text NOT NULL,\n\t\t\t\tcreated_at numeric\n\t\t\t)\n\t\t`;\n await session.run(migrationTableCreate);\n const dbMigrations = await session.values(\n sql`SELECT id, hash, created_at FROM ${sql.identifier(migrationsTable)} ORDER BY created_at DESC LIMIT 1`\n );\n const lastDbMigration = dbMigrations[0] ?? void 0;\n await session.transaction(async (tx) => {\n for (const migration of migrations) {\n if (!lastDbMigration || Number(lastDbMigration[2]) < migration.folderMillis) {\n for (const stmt of migration.sql) {\n await tx.run(sql.raw(stmt));\n }\n await tx.run(\n sql`INSERT INTO ${sql.identifier(migrationsTable)} (\"hash\", \"created_at\") VALUES(${migration.hash}, ${migration.folderMillis})`\n );\n }\n }\n });\n }\n}\nexport {\n SQLiteAsyncDialect,\n SQLiteDialect,\n SQLiteSyncDialect\n};\n//# sourceMappingURL=dialect.js.map"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { entityKind } from "../entity.js";
|
|
2
|
+
import { TableName } from "../table.utils.js";
|
|
3
|
+
|
|
4
|
+
//#region ../../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
|
|
5
|
+
var ForeignKeyBuilder = class {
|
|
6
|
+
static [entityKind] = "SQLiteForeignKeyBuilder";
|
|
7
|
+
/** @internal */
|
|
8
|
+
reference;
|
|
9
|
+
/** @internal */
|
|
10
|
+
_onUpdate;
|
|
11
|
+
/** @internal */
|
|
12
|
+
_onDelete;
|
|
13
|
+
constructor(config, actions) {
|
|
14
|
+
this.reference = () => {
|
|
15
|
+
const { name, columns, foreignColumns } = config();
|
|
16
|
+
return {
|
|
17
|
+
name,
|
|
18
|
+
columns,
|
|
19
|
+
foreignTable: foreignColumns[0].table,
|
|
20
|
+
foreignColumns
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
if (actions) {
|
|
24
|
+
this._onUpdate = actions.onUpdate;
|
|
25
|
+
this._onDelete = actions.onDelete;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
onUpdate(action) {
|
|
29
|
+
this._onUpdate = action;
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
onDelete(action) {
|
|
33
|
+
this._onDelete = action;
|
|
34
|
+
return this;
|
|
35
|
+
}
|
|
36
|
+
/** @internal */
|
|
37
|
+
build(table) {
|
|
38
|
+
return new ForeignKey(table, this);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
var ForeignKey = class {
|
|
42
|
+
constructor(table, builder) {
|
|
43
|
+
this.table = table;
|
|
44
|
+
this.reference = builder.reference;
|
|
45
|
+
this.onUpdate = builder._onUpdate;
|
|
46
|
+
this.onDelete = builder._onDelete;
|
|
47
|
+
}
|
|
48
|
+
static [entityKind] = "SQLiteForeignKey";
|
|
49
|
+
reference;
|
|
50
|
+
onUpdate;
|
|
51
|
+
onDelete;
|
|
52
|
+
getName() {
|
|
53
|
+
const { name, columns, foreignColumns } = this.reference();
|
|
54
|
+
const columnNames = columns.map((column) => column.name);
|
|
55
|
+
const foreignColumnNames = foreignColumns.map((column) => column.name);
|
|
56
|
+
const chunks = [
|
|
57
|
+
this.table[TableName],
|
|
58
|
+
...columnNames,
|
|
59
|
+
foreignColumns[0].table[TableName],
|
|
60
|
+
...foreignColumnNames
|
|
61
|
+
];
|
|
62
|
+
return name ?? `${chunks.join("_")}_fk`;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
//#endregion
|
|
67
|
+
export { ForeignKeyBuilder };
|
|
68
|
+
//# sourceMappingURL=foreign-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foreign-keys.js","names":[],"sources":["../../../../../../../../../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"],"sourcesContent":["import { entityKind } from \"../entity.js\";\nimport { TableName } from \"../table.utils.js\";\nclass ForeignKeyBuilder {\n static [entityKind] = \"SQLiteForeignKeyBuilder\";\n /** @internal */\n reference;\n /** @internal */\n _onUpdate;\n /** @internal */\n _onDelete;\n constructor(config, actions) {\n this.reference = () => {\n const { name, columns, foreignColumns } = config();\n return { name, columns, foreignTable: foreignColumns[0].table, foreignColumns };\n };\n if (actions) {\n this._onUpdate = actions.onUpdate;\n this._onDelete = actions.onDelete;\n }\n }\n onUpdate(action) {\n this._onUpdate = action;\n return this;\n }\n onDelete(action) {\n this._onDelete = action;\n return this;\n }\n /** @internal */\n build(table) {\n return new ForeignKey(table, this);\n }\n}\nclass ForeignKey {\n constructor(table, builder) {\n this.table = table;\n this.reference = builder.reference;\n this.onUpdate = builder._onUpdate;\n this.onDelete = builder._onDelete;\n }\n static [entityKind] = \"SQLiteForeignKey\";\n reference;\n onUpdate;\n onDelete;\n getName() {\n const { name, columns, foreignColumns } = this.reference();\n const columnNames = columns.map((column) => column.name);\n const foreignColumnNames = foreignColumns.map((column) => column.name);\n const chunks = [\n this.table[TableName],\n ...columnNames,\n foreignColumns[0].table[TableName],\n ...foreignColumnNames\n ];\n return name ?? `${chunks.join(\"_\")}_fk`;\n }\n}\nfunction foreignKey(config) {\n function mappedConfig() {\n if (typeof config === \"function\") {\n const { name, columns, foreignColumns } = config();\n return {\n name,\n columns,\n foreignColumns\n };\n }\n return config;\n }\n return new ForeignKeyBuilder(mappedConfig);\n}\nexport {\n ForeignKey,\n ForeignKeyBuilder,\n foreignKey\n};\n//# sourceMappingURL=foreign-keys.js.map"],"x_google_ignoreList":[0],"mappings":";;;;AAEA,IAAM,oBAAN,MAAwB;CACtB,QAAQ,cAAc;;CAEtB;;CAEA;;CAEA;CACA,YAAY,QAAQ,SAAS;AAC3B,OAAK,kBAAkB;GACrB,MAAM,EAAE,MAAM,SAAS,mBAAmB,QAAQ;AAClD,UAAO;IAAE;IAAM;IAAS,cAAc,eAAe,GAAG;IAAO;IAAgB;;AAEjF,MAAI,SAAS;AACX,QAAK,YAAY,QAAQ;AACzB,QAAK,YAAY,QAAQ;;;CAG7B,SAAS,QAAQ;AACf,OAAK,YAAY;AACjB,SAAO;;CAET,SAAS,QAAQ;AACf,OAAK,YAAY;AACjB,SAAO;;;CAGT,MAAM,OAAO;AACX,SAAO,IAAI,WAAW,OAAO,KAAK;;;AAGtC,IAAM,aAAN,MAAiB;CACf,YAAY,OAAO,SAAS;AAC1B,OAAK,QAAQ;AACb,OAAK,YAAY,QAAQ;AACzB,OAAK,WAAW,QAAQ;AACxB,OAAK,WAAW,QAAQ;;CAE1B,QAAQ,cAAc;CACtB;CACA;CACA;CACA,UAAU;EACR,MAAM,EAAE,MAAM,SAAS,mBAAmB,KAAK,WAAW;EAC1D,MAAM,cAAc,QAAQ,KAAK,WAAW,OAAO,KAAK;EACxD,MAAM,qBAAqB,eAAe,KAAK,WAAW,OAAO,KAAK;EACtE,MAAM,SAAS;GACb,KAAK,MAAM;GACX,GAAG;GACH,eAAe,GAAG,MAAM;GACxB,GAAG;GACJ;AACD,SAAO,QAAQ,GAAG,OAAO,KAAK,IAAI,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { entityKind } from "../../entity.js";
|
|
2
|
+
import { SQL, sql } from "../../sql/sql.js";
|
|
3
|
+
|
|
4
|
+
//#region ../../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
|
|
5
|
+
var SQLiteCountBuilder = class SQLiteCountBuilder extends SQL {
|
|
6
|
+
constructor(params) {
|
|
7
|
+
super(SQLiteCountBuilder.buildEmbeddedCount(params.source, params.filters).queryChunks);
|
|
8
|
+
this.params = params;
|
|
9
|
+
this.session = params.session;
|
|
10
|
+
this.sql = SQLiteCountBuilder.buildCount(params.source, params.filters);
|
|
11
|
+
}
|
|
12
|
+
sql;
|
|
13
|
+
static [entityKind] = "SQLiteCountBuilderAsync";
|
|
14
|
+
[Symbol.toStringTag] = "SQLiteCountBuilderAsync";
|
|
15
|
+
session;
|
|
16
|
+
static buildEmbeddedCount(source, filters) {
|
|
17
|
+
return sql`(select count(*) from ${source}${sql.raw(" where ").if(filters)}${filters})`;
|
|
18
|
+
}
|
|
19
|
+
static buildCount(source, filters) {
|
|
20
|
+
return sql`select count(*) from ${source}${sql.raw(" where ").if(filters)}${filters}`;
|
|
21
|
+
}
|
|
22
|
+
then(onfulfilled, onrejected) {
|
|
23
|
+
return Promise.resolve(this.session.count(this.sql)).then(onfulfilled, onrejected);
|
|
24
|
+
}
|
|
25
|
+
catch(onRejected) {
|
|
26
|
+
return this.then(void 0, onRejected);
|
|
27
|
+
}
|
|
28
|
+
finally(onFinally) {
|
|
29
|
+
return this.then((value) => {
|
|
30
|
+
onFinally?.();
|
|
31
|
+
return value;
|
|
32
|
+
}, (reason) => {
|
|
33
|
+
onFinally?.();
|
|
34
|
+
throw reason;
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
//#endregion
|
|
40
|
+
export { SQLiteCountBuilder };
|
|
41
|
+
//# sourceMappingURL=count.js.map
|