@leemour/cli-messaging 0.87.0 → 0.89.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/background/index.d.ts +5 -0
- package/dist/background/index.d.ts.map +1 -0
- package/dist/background/index.js +5 -0
- package/dist/background/index.js.map +1 -0
- package/dist/background/lock.d.ts +17 -0
- package/dist/background/lock.d.ts.map +1 -0
- package/dist/background/lock.js +34 -0
- package/dist/background/lock.js.map +1 -0
- package/dist/background/processes.d.ts.map +1 -0
- package/dist/background/processes.js.map +1 -0
- package/dist/background/system.d.ts +20 -0
- package/dist/background/system.d.ts.map +1 -0
- package/dist/background/system.js +39 -0
- package/dist/background/system.js.map +1 -0
- package/dist/background/units.d.ts +42 -0
- package/dist/background/units.d.ts.map +1 -0
- package/dist/background/units.js +178 -0
- package/dist/background/units.js.map +1 -0
- package/dist/cli/bot/port.d.ts +29 -0
- package/dist/cli/bot/port.d.ts.map +1 -0
- package/dist/cli/bot/port.js +2 -0
- package/dist/cli/bot/port.js.map +1 -0
- package/dist/cli/bot/registry.d.ts +37 -0
- package/dist/cli/bot/registry.d.ts.map +1 -0
- package/dist/cli/bot/registry.js +94 -0
- package/dist/cli/bot/registry.js.map +1 -0
- package/dist/cli/bot/token.d.ts +25 -0
- package/dist/cli/bot/token.d.ts.map +1 -0
- package/dist/cli/bot/token.js +36 -0
- package/dist/cli/bot/token.js.map +1 -0
- package/dist/cli/config-command.d.ts.map +1 -1
- package/dist/cli/config-command.js +17 -5
- package/dist/cli/config-command.js.map +1 -1
- package/dist/cli/context.d.ts +3 -0
- package/dist/cli/context.d.ts.map +1 -1
- package/dist/cli/context.js.map +1 -1
- package/dist/cli/index.d.ts +5 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +3 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/messenger/admin-moderation-command.d.ts +11 -0
- package/dist/cli/messenger/admin-moderation-command.d.ts.map +1 -0
- package/dist/cli/messenger/admin-moderation-command.js +83 -0
- package/dist/cli/messenger/admin-moderation-command.js.map +1 -0
- package/dist/cli/messenger/after.d.ts +18 -5
- package/dist/cli/messenger/after.d.ts.map +1 -1
- package/dist/cli/messenger/after.js +19 -30
- package/dist/cli/messenger/after.js.map +1 -1
- package/dist/cli/messenger/ask.d.ts +2 -0
- package/dist/cli/messenger/ask.d.ts.map +1 -1
- package/dist/cli/messenger/ask.js +7 -0
- package/dist/cli/messenger/ask.js.map +1 -1
- package/dist/cli/messenger/backfill-jobs.d.ts.map +1 -1
- package/dist/cli/messenger/backfill-jobs.js +1 -1
- package/dist/cli/messenger/backfill-jobs.js.map +1 -1
- package/dist/cli/messenger/chats-command.d.ts.map +1 -1
- package/dist/cli/messenger/chats-command.js +3 -0
- package/dist/cli/messenger/chats-command.js.map +1 -1
- package/dist/cli/messenger/context.d.ts +5 -0
- package/dist/cli/messenger/context.d.ts.map +1 -1
- package/dist/cli/messenger/context.js +3 -0
- package/dist/cli/messenger/context.js.map +1 -1
- package/dist/cli/messenger/conversations-command.d.ts +10 -0
- package/dist/cli/messenger/conversations-command.d.ts.map +1 -0
- package/dist/cli/messenger/conversations-command.js +101 -0
- package/dist/cli/messenger/conversations-command.js.map +1 -0
- package/dist/cli/messenger/hearing-command.d.ts.map +1 -1
- package/dist/cli/messenger/hearing-command.js +4 -1
- package/dist/cli/messenger/hearing-command.js.map +1 -1
- package/dist/cli/messenger/messages-command.d.ts.map +1 -1
- package/dist/cli/messenger/messages-command.js +9 -7
- package/dist/cli/messenger/messages-command.js.map +1 -1
- package/dist/cli/messenger/port.d.ts +6 -1
- package/dist/cli/messenger/port.d.ts.map +1 -1
- package/dist/cli/messenger/port.js.map +1 -1
- package/dist/cli/messenger/serve-command.d.ts +1 -13
- package/dist/cli/messenger/serve-command.d.ts.map +1 -1
- package/dist/cli/messenger/serve-command.js +7 -32
- package/dist/cli/messenger/serve-command.js.map +1 -1
- package/dist/cli/messenger/server-command.d.ts +1 -17
- package/dist/cli/messenger/server-command.d.ts.map +1 -1
- package/dist/cli/messenger/server-command.js +24 -222
- package/dist/cli/messenger/server-command.js.map +1 -1
- package/dist/cli/messenger/store-maintenance-command.d.ts.map +1 -1
- package/dist/cli/messenger/store-maintenance-command.js +35 -1
- package/dist/cli/messenger/store-maintenance-command.js.map +1 -1
- package/dist/cli/messenger/transcribe-command.d.ts.map +1 -1
- package/dist/cli/messenger/transcribe-command.js +4 -1
- package/dist/cli/messenger/transcribe-command.js.map +1 -1
- package/dist/cli/settings.d.ts +25 -1
- package/dist/cli/settings.d.ts.map +1 -1
- package/dist/cli/settings.js +108 -34
- package/dist/cli/settings.js.map +1 -1
- package/dist/conversations/link.d.ts +2 -2
- package/dist/conversations/link.d.ts.map +1 -1
- package/dist/conversations/link.js +6 -4
- package/dist/conversations/link.js.map +1 -1
- package/dist/domain/models.d.ts +4 -0
- package/dist/domain/models.d.ts.map +1 -1
- package/dist/domain/send-time.d.ts +1 -1
- package/dist/domain/send-time.js +4 -4
- package/dist/domain/send-time.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/confirm.js +1 -1
- package/dist/mcp/confirm.js.map +1 -1
- package/dist/mcp/tool.d.ts +2 -0
- package/dist/mcp/tool.d.ts.map +1 -1
- package/dist/mcp/tool.js +2 -0
- package/dist/mcp/tool.js.map +1 -1
- package/dist/mcp/tools/chats.d.ts.map +1 -1
- package/dist/mcp/tools/chats.js +13 -8
- package/dist/mcp/tools/chats.js.map +1 -1
- package/dist/mcp/tools/conversations.d.ts +5 -0
- package/dist/mcp/tools/conversations.d.ts.map +1 -0
- package/dist/mcp/tools/conversations.js +56 -0
- package/dist/mcp/tools/conversations.js.map +1 -0
- package/dist/mcp/tools/inbox.js +3 -3
- package/dist/mcp/tools/inbox.js.map +1 -1
- package/dist/mcp/tools/messages-send.js +4 -4
- package/dist/mcp/tools/messages-send.js.map +1 -1
- package/dist/mcp/tools/messages.d.ts.map +1 -1
- package/dist/mcp/tools/messages.js +25 -18
- package/dist/mcp/tools/messages.js.map +1 -1
- package/dist/mcp/tools/moderation.d.ts +8 -0
- package/dist/mcp/tools/moderation.d.ts.map +1 -0
- package/dist/mcp/tools/moderation.js +36 -0
- package/dist/mcp/tools/moderation.js.map +1 -0
- package/dist/mcp/tools/review.d.ts.map +1 -1
- package/dist/mcp/tools/review.js +3 -3
- package/dist/mcp/tools/review.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +4 -0
- package/dist/mcp/tools.js.map +1 -1
- package/dist/moderation/check.d.ts +83 -0
- package/dist/moderation/check.d.ts.map +1 -0
- package/dist/moderation/check.js +227 -0
- package/dist/moderation/check.js.map +1 -0
- package/dist/moderation/rules.d.ts +105 -0
- package/dist/moderation/rules.d.ts.map +1 -0
- package/dist/moderation/rules.js +158 -0
- package/dist/moderation/rules.js.map +1 -0
- package/dist/parity/bin.js +15 -2
- package/dist/parity/bin.js.map +1 -1
- package/dist/parity/index.d.ts +1 -0
- package/dist/parity/index.d.ts.map +1 -1
- package/dist/parity/index.js +1 -0
- package/dist/parity/index.js.map +1 -1
- package/dist/parity/wording.d.ts +7 -0
- package/dist/parity/wording.d.ts.map +1 -0
- package/dist/parity/wording.js +31 -0
- package/dist/parity/wording.js.map +1 -0
- package/dist/sends/permissions.d.ts +5 -3
- package/dist/sends/permissions.d.ts.map +1 -1
- package/dist/sends/permissions.js +30 -6
- package/dist/sends/permissions.js.map +1 -1
- package/dist/services/conversations.d.ts +45 -0
- package/dist/services/conversations.d.ts.map +1 -0
- package/dist/services/conversations.js +92 -0
- package/dist/services/conversations.js.map +1 -0
- package/dist/services/deps.d.ts +7 -1
- package/dist/services/deps.d.ts.map +1 -1
- package/dist/services/deps.js +2 -1
- package/dist/services/deps.js.map +1 -1
- package/dist/services/index.d.ts +8 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +6 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/messages.d.ts +2 -0
- package/dist/services/messages.d.ts.map +1 -1
- package/dist/services/messages.js +7 -1
- package/dist/services/messages.js.map +1 -1
- package/dist/services/moderation.d.ts +33 -0
- package/dist/services/moderation.d.ts.map +1 -0
- package/dist/services/moderation.js +99 -0
- package/dist/services/moderation.js.map +1 -0
- package/dist/speech/transcribe.d.ts +5 -1
- package/dist/speech/transcribe.d.ts.map +1 -1
- package/dist/speech/transcribe.js +2 -2
- package/dist/speech/transcribe.js.map +1 -1
- package/dist/store/sqlite/conversations.d.ts +45 -0
- package/dist/store/sqlite/conversations.d.ts.map +1 -0
- package/dist/store/sqlite/conversations.js +309 -0
- package/dist/store/sqlite/conversations.js.map +1 -0
- package/dist/store/sqlite/drizzle/bun.js +1 -1
- package/dist/store/sqlite/drizzle/core.d.ts +1 -1
- package/dist/store/sqlite/drizzle/core.d.ts.map +1 -1
- package/dist/store/sqlite/drizzle/core.js +5 -3
- package/dist/store/sqlite/drizzle/core.js.map +1 -1
- package/dist/store/sqlite/drizzle/node.js +1 -1
- package/dist/store/sqlite/drizzle/{shared-JAIU3GYB.js → shared-VIVPOB3Q.js} +5 -1
- package/dist/store/sqlite/drizzle/{shared-JAIU3GYB.js.map → shared-VIVPOB3Q.js.map} +1 -1
- package/dist/store/sqlite/manifest.d.ts.map +1 -1
- package/dist/store/sqlite/manifest.js +1 -0
- package/dist/store/sqlite/manifest.js.map +1 -1
- package/dist/store/sqlite/messages.d.ts.map +1 -1
- package/dist/store/sqlite/messages.js +2 -0
- package/dist/store/sqlite/messages.js.map +1 -1
- package/dist/store/sqlite/migrations.generated.d.ts.map +1 -1
- package/dist/store/sqlite/migrations.generated.js +15 -0
- package/dist/store/sqlite/migrations.generated.js.map +1 -1
- package/dist/store/sqlite/reads.d.ts +50 -0
- package/dist/store/sqlite/reads.d.ts.map +1 -1
- package/dist/store/sqlite/reads.js +2 -1
- package/dist/store/sqlite/reads.js.map +1 -1
- package/dist/store/sqlite/schema.d.ts +494 -0
- package/dist/store/sqlite/schema.d.ts.map +1 -1
- package/dist/store/sqlite/schema.js +78 -1
- package/dist/store/sqlite/schema.js.map +1 -1
- package/dist/store/sqlite/search.d.ts +33 -0
- package/dist/store/sqlite/search.d.ts.map +1 -1
- package/dist/store/store.d.ts +70 -0
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +46 -0
- package/dist/store/store.js.map +1 -1
- package/package.json +5 -1
- package/parity.json +115 -104
- package/dist/cli/messenger/processes.d.ts.map +0 -1
- package/dist/cli/messenger/processes.js.map +0 -1
- /package/dist/{cli/messenger → background}/processes.d.ts +0 -0
- /package/dist/{cli/messenger → background}/processes.js +0 -0
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/entity.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/column-common.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/column.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/table.utils.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/table.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/subquery.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/tracing.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/view-common.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sql/sql.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sql/expressions/conditions.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sql/expressions/select.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/column-builder.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/foreign-keys.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/columns/common.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/utils.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/columns/integer.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/columns/real.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/columns/text.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/columns/blob.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/columns/custom.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/columns/numeric.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/columns/all.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/casing.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/table.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/indexes.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/primary-keys.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/unique-constraint.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/query-promise.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/errors.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/alias.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/relations.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/logger.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/utils.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/view-base.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/selection-proxy.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/query-builders/query-builder.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/query-builders/select.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/dialect.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/query-builders/query-builder.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/query-builders/count.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/async/count.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/query-builders/query.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/async/query.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/query-builders/delete.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/async/delete.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/query-builders/insert.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/async/insert.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/query-builders/raw.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/async/raw.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/async/select.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/query-builders/update.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/async/update.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/async/db.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/session.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/cache/core/cache.ts", "../../../../node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_valibot@1.5.0_typescript@7.0.2__zod@4.6.5/node_modules/src/sqlite-core/async/session.ts"],
|
|
4
4
|
"sourcesContent": ["export const entityKind = Symbol.for('drizzle:entityKind');\nexport const hasOwnEntityKind = Symbol.for('drizzle:hasOwnEntityKind');\n\nexport interface DrizzleEntity {\n\t[entityKind]: string;\n}\n\nexport type DrizzleEntityClass<T> =\n\t& ((abstract new(...args: any[]) => T) | (new(...args: any[]) => T))\n\t& DrizzleEntity;\n\nexport function is<T extends DrizzleEntityClass<any>>(value: any, type: T): value is InstanceType<T> {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\n\tif (value instanceof type) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\treturn true;\n\t}\n\n\tif (!Object.prototype.hasOwnProperty.call(type, entityKind)) {\n\t\tthrow new Error(\n\t\t\t`Class \"${\n\t\t\t\ttype.name ?? '<unknown>'\n\t\t\t}\" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`,\n\t\t);\n\t}\n\n\tlet cls = Object.getPrototypeOf(value)?.constructor;\n\tif (cls) {\n\t\t// Traverse the prototype chain to find the entityKind\n\t\twhile (cls) {\n\t\t\tif (entityKind in cls && cls[entityKind] === type[entityKind]) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcls = Object.getPrototypeOf(cls);\n\t\t}\n\t}\n\n\treturn false;\n}\n", "export const OriginalColumn = Symbol.for('drizzle:OriginalColumn');\n", "import type {\n\tColumnBuilderRuntimeConfig,\n\tColumnType,\n\tGeneratedColumnConfig,\n\tGeneratedIdentityConfig,\n} from './column-builder.ts';\nimport { OriginalColumn } from './column-common.ts';\nimport { entityKind } from './entity.ts';\nimport type { DriverValueDecoderFn, DriverValueEncoderFn, DriverValueMapper, SQL, SQLWrapper } from './sql/sql.ts';\nimport type { Table } from './table.ts';\nimport type { Update } from './utils.ts';\n\nexport type Columns = Record<string, Column<any>>;\n\nexport interface ColumnBaseConfig<TDataType extends ColumnType> {\n\tname: string;\n\tdataType: TDataType;\n\ttableName: string;\n\tnotNull: boolean;\n\thasDefault: boolean;\n\tisPrimaryKey: boolean;\n\tisAutoincrement: boolean;\n\thasRuntimeDefault: boolean;\n\tdata: unknown;\n\tdriverParam: unknown;\n\tenumValues: string[] | undefined;\n\tgenerated: unknown;\n\tidentity: undefined | 'always' | 'byDefault';\n}\n\nconst noop: DriverValueDecoderFn<any, any> | DriverValueEncoderFn<any, any> = (v) => v;\nnoop.isNoop = true;\n\nexport interface Column<\n\tout T extends ColumnBaseConfig<ColumnType> = ColumnBaseConfig<ColumnType>,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tout TRuntimeConfig extends object = object,\n> extends DriverValueMapper<T['data'], T['driverParam']>, SQLWrapper {\n\t// SQLWrapper runtime implementation is defined in 'sql/sql.ts'\n\t// `as` runtime implementation is defined in 'alias.ts'\n\tas(alias: string): this;\n}\n\n/*\n\t`Column` only accepts a full `ColumnConfig` as its generic.\n\tTo infer parts of the config, use `AnyColumn` that accepts a partial config.\n\tSee `GetColumnData` for example usage of inferring.\n*/\nexport abstract class Column<\n\tout T extends ColumnBaseConfig<ColumnType> = ColumnBaseConfig<ColumnType>,\n\tout TRuntimeConfig extends object = object,\n> implements DriverValueMapper<T['data'], T['driverParam']>, SQLWrapper {\n\tstatic readonly [entityKind]: string = 'Column';\n\n\tdeclare readonly _: T;\n\n\t/** @internal */\n\treadonly codec?: string;\n\n\treadonly name: string;\n\treadonly keyAsName: boolean;\n\treadonly primary: boolean;\n\treadonly notNull: boolean;\n\treadonly default: T['data'] | SQL | undefined;\n\treadonly defaultFn: (() => T['data'] | SQL) | undefined;\n\treadonly onUpdateFn: (() => T['data'] | SQL) | undefined;\n\treadonly hasDefault: boolean;\n\treadonly isUnique: boolean;\n\treadonly uniqueName: string | undefined;\n\treadonly uniqueType: string | undefined;\n\treadonly dataType: T['dataType'];\n\treadonly columnType: string;\n\treadonly enumValues: T['enumValues'] = undefined;\n\treadonly generated: GeneratedColumnConfig<T['data']> | undefined = undefined;\n\treadonly generatedIdentity: GeneratedIdentityConfig | undefined = undefined;\n\treadonly length: number | undefined;\n\treadonly isLengthExact: boolean | undefined;\n\treadonly isAlias: boolean;\n\n\t/** @internal */\n\tprotected config: ColumnBuilderRuntimeConfig<T['data']> & TRuntimeConfig;\n\n\t/** @internal */\n\treadonly table: Table;\n\n\t/** @internal */\n\tprotected onInit(): void {}\n\n\tconstructor(\n\t\ttable: Table,\n\t\tconfig: ColumnBuilderRuntimeConfig<T['data']> & TRuntimeConfig,\n\t) {\n\t\tthis.config = config;\n\t\tthis.onInit();\n\t\tthis.table = table;\n\n\t\tthis.name = config.name;\n\t\tthis.isAlias = false;\n\t\tthis.keyAsName = config.keyAsName;\n\t\tthis.notNull = config.notNull;\n\t\tthis.default = config.default;\n\t\tthis.defaultFn = config.defaultFn;\n\t\tthis.onUpdateFn = config.onUpdateFn;\n\t\tthis.hasDefault = config.hasDefault;\n\t\tthis.primary = config.primaryKey;\n\t\tthis.isUnique = config.isUnique;\n\t\tthis.uniqueName = config.uniqueName;\n\t\tthis.uniqueType = config.uniqueType;\n\t\tthis.dataType = config.dataType as T['dataType'];\n\t\tthis.columnType = config.columnType;\n\t\tthis.generated = config.generated;\n\t\tthis.generatedIdentity = config.generatedIdentity;\n\t\tthis.length = (<{ length?: number }> config)['length'];\n\t\tthis.isLengthExact = (<{ isLengthExact?: boolean }> config)['isLengthExact'];\n\t}\n\n\tabstract getSQLType(): string;\n\n\tmapFromDriverValue = noop;\n\n\tmapToDriverValue = noop;\n\n\t// TODO: Revisit\n\t/** @internal */\n\tpostBuild() {\n\t\treturn this;\n\t}\n\n\t/** @internal */\n\tshouldDisableInsert(): boolean {\n\t\treturn this.config.generated !== undefined && this.config.generated.type !== 'byDefault';\n\t}\n\n\t/** @internal */\n\t[OriginalColumn](): this {\n\t\treturn this;\n\t}\n}\n\nexport type UpdateColConfig<\n\tT extends ColumnBaseConfig<ColumnType>,\n\tTUpdate extends Partial<ColumnBaseConfig<ColumnType>>,\n> = Update<T, TUpdate>;\n\nexport type AnyColumn<TPartial extends Partial<ColumnBaseConfig<ColumnType>> = {}> = Column<\n\tRequired<Update<ColumnBaseConfig<ColumnType>, TPartial>>\n>;\n\nexport type GetColumnData<TColumn extends Column, TInferMode extends 'query' | 'raw' = 'query'> =\n\t// dprint-ignore\n\tTInferMode extends 'raw' // Raw mode\n\t\t? TColumn['_']['data'] // Just return the underlying type\n\t\t: TColumn['_']['notNull'] extends true // Query mode\n\t\t? TColumn['_']['data'] // Query mode, not null\n\t\t: TColumn['_']['data'] | null; // Query mode, nullable\n\nexport type InferColumnsDataTypes<TColumns extends Record<string, Column>> = {\n\t[Key in keyof TColumns]: GetColumnData<TColumns[Key], 'query'>;\n};\n\nexport function getColumnTable<TTable extends Table<any> = Table<any>>(column: Column<any>): TTable {\n\treturn column.table as TTable;\n}\n", "/** @internal */\nexport const TableName = Symbol.for('drizzle:Name');\n", "import type { Column, Columns, GetColumnData } from './column.ts';\nimport { entityKind } from './entity.ts';\nimport type { OptionalKeyOnly, RequiredKeyOnly } from './operations.ts';\nimport type { View } from './sql/sql.ts';\nimport { TableName } from './table.utils.ts';\nimport type { Simplify, Update } from './utils.ts';\n\nexport interface TableConfig<TColumns extends Columns = Columns> {\n\tname: string;\n\tschema: string | undefined;\n\tcolumns: TColumns;\n\tdialect: string;\n}\n\nexport type UpdateTableConfig<T extends TableConfig, TUpdate extends Partial<TableConfig>> = Required<\n\tUpdate<T, TUpdate>\n>;\n\n/** @internal */\nexport const TableSchema = Symbol.for('drizzle:Schema');\n\n/** @internal */\nexport const TableColumns = Symbol.for('drizzle:Columns');\n\n/** @internal */\nexport const ExtraConfigColumns = Symbol.for('drizzle:ExtraConfigColumns');\n\n/** @internal */\nexport const OriginalName = Symbol.for('drizzle:OriginalName');\n\n/** @internal */\nexport const BaseName = Symbol.for('drizzle:BaseName');\n\n/** @internal */\nexport const IsAlias = Symbol.for('drizzle:IsAlias');\n\n/** @internal */\nexport const ExtraConfigBuilder = Symbol.for('drizzle:ExtraConfigBuilder');\n\nconst IsDrizzleTable = Symbol.for('drizzle:IsDrizzleTable');\n\nexport interface TableTypeConfig<T extends TableConfig> {\n\treadonly brand: 'Table';\n\treadonly name: T['name'];\n\treadonly schema: T['schema'];\n\treadonly columns: T['columns'];\n\treadonly dialect: T['dialect'];\n}\n\nexport class Table<out T extends TableConfig = TableConfig> {\n\tstatic readonly [entityKind]: string = 'Table';\n\n\tdeclare readonly _: TableTypeConfig<T>;\n\n\t/** @internal */\n\tstatic readonly Symbol = {\n\t\tName: TableName as typeof TableName,\n\t\tSchema: TableSchema as typeof TableSchema,\n\t\tOriginalName: OriginalName as typeof OriginalName,\n\t\tColumns: TableColumns as typeof TableColumns,\n\t\tExtraConfigColumns: ExtraConfigColumns as typeof ExtraConfigColumns,\n\t\tBaseName: BaseName as typeof BaseName,\n\t\tIsAlias: IsAlias as typeof IsAlias,\n\t\tExtraConfigBuilder: ExtraConfigBuilder as typeof ExtraConfigBuilder,\n\t};\n\n\t/**\n\t * @internal\n\t * Can be changed if the table is aliased.\n\t */\n\t[TableName]: string;\n\n\t/**\n\t * @internal\n\t * Used to store the original name of the table, before any aliasing.\n\t */\n\t[OriginalName]: string;\n\n\t/** @internal */\n\t[TableSchema]: string | undefined;\n\n\t/** @internal */\n\t[TableColumns]!: T['columns'];\n\n\t/** @internal */\n\t[ExtraConfigColumns]!: Record<string, unknown>;\n\n\t/**\n\t * @internal\n\t * Used to store the table name before the transformation via the `tableCreator` functions.\n\t */\n\t[BaseName]: string;\n\n\t/** @internal */\n\t[IsAlias] = false;\n\n\t/** @internal */\n\t[IsDrizzleTable] = true;\n\n\t/** @internal */\n\t[ExtraConfigBuilder]: ((self: any) => Record<string, unknown> | unknown[]) | undefined = undefined;\n\n\tconstructor(name: string, schema: string | undefined, baseName: string) {\n\t\tthis[TableName] = this[OriginalName] = name;\n\t\tthis[TableSchema] = schema;\n\t\tthis[BaseName] = baseName;\n\t}\n}\n\nexport function isTable(table: unknown): table is Table {\n\treturn typeof table === 'object' && table !== null && IsDrizzleTable in table;\n}\n\n/**\n * Any table with a specified boundary.\n *\n * @example\n\t```ts\n\t// Any table with a specific name\n\ttype AnyUsersTable = AnyTable<{ name: 'users' }>;\n\t```\n *\n * To describe any table with any config, simply use `Table` without any type arguments, like this:\n *\n\t```ts\n\tfunction needsTable(table: Table) {\n\t\t...\n\t}\n\t```\n */\nexport type AnyTable<TPartial extends Partial<TableConfig>> = Table<UpdateTableConfig<TableConfig, TPartial>>;\n\nexport function getTableName<T extends Table>(table: T): T['_']['name'] {\n\treturn table[TableName];\n}\n\nexport function getTableUniqueName<\n\tT extends Table | View,\n\tTResult extends string = T extends Table ? T['_']['schema'] extends undefined ? `public.${T['_']['name']}`\n\t\t: `${T['_']['schema']}.${T['_']['name']}`\n\t\t// Views don't have type-level schema names, to be added\n\t\t: `${string}.${T['_']['name']}`,\n>(\n\ttable: T,\n): TResult {\n\treturn `${table[TableSchema] ?? 'public'}.${table[TableName]}` as TResult;\n}\n\nexport type MapColumnName<TName extends string, TColumn extends Column, TDBColumNames extends boolean> =\n\tTDBColumNames extends true ? TColumn['_']['name']\n\t\t: TName;\n\nexport type InferModelFromColumns<\n\tTColumns extends Columns,\n\tTInferMode extends 'select' | 'insert' = 'select',\n\tTConfig extends { override?: boolean } = { dbColumnNames: false; override: false },\n> = Simplify<\n\tTInferMode extends 'insert' ?\n\t\t\t& {\n\t\t\t\t[\n\t\t\t\t\tKey in keyof TColumns & string as RequiredKeyOnly<\n\t\t\t\t\t\tKey,\n\t\t\t\t\t\tTColumns[Key]\n\t\t\t\t\t>\n\t\t\t\t]: GetColumnData<TColumns[Key], 'query'>;\n\t\t\t}\n\t\t\t& {\n\t\t\t\t[\n\t\t\t\t\tKey in keyof TColumns & string as OptionalKeyOnly<\n\t\t\t\t\t\tKey,\n\t\t\t\t\t\tTColumns[Key],\n\t\t\t\t\t\tTConfig['override']\n\t\t\t\t\t>\n\t\t\t\t]?: GetColumnData<TColumns[Key], 'query'> | undefined;\n\t\t\t}\n\t\t: {\n\t\t\t[\n\t\t\t\tKey in keyof TColumns & string\n\t\t\t]: GetColumnData<TColumns[Key], 'query'>;\n\t\t}\n>;\n\n/** @deprecated Use one of the alternatives: {@link InferSelectModel} / {@link InferInsertModel}, or `table.$inferSelect` / `table.$inferInsert`\n */\nexport type InferModel<\n\tTTable extends Table,\n\tTInferMode extends 'select' | 'insert' = 'select',\n> = InferModelFromColumns<TTable['_']['columns'], TInferMode>;\n\nexport type InferSelectModel<\n\tTTable extends Table,\n> = InferModelFromColumns<TTable['_']['columns'], 'select'>;\n\nexport type InferInsertModel<\n\tTTable extends Table,\n\tTOverride extends { override?: boolean } = { override: false },\n> = InferModelFromColumns<TTable['_']['columns'], 'insert', TOverride>;\n\nexport type InferEnum<T> = T extends { enumValues: readonly (infer U)[] } ? U\n\t: never;\n\nexport interface InferTableColumnsModels<TColumns extends Columns> {\n\treadonly $inferSelect: InferModelFromColumns<TColumns, 'select'>;\n\treadonly $inferInsert: InferModelFromColumns<TColumns, 'insert', { override: false }>;\n}\n", "import { entityKind } from './entity.ts';\nimport type { SQL, SQLWrapper } from './sql/sql.ts';\n\nexport interface Subquery<\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTAlias extends string = string,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTSelectedFields extends Record<string, unknown> = Record<string, unknown>,\n> extends SQLWrapper {\n\t// SQLWrapper runtime implementation is defined in 'sql/sql.ts'\n}\nexport class Subquery<\n\tTAlias extends string = string,\n\tTSelectedFields extends Record<string, unknown> = Record<string, unknown>,\n> implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'Subquery';\n\n\tdeclare _: {\n\t\tbrand: 'Subquery';\n\t\tsql: SQL;\n\t\tselectedFields: TSelectedFields;\n\t\talias: TAlias;\n\t\tisWith: boolean;\n\t\tusedTables?: string[];\n\t};\n\n\tconstructor(sql: SQL, fields: TSelectedFields, alias: string, isWith = false, usedTables: string[] = []) {\n\t\tthis._ = {\n\t\t\tbrand: 'Subquery',\n\t\t\tsql,\n\t\t\tselectedFields: fields as TSelectedFields,\n\t\t\talias: alias as TAlias,\n\t\t\tisWith,\n\t\t\tusedTables,\n\t\t};\n\t}\n\n\t// getSQL(): SQL<unknown> {\n\t// \treturn new SQL([this]);\n\t// }\n}\n\nexport class WithSubquery<\n\tTAlias extends string = string,\n\tTSelection extends Record<string, unknown> = Record<string, unknown>,\n> extends Subquery<TAlias, TSelection> {\n\tstatic override readonly [entityKind]: string = 'WithSubquery';\n}\n\nexport type WithSubqueryWithoutSelection<TAlias extends string> = WithSubquery<TAlias, {}>;\n", "import type { Span, Tracer } from '@opentelemetry/api';\nimport { iife } from '~/tracing-utils.ts';\nimport { npmVersion } from '~/version.ts';\n\nlet otel: typeof import('@opentelemetry/api') | undefined; // oxlint-disable-line\nlet rawTracer: Tracer | undefined;\n// try {\n// \totel = await import('@opentelemetry/api');\n// } catch (err: any) {\n// \tif (err.code !== 'MODULE_NOT_FOUND' && err.code !== 'ERR_MODULE_NOT_FOUND') {\n// \t\tthrow err;\n// \t}\n// }\n\ntype SpanName =\n\t| 'drizzle.operation'\n\t| 'drizzle.prepareQuery'\n\t| 'drizzle.buildSQL'\n\t| 'drizzle.execute'\n\t| 'drizzle.driver.execute'\n\t| 'drizzle.mapResponse';\n\nexport const hasTelemetry = !!otel;\n\n/** @internal */\nexport const tracer = {\n\tstartActiveSpan<F extends (span?: Span) => unknown>(name: SpanName, fn: F): ReturnType<F> {\n\t\tif (!otel) {\n\t\t\treturn fn() as ReturnType<F>;\n\t\t}\n\n\t\tif (!rawTracer) {\n\t\t\trawTracer = otel.trace.getTracer('drizzle-orm', npmVersion);\n\t\t}\n\n\t\treturn iife(\n\t\t\t(otel, rawTracer) =>\n\t\t\t\trawTracer.startActiveSpan(\n\t\t\t\t\tname,\n\t\t\t\t\t((span: Span) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\treturn fn(span);\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tspan.setStatus({\n\t\t\t\t\t\t\t\tcode: otel.SpanStatusCode.ERROR,\n\t\t\t\t\t\t\t\tmessage: e instanceof Error ? e.message : 'Unknown error', // oxlint-disable-line drizzle-internal/no-instanceof\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tspan.end();\n\t\t\t\t\t\t}\n\t\t\t\t\t}) as F,\n\t\t\t\t),\n\t\t\totel,\n\t\t\trawTracer,\n\t\t);\n\t},\n};\n", "export const ViewBaseConfig = Symbol.for('drizzle:ViewBaseConfig');\n", "import type { CodecsCollection } from '~/codecs.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { SelectResult } from '~/query-builders/select.types.ts';\nimport { Subquery } from '~/subquery.ts';\nimport { TableName } from '~/table.utils.ts';\nimport { tracer } from '~/tracing.ts';\nimport type { Assume, Equal } from '~/utils.ts';\nimport { ViewBaseConfig } from '~/view-common.ts';\nimport type { AnyColumn } from '../column.ts';\nimport { Column } from '../column.ts';\nimport { IsAlias, OriginalName, Table, TableColumns, TableSchema } from '../table.ts';\n\n/**\n * This class is used to indicate a primitive param value that is used in `sql` tag.\n * It is only used on type level and is never instantiated at runtime.\n * If you see a value of this type in the code, its runtime value is actually the primitive param value.\n */\nexport class FakePrimitiveParam {\n\tstatic readonly [entityKind]: string = 'FakePrimitiveParam';\n}\n\nexport type Chunk =\n\t| string\n\t| Table\n\t| View\n\t| AnyColumn\n\t| Name\n\t| Param\n\t| Placeholder\n\t| SQL;\n\nexport interface BuildQueryConfig {\n\tescapeName(name: string): string;\n\tescapeParam(num: number, value: unknown): string;\n\tescapeString(str: string): string;\n\tcodecs?: CodecsCollection;\n\tparamStartIndex?: { value: number };\n\tinlineParams?: boolean;\n\tinvokeSource?: 'indexes' | 'mssql-check' | 'mssql-view-with-schemabinding' | undefined;\n\ttagged?: true;\n}\n\nexport interface Query {\n\tsql: string;\n\tparams: unknown[];\n\t_sql?: TemplateStringsArray;\n\t// ^ TODO: revisit\n\t// for Bun.SQL cache performance\n}\n\n/**\n * Any value that implements the `getSQL` method. The implementations include:\n * - `Table`\n * - `Column`\n * - `View`\n * - `Subquery`\n * - `SQL`\n * - `SQL.Aliased`\n * - `Placeholder`\n * - `Param`\n */\nexport interface SQLWrapper<T = unknown> {\n\tgetSQL(): SQL<T>;\n\tshouldOmitSQLParens?(): boolean;\n}\n\nexport function isSQLWrapper(value: unknown): value is SQLWrapper {\n\treturn value !== null && value !== undefined && typeof (value as any).getSQL === 'function';\n}\n\nfunction mergeQueries(queries: Query[]): Query {\n\tconst result: Query = { sql: '', params: [] };\n\tfor (const query of queries) {\n\t\tresult.sql += query.sql;\n\t\tresult.params.push(...query.params);\n\t}\n\treturn result;\n}\n\nfunction _mergeQueries(queries: Query[]): Query {\n\tconst result: Query = { sql: '', params: [] };\n\tconst sqls = [] as string[];\n\tfor (const query of queries) {\n\t\tsqls.push(query.sql);\n\t\tresult.params.push(...query.params);\n\t}\n\tresult._sql = Object.assign(sqls, { raw: sqls }) as unknown as TemplateStringsArray;\n\treturn result;\n}\n\nexport class StringChunk implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'StringChunk';\n\n\treadonly value: string[];\n\n\tconstructor(value: string | string[]) {\n\t\tthis.value = Array.isArray(value) ? value : [value];\n\t}\n\n\tgetSQL(): SQL<unknown> {\n\t\treturn new SQL([this]);\n\t}\n}\n\nexport class SQL<T = unknown> implements SQLWrapper<T> {\n\tstatic readonly [entityKind]: string = 'SQL';\n\n\tdeclare _: {\n\t\tbrand: 'SQL';\n\t\ttype: T;\n\t};\n\n\t/** @internal */\n\tdecoder: DriverValueDecoder<T, any> = noopDecoder;\n\t/** @internal */\n\tpublic shouldInlineParams = false;\n\n\t/** @internal */\n\tusedTables: string[] = [];\n\n\tconstructor(readonly queryChunks: SQLChunk[]) {\n\t\tfor (const chunk of queryChunks) {\n\t\t\tif (is(chunk, Table)) {\n\t\t\t\tconst schemaName = chunk[Table.Symbol.Schema];\n\n\t\t\t\tthis.usedTables.push(\n\t\t\t\t\tschemaName === undefined\n\t\t\t\t\t\t? chunk[Table.Symbol.Name]\n\t\t\t\t\t\t: schemaName + '.' + chunk[Table.Symbol.Name],\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tappend(query: SQL): this {\n\t\tthis.queryChunks.push(...query.queryChunks);\n\t\treturn this;\n\t}\n\n\ttoQuery(config: BuildQueryConfig): Query {\n\t\treturn tracer.startActiveSpan('drizzle.buildSQL', (span) => {\n\t\t\tconst query = this.buildQueryFromSourceParams(this.queryChunks, config);\n\t\t\tspan?.setAttributes({\n\t\t\t\t'drizzle.query.text': query.sql,\n\t\t\t\t'drizzle.query.params': JSON.stringify(query.params),\n\t\t\t});\n\t\t\treturn query;\n\t\t});\n\t}\n\n\tbuildQueryFromSourceParams(chunks: SQLChunk[], _config: BuildQueryConfig): Query {\n\t\tconst config = Object.assign({}, _config, {\n\t\t\tinlineParams: _config.inlineParams || this.shouldInlineParams,\n\t\t\tparamStartIndex: _config.paramStartIndex || { value: 0 },\n\t\t});\n\n\t\tconst {\n\t\t\tescapeName,\n\t\t\tescapeParam,\n\t\t\tcodecs,\n\t\t\tinlineParams,\n\t\t\tparamStartIndex,\n\t\t\tinvokeSource,\n\t\t} = config;\n\n\t\tconst mappedChunks = chunks.map((chunk): Query => {\n\t\t\tif (is(chunk, StringChunk)) {\n\t\t\t\treturn { sql: chunk.value.join(''), params: [] };\n\t\t\t}\n\n\t\t\tif (is(chunk, Name)) {\n\t\t\t\treturn { sql: escapeName(chunk.value), params: [] };\n\t\t\t}\n\n\t\t\tif (chunk === undefined) {\n\t\t\t\treturn { sql: '', params: [] };\n\t\t\t}\n\n\t\t\tif (Array.isArray(chunk)) {\n\t\t\t\tconst result: SQLChunk[] = [new StringChunk('(')];\n\t\t\t\tfor (const [i, p] of chunk.entries()) {\n\t\t\t\t\tresult.push(p);\n\t\t\t\t\tif (i < chunk.length - 1) {\n\t\t\t\t\t\tresult.push(new StringChunk(', '));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult.push(new StringChunk(')'));\n\t\t\t\treturn this.buildQueryFromSourceParams(result, config);\n\t\t\t}\n\n\t\t\tif (is(chunk, SQL)) {\n\t\t\t\treturn this.buildQueryFromSourceParams(chunk.queryChunks, {\n\t\t\t\t\t...config,\n\t\t\t\t\tinlineParams: inlineParams || chunk.shouldInlineParams,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (is(chunk, Table)) {\n\t\t\t\tconst schemaName = chunk[Table.Symbol.Schema];\n\t\t\t\tconst tableName = chunk[Table.Symbol.Name];\n\n\t\t\t\tif (invokeSource === 'mssql-view-with-schemabinding') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsql: (schemaName === undefined ? escapeName('dbo') : escapeName(schemaName)) + '.'\n\t\t\t\t\t\t\t+ escapeName(tableName),\n\t\t\t\t\t\tparams: [],\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tsql: schemaName === undefined || chunk[IsAlias]\n\t\t\t\t\t\t? escapeName(tableName)\n\t\t\t\t\t\t: escapeName(schemaName) + '.' + escapeName(tableName),\n\t\t\t\t\tparams: [],\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (is(chunk, Column)) {\n\t\t\t\tconst columnName = chunk.name;\n\t\t\t\tif (_config.invokeSource === 'indexes') {\n\t\t\t\t\treturn { sql: escapeName(columnName), params: [] };\n\t\t\t\t}\n\n\t\t\t\tconst schemaName = invokeSource === 'mssql-check' ? undefined : chunk.table[Table.Symbol.Schema];\n\t\t\t\treturn {\n\t\t\t\t\tsql: chunk.isAlias ? escapeName(chunk.name) : chunk.table[IsAlias] || schemaName === undefined\n\t\t\t\t\t\t? escapeName(chunk.table[Table.Symbol.Name]) + '.' + escapeName(columnName)\n\t\t\t\t\t\t: escapeName(schemaName) + '.' + escapeName(chunk.table[Table.Symbol.Name]) + '.'\n\t\t\t\t\t\t\t+ escapeName(columnName),\n\t\t\t\t\tparams: [],\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (is(chunk, View)) {\n\t\t\t\tconst schemaName = chunk[ViewBaseConfig].schema;\n\t\t\t\tconst viewName = chunk[ViewBaseConfig].name;\n\t\t\t\treturn {\n\t\t\t\t\tsql: schemaName === undefined || chunk[ViewBaseConfig].isAlias\n\t\t\t\t\t\t? escapeName(viewName)\n\t\t\t\t\t\t: escapeName(schemaName) + '.' + escapeName(viewName),\n\t\t\t\t\tparams: [],\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (is(chunk, Param)) {\n\t\t\t\tif (is(chunk.value, SQL)) {\n\t\t\t\t\treturn this.buildQueryFromSourceParams([chunk.value], config);\n\t\t\t\t}\n\n\t\t\t\tconst useCodecs = codecs && is(chunk.encoder, Column);\n\n\t\t\t\tif (is(chunk.value, Placeholder)) {\n\t\t\t\t\tconst escaped = escapeParam(paramStartIndex.value++, chunk);\n\t\t\t\t\tchunk.codec = useCodecs\n\t\t\t\t\t\t? (value) => codecs.apply(chunk.encoder as Column, 'normalizeParam', value)\n\t\t\t\t\t\t: undefined;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsql: useCodecs\n\t\t\t\t\t\t\t? codecs.apply(chunk.encoder, 'castParam', escaped)\n\t\t\t\t\t\t\t: escaped,\n\t\t\t\t\t\tparams: [chunk],\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tlet mappedValue: any;\n\t\t\t\tif (chunk.value === null) {\n\t\t\t\t\tmappedValue = chunk.value;\n\t\t\t\t} else {\n\t\t\t\t\tmappedValue = chunk.encoder.mapToDriverValue.isNoop\n\t\t\t\t\t\t? chunk.value\n\t\t\t\t\t\t: chunk.encoder.mapToDriverValue(chunk.value);\n\n\t\t\t\t\tif (is(mappedValue, SQL)) {\n\t\t\t\t\t\treturn this.buildQueryFromSourceParams([mappedValue], config);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (useCodecs) {\n\t\t\t\t\t\tmappedValue = codecs.apply(\n\t\t\t\t\t\t\tchunk.encoder,\n\t\t\t\t\t\t\t'normalizeParam',\n\t\t\t\t\t\t\tmappedValue,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (inlineParams) {\n\t\t\t\t\treturn { sql: this.mapInlineParam(mappedValue, config), params: [] };\n\t\t\t\t}\n\n\t\t\t\tconst escaped = escapeParam(paramStartIndex.value++, mappedValue);\n\t\t\t\treturn {\n\t\t\t\t\tsql: useCodecs\n\t\t\t\t\t\t? codecs.apply(chunk.encoder, 'castParam', escaped)\n\t\t\t\t\t\t: escaped,\n\t\t\t\t\tparams: [mappedValue],\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (is(chunk, Placeholder)) {\n\t\t\t\treturn { sql: escapeParam(paramStartIndex.value++, chunk), params: [chunk] };\n\t\t\t}\n\n\t\t\tif (is(chunk, SQL.Aliased) && chunk.fieldAlias !== undefined) {\n\t\t\t\treturn {\n\t\t\t\t\tsql: (chunk.origin !== undefined ? escapeName(chunk.origin) + '.' : '') + escapeName(chunk.fieldAlias),\n\t\t\t\t\tparams: [],\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (is(chunk, Subquery)) {\n\t\t\t\tif (chunk._.isWith) {\n\t\t\t\t\treturn { sql: escapeName(chunk._.alias), params: [] };\n\t\t\t\t}\n\t\t\t\treturn this.buildQueryFromSourceParams([\n\t\t\t\t\tnew StringChunk('('),\n\t\t\t\t\tchunk._.sql,\n\t\t\t\t\tnew StringChunk(') '),\n\t\t\t\t\tnew Name(chunk._.alias),\n\t\t\t\t], config);\n\t\t\t}\n\n\t\t\tif (typeof chunk === 'function' && 'enumName' in chunk) {\n\t\t\t\tif ('schema' in chunk && chunk.schema) {\n\t\t\t\t\treturn { sql: escapeName(chunk.schema as string) + '.' + escapeName(chunk.enumName as string), params: [] };\n\t\t\t\t}\n\t\t\t\treturn { sql: escapeName(chunk.enumName as string), params: [] };\n\t\t\t}\n\n\t\t\tif (isSQLWrapper(chunk)) {\n\t\t\t\tif (chunk.shouldOmitSQLParens?.()) {\n\t\t\t\t\treturn this.buildQueryFromSourceParams([chunk.getSQL()], config);\n\t\t\t\t}\n\t\t\t\treturn this.buildQueryFromSourceParams([\n\t\t\t\t\tnew StringChunk('('),\n\t\t\t\t\tchunk.getSQL(),\n\t\t\t\t\tnew StringChunk(')'),\n\t\t\t\t], config);\n\t\t\t}\n\n\t\t\tif (inlineParams) {\n\t\t\t\treturn { sql: this.mapInlineParam(chunk, config), params: [] };\n\t\t\t}\n\n\t\t\treturn { sql: escapeParam(paramStartIndex.value++, chunk), params: [chunk] };\n\t\t});\n\n\t\tif (_config.tagged) {\n\t\t\treturn _mergeQueries(mappedChunks);\n\t\t}\n\n\t\treturn mergeQueries(mappedChunks);\n\t}\n\n\tprivate mapInlineParam(\n\t\tchunk: unknown,\n\t\t{ escapeString }: BuildQueryConfig,\n\t): string {\n\t\tif (chunk === null) {\n\t\t\treturn 'null';\n\t\t}\n\t\tif (typeof chunk === 'number' || typeof chunk === 'boolean' || typeof chunk === 'bigint') {\n\t\t\treturn chunk.toString();\n\t\t}\n\t\tif (typeof chunk === 'string') {\n\t\t\treturn escapeString(chunk);\n\t\t}\n\t\tif (typeof chunk === 'object') {\n\t\t\tconst mappedValueAsString = chunk.toString();\n\t\t\tif (mappedValueAsString === '[object Object]') {\n\t\t\t\treturn escapeString(JSON.stringify(chunk));\n\t\t\t}\n\t\t\treturn escapeString(mappedValueAsString);\n\t\t}\n\t\tthrow new Error('Unexpected param value: ' + chunk);\n\t}\n\n\tgetSQL(): SQL<T> {\n\t\treturn this;\n\t}\n\n\tas(alias: string): SQL.Aliased<T>;\n\t/**\n\t * @deprecated\n\t * Use ``sql<DataType>`query`.as(alias)`` instead.\n\t */\n\tas<TData>(): SQL<TData>;\n\t/**\n\t * @deprecated\n\t * Use ``sql<DataType>`query`.as(alias)`` instead.\n\t */\n\tas<TData>(alias: string): SQL.Aliased<TData>;\n\tas(alias?: string): SQL<T> | SQL.Aliased<T> {\n\t\t// TODO: remove with deprecated overloads\n\t\tif (alias === undefined) {\n\t\t\treturn this;\n\t\t}\n\n\t\treturn new SQL.Aliased(this, alias);\n\t}\n\n\tmapWith<\n\t\tTDecoder extends\n\t\t\t| DriverValueDecoder<any, Exclude<T, null>>\n\t\t\t| DriverValueDecoder<any, Exclude<T, null>>['mapFromDriverValue'],\n\t>(\n\t\tdecoder: TDecoder,\n\t): Equal<T, unknown> extends true ? SQL<GetDecoderResult<TDecoder>>\n\t\t: Equal<T, any> extends true ? SQL<GetDecoderResult<TDecoder>>\n\t\t: SQL<GetDecoderResult<TDecoder> | (null extends T ? null : never)>\n\t{\n\t\tthis.decoder = typeof decoder === 'function' ? { mapFromDriverValue: decoder } : decoder;\n\t\treturn this as SQL<any>;\n\t}\n\n\tnullable(): SQL<T | null> {\n\t\treturn this;\n\t}\n\n\tinlineParams(): this {\n\t\tthis.shouldInlineParams = true;\n\t\treturn this;\n\t}\n\n\t/**\n\t * This method is used to conditionally include a part of the query.\n\t *\n\t * @param condition - Condition to check\n\t * @returns itself if the condition is `true`, otherwise `undefined`\n\t */\n\tif(condition: any | undefined): this | undefined {\n\t\treturn condition ? this : undefined;\n\t}\n}\n\nexport type GetDecoderResult<T> = T extends Column ? T['_']['data'] : T extends\n\t| DriverValueDecoder<infer TData, any>\n\t| DriverValueDecoder<infer TData, any>['mapFromDriverValue'] ? TData\n: never;\n\n/**\n * Any DB name (table, column, index etc.)\n */\nexport class Name implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'Name';\n\n\tprotected brand!: 'Name';\n\n\tconstructor(readonly value: string) {}\n\n\tgetSQL(): SQL<unknown> {\n\t\treturn new SQL([this]);\n\t}\n}\n\n/**\n * Any DB name (table, column, index etc.)\n * @deprecated Use `sql.identifier` instead.\n */\nexport function name(value: string): Name {\n\treturn new Name(value);\n}\n\nexport interface DriverValueDecoderFn<TData, TDriverParam> {\n\t(value: TDriverParam): TData;\n\t/** @internal */\n\tisNoop?: true | undefined;\n}\n\nexport interface DriverValueDecoder<TData, TDriverParam> {\n\tmapFromDriverValue: DriverValueDecoderFn<TData, TDriverParam>;\n}\n\nexport interface DriverValueEncoderFn<TData, TDriverParam> {\n\t(value: TData): TDriverParam;\n\t/** @internal */\n\tisNoop?: true | undefined;\n}\n\nexport interface DriverValueEncoder<TData, TDriverParam> {\n\tmapToDriverValue: DriverValueEncoderFn<TData, TDriverParam>;\n}\n\nexport function isDriverValueEncoder(value: unknown): value is DriverValueEncoder<any, any> {\n\treturn typeof value === 'object' && value !== null && 'mapToDriverValue' in value\n\t\t&& typeof (value as any).mapToDriverValue === 'function';\n}\n\nexport const noopDecoder: DriverValueDecoder<any, any> = {\n\tmapFromDriverValue: (value) => value,\n};\n\nnoopDecoder.mapFromDriverValue.isNoop = true;\n\nexport const noopEncoder: DriverValueEncoder<any, any> = {\n\tmapToDriverValue: (value) => value,\n};\n\nnoopEncoder.mapToDriverValue.isNoop = true;\n\nexport interface DriverValueMapper<TData, TDriverParam>\n\textends DriverValueDecoder<TData, TDriverParam>, DriverValueEncoder<TData, TDriverParam>\n{}\n\nexport function isNoop(mapper: DriverValueEncoderFn<any, any> | DriverValueDecoderFn<any, any>) {\n\treturn mapper.isNoop;\n}\n\nexport const noopMapper: DriverValueMapper<any, any> = {\n\t...noopDecoder,\n\t...noopEncoder,\n};\n\n/** Parameter value that is optionally bound to an encoder (for example, a column). */\nexport class Param<TDataType = any, TDriverParamType = TDataType> implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'Param';\n\n\tprotected brand!: 'BoundParamValue';\n\n\t/**\n\t * @param value - Parameter value\n\t * @param encoder - Encoder to convert the value to a driver parameter\n\t */\n\tconstructor(\n\t\treadonly value: TDataType | Placeholder<string, TDataType>,\n\t\treadonly encoder: DriverValueEncoder<TDataType, TDriverParamType> = noopEncoder,\n\t\tpublic codec?: (value: any) => any,\n\t) {}\n\n\tgetSQL(): SQL<unknown> {\n\t\treturn new SQL([this]);\n\t}\n}\n\n/** @deprecated Use `sql.param` instead. */\nexport function param<TData, TDriver>(\n\tvalue: TData,\n\tencoder?: DriverValueEncoder<TData, TDriver>,\n): Param<TData, TDriver> {\n\treturn new Param(value, encoder);\n}\n\n/**\n * Anything that can be passed to the `` sql`...` `` tagged function.\n */\nexport type SQLChunk =\n\t| StringChunk\n\t| SQLChunk[]\n\t| SQLWrapper\n\t| SQL\n\t| Table\n\t| View\n\t| Subquery\n\t| AnyColumn\n\t| Param\n\t| Name\n\t| undefined\n\t| FakePrimitiveParam\n\t| Placeholder;\n\nexport type SQLGenerator<T = unknown> = typeof sql<T>;\n\nexport function sql<T>(strings: TemplateStringsArray, ...params: any[]): SQL<T>;\n/*\n\tThe type of `params` is specified as `SQLChunk[]`, but that's slightly incorrect -\n\tin runtime, users won't pass `FakePrimitiveParam` instances as `params` - they will pass primitive values\n\twhich will be wrapped in `Param`. That's why the overload specifies `params` as `any[]` and not as `SQLSourceParam[]`.\n\tThis type is used to make our lives easier and the type checker happy.\n*/\nexport function sql(strings: TemplateStringsArray, ...params: SQLChunk[]): SQL {\n\tconst queryChunks: SQLChunk[] = [];\n\tif (params.length > 0 || (strings.length > 0 && strings[0] !== '')) {\n\t\tqueryChunks.push(new StringChunk(strings[0]!));\n\t}\n\tfor (const [paramIndex, param] of params.entries()) {\n\t\tqueryChunks.push(param, new StringChunk(strings[paramIndex + 1]!));\n\t}\n\n\treturn new SQL(queryChunks);\n}\n\nexport namespace sql {\n\texport function empty(): SQL {\n\t\treturn new SQL([]);\n\t}\n\n\t/** @deprecated - use `sql.join()` */\n\texport function fromList(list: SQLChunk[]): SQL {\n\t\treturn new SQL(list);\n\t}\n\n\t/**\n\t * Convenience function to create an SQL query from a raw string.\n\t * @param str The raw SQL query string.\n\t */\n\texport function raw(str: string): SQL {\n\t\treturn new SQL([new StringChunk(str)]);\n\t}\n\n\t/**\n\t * Join a list of SQL chunks with a separator.\n\t * @example\n\t * ```ts\n\t * const query = sql.join([sql`a`, sql`b`, sql`c`]);\n\t * // sql`abc`\n\t * ```\n\t * @example\n\t * ```ts\n\t * const query = sql.join([sql`a`, sql`b`, sql`c`], sql`, `);\n\t * // sql`a, b, c`\n\t * ```\n\t */\n\texport function join(chunks: SQLChunk[], separator?: SQLChunk): SQL {\n\t\tconst result: SQLChunk[] = [];\n\t\tfor (const [i, chunk] of chunks.entries()) {\n\t\t\tif (i > 0 && separator !== undefined) {\n\t\t\t\tresult.push(separator);\n\t\t\t}\n\t\t\tresult.push(chunk);\n\t\t}\n\t\treturn new SQL(result);\n\t}\n\n\t/**\n\t * Create a SQL chunk that represents a DB identifier (table, column, index etc.).\n\t * When used in a query, the identifier will be escaped based on the DB engine.\n\t * For example, in PostgreSQL, identifiers are escaped with double quotes.\n\t *\n\t * **WARNING: This function does not offer any protection against SQL injections, so you must validate any user input beforehand.**\n\t *\n\t * @example ```ts\n\t * const query = sql`SELECT * FROM ${sql.identifier('my-table')}`;\n\t * // 'SELECT * FROM \"my-table\"'\n\t * ```\n\t */\n\texport function identifier(value: string): Name {\n\t\treturn new Name(value);\n\t}\n\n\texport function placeholder<TName extends string>(name: TName): Placeholder<TName> {\n\t\treturn new Placeholder(name);\n\t}\n\n\texport function param<TData, TDriver>(\n\t\tvalue: TData | Placeholder<string, TData>,\n\t\tencoder?: DriverValueEncoder<TData, TDriver>,\n\t): Param<TData, TDriver> {\n\t\treturn new Param(value, encoder);\n\t}\n\n\t/**\n\t * Attach [sqlcommenter](https://google.github.io/sqlcommenter) comment to a query\n\t */\n\texport function comment(input: CommentInput): SQL | undefined {\n\t\tconst encoded = sqlCommenter(input);\n\t\tif (!encoded.length) return undefined;\n\n\t\treturn sql.raw(encoded);\n\t}\n}\n\nexport function sqlCommenter(input: CommentInput): string {\n\tconst encoded = sqlCommenter.encodeInput(input);\n\tif (!encoded.length) return '';\n\n\treturn `/*${encoded}*/`;\n}\n\nexport namespace sqlCommenter {\n\texport function merge(input1: CommentInput | undefined, input2: CommentInput | undefined) {\n\t\tlet encoded: CommentInput;\n\t\tif (typeof input1 === 'object' && typeof input2 === 'object') {\n\t\t\tencoded = encodeInput({ ...input1, ...input2 });\n\t\t} else if (input1 && input2) {\n\t\t\tencoded = [encodeInput(input1), encodeInput(input2)].filter((i) => i.length).join(',');\n\t\t} else if (input2) {\n\t\t\tencoded = encodeInput(input2);\n\t\t} else if (input1) {\n\t\t\tencoded = encodeInput(input1);\n\t\t} else {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (!encoded.length) return '';\n\n\t\treturn `/*${encoded}*/`;\n\t}\n\n\texport function encodeInput(input: CommentInput): string {\n\t\tif (typeof input === 'string') {\n\t\t\tif (!input.length) return input;\n\n\t\t\treturn sanitizeStringInput(input);\n\t\t}\n\n\t\tconst parts: string[] = [];\n\n\t\tfor (const [key, value] of Object.entries(input)) {\n\t\t\tif (value === null || value === undefined || value === '') continue;\n\n\t\t\tconst encodedKey = sanitizeObjectElement(key);\n\t\t\tconst encodedValue = sanitizeObjectElement(String(value));\n\n\t\t\tparts.push(`${encodedKey}='${encodedValue}'`);\n\t\t}\n\n\t\tif (!parts.length) return '';\n\n\t\treturn parts.sort().join(',');\n\t}\n\n\texport function sanitizeObjectElement(key: string): string {\n\t\tconst urlEncoded = encodeURIComponent(key);\n\t\treturn urlEncoded.replace(/'/g, `\\\\'`);\n\t}\n\n\texport function sanitizeStringInput(input: string): string {\n\t\treturn input.replace(/\\/\\*/g, '/ *').replace(/\\*\\//g, '* /');\n\t}\n}\n\nexport type CommentInput = string | SqlCommenterInput;\n\nexport type SqlCommenterInput = Record<\n\tstring,\n\tstring | number | bigint | boolean | null | undefined\n>;\n\nexport namespace SQL {\n\texport class Aliased<T = unknown> implements SQLWrapper<T> {\n\t\tstatic readonly [entityKind]: string = 'SQL.Aliased';\n\n\t\tdeclare _: {\n\t\t\tbrand: 'SQL.Aliased';\n\t\t\ttype: T;\n\t\t};\n\n\t\t/** @internal */\n\t\tisSelectionField = false;\n\t\t/** @internal */\n\t\torigin?: string;\n\n\t\tconstructor(\n\t\t\treadonly sql: SQL<T>,\n\t\t\treadonly fieldAlias: string,\n\t\t) {}\n\n\t\tgetSQL(): SQL<T> {\n\t\t\treturn this.sql as SQL<T>;\n\t\t}\n\n\t\t/** @internal */\n\t\tclone() {\n\t\t\treturn new Aliased<T>(this.sql, this.fieldAlias);\n\t\t}\n\t}\n}\n\nexport class Placeholder<TName extends string = string, TValue = any> implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'Placeholder';\n\n\tdeclare protected: TValue;\n\n\tconstructor(readonly name: TName) {}\n\n\tgetSQL(): SQL {\n\t\treturn new SQL([this]);\n\t}\n}\n\n/** @deprecated Use `sql.placeholder` instead. */\nexport function placeholder<TName extends string>(name: TName): Placeholder<TName> {\n\treturn new Placeholder(name);\n}\n\nexport function fillPlaceholders(params: unknown[], values: Record<string, unknown>): unknown[] {\n\treturn params.map((p) => {\n\t\tif (is(p, Placeholder)) {\n\t\t\tif (!(p.name in values)) {\n\t\t\t\tthrow new Error(`No value for placeholder \"${p.name}\" was provided`);\n\t\t\t}\n\n\t\t\treturn values[p.name];\n\t\t}\n\n\t\tif (is(p, Param) && is(p.value, Placeholder)) {\n\t\t\tif (!(p.value.name in values)) {\n\t\t\t\tthrow new Error(`No value for placeholder \"${p.value.name}\" was provided`);\n\t\t\t}\n\n\t\t\tconst value = values[p.value.name];\n\t\t\tif (value === null) return value;\n\n\t\t\tconst mapped = p.encoder.mapToDriverValue.isNoop\n\t\t\t\t? value\n\t\t\t\t: p.encoder.mapToDriverValue(value);\n\n\t\t\treturn p.codec ? p.codec(mapped) : mapped;\n\t\t}\n\n\t\treturn p;\n\t});\n}\n\nexport type ColumnsSelection = Record<string, unknown>;\n\nconst IsDrizzleView = Symbol.for('drizzle:IsDrizzleView');\n\nexport abstract class View<\n\tTName extends string = string,\n\tTExisting extends boolean = boolean,\n\tTSelection extends ColumnsSelection = ColumnsSelection,\n> {\n\tstatic readonly [entityKind]: string = 'View';\n\n\tdeclare _: {\n\t\tbrand: 'View';\n\t\tviewBrand: string;\n\t\tname: TName;\n\t\texisting: TExisting;\n\t\tselectedFields: TSelection;\n\t};\n\n\t/** @internal */\n\t[ViewBaseConfig]: {\n\t\tname: TName;\n\t\toriginalName: TName;\n\t\tschema: string | undefined;\n\t\tselectedFields: ColumnsSelection;\n\t\tisExisting: TExisting;\n\t\tquery: TExisting extends true ? undefined : SQL;\n\t\tisAlias: boolean;\n\t};\n\n\t/** @internal */\n\t[IsDrizzleView] = true;\n\n\t/** @internal */\n\tpublic get [TableName]() {\n\t\treturn this[ViewBaseConfig].name;\n\t}\n\n\t/** @internal */\n\tpublic get [TableSchema]() {\n\t\treturn this[ViewBaseConfig].schema;\n\t}\n\n\t/** @internal */\n\tpublic get [IsAlias]() {\n\t\treturn this[ViewBaseConfig].isAlias;\n\t}\n\n\t/** @internal */\n\tpublic get [OriginalName]() {\n\t\treturn this[ViewBaseConfig].originalName;\n\t}\n\n\t/** @internal */\n\tpublic get [TableColumns]() {\n\t\treturn (this[ViewBaseConfig].selectedFields) as any as Record<string, unknown>;\n\t}\n\n\tdeclare readonly $inferSelect: InferSelectViewModel<View<Assume<TName, string>, TExisting, TSelection>>;\n\n\tconstructor(\n\t\t{ name, schema, selectedFields, query }: {\n\t\t\tname: TName;\n\t\t\tschema: string | undefined;\n\t\t\tselectedFields: ColumnsSelection;\n\t\t\tquery: SQL | undefined;\n\t\t},\n\t) {\n\t\tthis[ViewBaseConfig] = {\n\t\t\tname,\n\t\t\toriginalName: name,\n\t\t\tschema,\n\t\t\tselectedFields,\n\t\t\tquery: query as (TExisting extends true ? undefined : SQL),\n\t\t\tisExisting: !query as TExisting,\n\t\t\tisAlias: false,\n\t\t};\n\t}\n}\n\nexport function isView(view: unknown): view is View {\n\treturn typeof view === 'object' && view !== null && IsDrizzleView in view;\n}\n\nexport function getViewName<T extends View>(view: T): T['_']['name'] {\n\treturn view[ViewBaseConfig].name;\n}\n\nexport type InferSelectViewModel<TView extends View> =\n\tEqual<TView['_']['selectedFields'], { [x: string]: unknown }> extends true ? { [x: string]: unknown }\n\t\t: SelectResult<\n\t\t\tTView['_']['selectedFields'],\n\t\t\t'single',\n\t\t\tRecord<TView['_']['name'], 'not-null'>\n\t\t>;\n\n// Defined separately from the Column class to resolve circular dependency\nColumn.prototype.getSQL = function() {\n\treturn new SQL([this]);\n};\n// Defined separately from the Subquery class to resolve circular dependency\nSubquery.prototype.getSQL = function() {\n\treturn new SQL([this]);\n};\n\nexport type SQLEntity = SQL | SQLWrapper | SQL.Aliased | Table | View;\n", "import { type AnyColumn, Column, type GetColumnData } from '~/column.ts';\nimport { is } from '~/entity.ts';\nimport { Table } from '~/table.ts';\nimport {\n\tisDriverValueEncoder,\n\tisSQLWrapper,\n\tParam,\n\tPlaceholder,\n\tSQL,\n\tsql,\n\ttype SQLChunk,\n\ttype SQLWrapper,\n\tStringChunk,\n\tView,\n} from '../sql.ts';\n\nexport function bindIfParam(value: unknown, column: SQLWrapper): SQLChunk {\n\tif (\n\t\tisDriverValueEncoder(column)\n\t\t&& !isSQLWrapper(value)\n\t\t&& !is(value, Param)\n\t\t&& !is(value, Placeholder)\n\t\t&& !is(value, Column)\n\t\t&& !is(value, Table)\n\t\t&& !is(value, View)\n\t) {\n\t\treturn new Param(value, column);\n\t}\n\treturn value as SQLChunk;\n}\n\nexport interface BinaryOperator {\n\t<TColumn extends Column>(\n\t\tleft: TColumn,\n\t\tright: GetColumnData<TColumn, 'raw'> | SQLWrapper,\n\t): SQL;\n\t<T>(left: SQL.Aliased<T>, right: T | SQLWrapper): SQL;\n\t<T extends SQLWrapper>(\n\t\tleft: Exclude<T, SQL.Aliased | Column>,\n\t\tright: unknown,\n\t): SQL;\n}\n\n/**\n * Test that two values are equal.\n *\n * Remember that the SQL standard dictates that\n * two NULL values are not equal, so if you want to test\n * whether a value is null, you may want to use\n * `isNull` instead.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars made by Ford\n * db.select().from(cars)\n * .where(eq(cars.make, 'Ford'))\n * ```\n *\n * @see isNull for a way to test equality to NULL.\n */\nexport const eq: BinaryOperator = (left: SQLWrapper, right: unknown): SQL => {\n\treturn sql`${left} = ${bindIfParam(right, left)}`;\n};\n\n/**\n * Test that two values are not equal.\n *\n * Remember that the SQL standard dictates that\n * two NULL values are not equal, so if you want to test\n * whether a value is not null, you may want to use\n * `isNotNull` instead.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars not made by Ford\n * db.select().from(cars)\n * .where(ne(cars.make, 'Ford'))\n * ```\n *\n * @see isNotNull for a way to test whether a value is not null.\n */\nexport const ne: BinaryOperator = (left: SQLWrapper, right: unknown): SQL => {\n\treturn sql`${left} <> ${bindIfParam(right, left)}`;\n};\n\n/**\n * Combine a list of conditions with the `and` operator. Conditions\n * that are equal `undefined` are automatically ignored.\n *\n * ## Examples\n *\n * ```ts\n * db.select().from(cars)\n * .where(\n * and(\n * eq(cars.make, 'Volvo'),\n * eq(cars.year, 1950),\n * )\n * )\n * ```\n */\nexport function and(...conditions: (SQLWrapper | undefined)[]): SQL | undefined;\nexport function and(\n\t...unfilteredConditions: (SQLWrapper | undefined)[]\n): SQL | undefined {\n\tconst conditions = unfilteredConditions.filter(\n\t\t(c): c is Exclude<typeof c, undefined> => c !== undefined,\n\t);\n\n\tif (conditions.length === 0) {\n\t\treturn undefined;\n\t}\n\n\tif (conditions.length === 1) {\n\t\treturn new SQL(conditions);\n\t}\n\n\treturn new SQL([\n\t\tnew StringChunk('('),\n\t\tsql.join(conditions.map((c) => sql`(${c})`), new StringChunk(' and ')),\n\t\tnew StringChunk(')'),\n\t]);\n}\n\n/**\n * Combine a list of conditions with the `or` operator. Conditions\n * that are equal `undefined` are automatically ignored.\n *\n * ## Examples\n *\n * ```ts\n * db.select().from(cars)\n * .where(\n * or(\n * eq(cars.make, 'GM'),\n * eq(cars.make, 'Ford'),\n * )\n * )\n * ```\n */\nexport function or(...conditions: (SQLWrapper | undefined)[]): SQL | undefined;\nexport function or(\n\t...unfilteredConditions: (SQLWrapper | undefined)[]\n): SQL | undefined {\n\tconst conditions = unfilteredConditions.filter(\n\t\t(c): c is Exclude<typeof c, undefined> => c !== undefined,\n\t);\n\n\tif (conditions.length === 0) {\n\t\treturn undefined;\n\t}\n\n\tif (conditions.length === 1) {\n\t\treturn new SQL(conditions);\n\t}\n\n\treturn new SQL([\n\t\tnew StringChunk('('),\n\t\tsql.join(conditions.map((c) => sql`(${c})`), new StringChunk(' or ')),\n\t\tnew StringChunk(')'),\n\t]);\n}\n\n/**\n * Negate the meaning of an expression using the `not` keyword.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars _not_ made by GM or Ford.\n * db.select().from(cars)\n * .where(not(inArray(cars.make, ['GM', 'Ford'])))\n * ```\n */\nexport function not(condition: SQLWrapper): SQL {\n\treturn is(condition, SQL) ? sql`not (${condition})` : sql`not ${condition}`;\n}\n\n/**\n * Test that the first expression passed is greater than\n * the second expression.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars made after 2000.\n * db.select().from(cars)\n * .where(gt(cars.year, 2000))\n * ```\n *\n * @see gte for greater-than-or-equal\n */\nexport const gt: BinaryOperator = (left: SQLWrapper, right: unknown): SQL => {\n\treturn sql`${left} > ${bindIfParam(right, left)}`;\n};\n\n/**\n * Test that the first expression passed is greater than\n * or equal to the second expression. Use `gt` to\n * test whether an expression is strictly greater\n * than another.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars made on or after 2000.\n * db.select().from(cars)\n * .where(gte(cars.year, 2000))\n * ```\n *\n * @see gt for a strictly greater-than condition\n */\nexport const gte: BinaryOperator = (left: SQLWrapper, right: unknown): SQL => {\n\treturn sql`${left} >= ${bindIfParam(right, left)}`;\n};\n\n/**\n * Test that the first expression passed is less than\n * the second expression.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars made before 2000.\n * db.select().from(cars)\n * .where(lt(cars.year, 2000))\n * ```\n *\n * @see lte for less-than-or-equal\n */\nexport const lt: BinaryOperator = (left: SQLWrapper, right: unknown): SQL => {\n\treturn sql`${left} < ${bindIfParam(right, left)}`;\n};\n\n/**\n * Test that the first expression passed is less than\n * or equal to the second expression.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars made before 2000.\n * db.select().from(cars)\n * .where(lte(cars.year, 2000))\n * ```\n *\n * @see lt for a strictly less-than condition\n */\nexport const lte: BinaryOperator = (left: SQLWrapper, right: unknown): SQL => {\n\treturn sql`${left} <= ${bindIfParam(right, left)}`;\n};\n\n/**\n * Test whether the first parameter, a column or expression,\n * has a value from a list passed as the second argument.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars made by Ford or GM.\n * db.select().from(cars)\n * .where(inArray(cars.make, ['Ford', 'GM']))\n * ```\n *\n * @see notInArray for the inverse of this test\n */\nexport function inArray<T>(\n\tcolumn: SQL.Aliased<T>,\n\tvalues: (T | Placeholder)[] | SQLWrapper,\n): SQL;\nexport function inArray<TColumn extends Column>(\n\tcolumn: TColumn,\n\tvalues: ReadonlyArray<GetColumnData<TColumn, 'raw'> | Placeholder> | SQLWrapper,\n): SQL;\nexport function inArray<T extends SQLWrapper>(\n\tcolumn: Exclude<T, SQL.Aliased | Column>,\n\tvalues: ReadonlyArray<unknown | Placeholder> | SQLWrapper,\n): SQL;\nexport function inArray(\n\tcolumn: SQLWrapper,\n\tvalues: ReadonlyArray<unknown | Placeholder> | SQLWrapper,\n): SQL {\n\tif (Array.isArray(values)) {\n\t\tif (values.length === 0) {\n\t\t\treturn sql`false`;\n\t\t}\n\t\treturn sql`${column} in ${values.map((v) => bindIfParam(v, column))}`;\n\t}\n\n\treturn sql`${column} in ${bindIfParam(values, column)}`;\n}\n\n/**\n * Test whether the first parameter, a column or expression,\n * has a value that is not present in a list passed as the\n * second argument.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars made by any company except Ford or GM.\n * db.select().from(cars)\n * .where(notInArray(cars.make, ['Ford', 'GM']))\n * ```\n *\n * @see inArray for the inverse of this test\n */\nexport function notInArray<T>(\n\tcolumn: SQL.Aliased<T>,\n\tvalues: (T | Placeholder)[] | SQLWrapper,\n): SQL;\nexport function notInArray<TColumn extends Column>(\n\tcolumn: TColumn,\n\tvalues: (GetColumnData<TColumn, 'raw'> | Placeholder)[] | SQLWrapper,\n): SQL;\nexport function notInArray<T extends SQLWrapper>(\n\tcolumn: Exclude<T, SQL.Aliased | Column>,\n\tvalues: (unknown | Placeholder)[] | SQLWrapper,\n): SQL;\nexport function notInArray(\n\tcolumn: SQLWrapper,\n\tvalues: (unknown | Placeholder)[] | SQLWrapper,\n): SQL {\n\tif (Array.isArray(values)) {\n\t\tif (values.length === 0) {\n\t\t\treturn sql`true`;\n\t\t}\n\t\treturn sql`${column} not in ${values.map((v) => bindIfParam(v, column))}`;\n\t}\n\n\treturn sql`${column} not in ${bindIfParam(values, column)}`;\n}\n\n/**\n * Test whether an expression is NULL. By the SQL standard,\n * NULL is neither equal nor not equal to itself, so\n * it's recommended to use `isNull` and `notIsNull` for\n * comparisons to NULL.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars that have no discontinuedAt date.\n * db.select().from(cars)\n * .where(isNull(cars.discontinuedAt))\n * ```\n *\n * @see isNotNull for the inverse of this test\n */\nexport function isNull(value: SQLWrapper): SQL {\n\treturn sql`(${value} is null)`;\n}\n\n/**\n * Test whether an expression is not NULL. By the SQL standard,\n * NULL is neither equal nor not equal to itself, so\n * it's recommended to use `isNull` and `notIsNull` for\n * comparisons to NULL.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars that have been discontinued.\n * db.select().from(cars)\n * .where(isNotNull(cars.discontinuedAt))\n * ```\n *\n * @see isNull for the inverse of this test\n */\nexport function isNotNull(value: SQLWrapper): SQL {\n\treturn sql`(${value} is not null)`;\n}\n\n/**\n * Test whether a subquery evaluates to have any rows.\n *\n * ## Examples\n *\n * ```ts\n * // Users whose `homeCity` column has a match in a cities\n * // table.\n * db\n * .select()\n * .from(users)\n * .where(\n * exists(db.select()\n * .from(cities)\n * .where(eq(users.homeCity, cities.id))),\n * );\n * ```\n *\n * @see notExists for the inverse of this test\n */\nexport function exists(subquery: SQLWrapper): SQL {\n\treturn sql`exists ${subquery}`;\n}\n\n/**\n * Test whether a subquery doesn't include any result\n * rows.\n *\n * ## Examples\n *\n * ```ts\n * // Users whose `homeCity` column doesn't match\n * // a row in the cities table.\n * db\n * .select()\n * .from(users)\n * .where(\n * notExists(db.select()\n * .from(cities)\n * .where(eq(users.homeCity, cities.id))),\n * );\n * ```\n *\n * @see exists for the inverse of this test\n */\nexport function notExists(subquery: SQLWrapper): SQL {\n\treturn sql`not exists ${subquery}`;\n}\n\n/**\n * Test whether an expression is between two values. This\n * is an easier way to express range tests, which would be\n * expressed mathematically as `x <= a <= y` but in SQL\n * would have to be like `a >= x AND a <= y`.\n *\n * Between is inclusive of the endpoints: if `column`\n * is equal to `min` or `max`, it will be TRUE.\n *\n * ## Examples\n *\n * ```ts\n * // Select cars made between 1990 and 2000\n * db.select().from(cars)\n * .where(between(cars.year, 1990, 2000))\n * ```\n *\n * @see notBetween for the inverse of this test\n */\nexport function between<T>(\n\tcolumn: SQL.Aliased,\n\tmin: T | SQLWrapper,\n\tmax: T | SQLWrapper,\n): SQL;\nexport function between<TColumn extends AnyColumn>(\n\tcolumn: TColumn,\n\tmin: GetColumnData<TColumn, 'raw'> | SQLWrapper,\n\tmax: GetColumnData<TColumn, 'raw'> | SQLWrapper,\n): SQL;\nexport function between<T extends SQLWrapper>(\n\tcolumn: Exclude<T, SQL.Aliased | Column>,\n\tmin: unknown,\n\tmax: unknown,\n): SQL;\nexport function between(column: SQLWrapper, min: unknown, max: unknown): SQL {\n\treturn sql`${column} between ${bindIfParam(min, column)} and ${\n\t\tbindIfParam(\n\t\t\tmax,\n\t\t\tcolumn,\n\t\t)\n\t}`;\n}\n\n/**\n * Test whether an expression is not between two values.\n *\n * This, like `between`, includes its endpoints, so if\n * the `column` is equal to `min` or `max`, in this case\n * it will evaluate to FALSE.\n *\n * ## Examples\n *\n * ```ts\n * // Exclude cars made in the 1970s\n * db.select().from(cars)\n * .where(notBetween(cars.year, 1970, 1979))\n * ```\n *\n * @see between for the inverse of this test\n */\nexport function notBetween<T>(\n\tcolumn: SQL.Aliased,\n\tmin: T | SQLWrapper,\n\tmax: T | SQLWrapper,\n): SQL;\nexport function notBetween<TColumn extends AnyColumn>(\n\tcolumn: TColumn,\n\tmin: GetColumnData<TColumn, 'raw'> | SQLWrapper,\n\tmax: GetColumnData<TColumn, 'raw'> | SQLWrapper,\n): SQL;\nexport function notBetween<T extends SQLWrapper>(\n\tcolumn: Exclude<T, SQL.Aliased | Column>,\n\tmin: unknown,\n\tmax: unknown,\n): SQL;\nexport function notBetween(\n\tcolumn: SQLWrapper,\n\tmin: unknown,\n\tmax: unknown,\n): SQL {\n\treturn sql`${column} not between ${\n\t\tbindIfParam(\n\t\t\tmin,\n\t\t\tcolumn,\n\t\t)\n\t} and ${bindIfParam(max, column)}`;\n}\n\n/**\n * Compare a column to a pattern, which can include `%` and `_`\n * characters to match multiple variations. Including `%`\n * in the pattern matches zero or more characters, and including\n * `_` will match a single character.\n *\n * ## Examples\n *\n * ```ts\n * // Select all cars with 'Turbo' in their names.\n * db.select().from(cars)\n * .where(like(cars.name, '%Turbo%'))\n * ```\n *\n * @see ilike for a case-insensitive version of this condition\n */\nexport function like(column: Column | SQL.Aliased | SQL | SQLWrapper, value: string | SQLWrapper): SQL {\n\treturn sql`${column} like ${value}`;\n}\n\n/**\n * The inverse of like - this tests that a given column\n * does not match a pattern, which can include `%` and `_`\n * characters to match multiple variations. Including `%`\n * in the pattern matches zero or more characters, and including\n * `_` will match a single character.\n *\n * ## Examples\n *\n * ```ts\n * // Select all cars that don't have \"ROver\" in their name.\n * db.select().from(cars)\n * .where(notLike(cars.name, '%Rover%'))\n * ```\n *\n * @see like for the inverse condition\n * @see notIlike for a case-insensitive version of this condition\n */\nexport function notLike(column: Column | SQL.Aliased | SQL | SQLWrapper, value: string | SQLWrapper): SQL {\n\treturn sql`${column} not like ${value}`;\n}\n\n/**\n * Case-insensitively compare a column to a pattern,\n * which can include `%` and `_`\n * characters to match multiple variations. Including `%`\n * in the pattern matches zero or more characters, and including\n * `_` will match a single character.\n *\n * Unlike like, this performs a case-insensitive comparison.\n *\n * ## Examples\n *\n * ```ts\n * // Select all cars with 'Turbo' in their names.\n * db.select().from(cars)\n * .where(ilike(cars.name, '%Turbo%'))\n * ```\n *\n * @see like for a case-sensitive version of this condition\n */\nexport function ilike(column: Column | SQL.Aliased | SQL | SQLWrapper, value: string | SQLWrapper): SQL {\n\treturn sql`${column} ilike ${value}`;\n}\n\n/**\n * The inverse of ilike - this case-insensitively tests that a given column\n * does not match a pattern, which can include `%` and `_`\n * characters to match multiple variations. Including `%`\n * in the pattern matches zero or more characters, and including\n * `_` will match a single character.\n *\n * ## Examples\n *\n * ```ts\n * // Select all cars that don't have \"Rover\" in their name.\n * db.select().from(cars)\n * .where(notLike(cars.name, '%Rover%'))\n * ```\n *\n * @see ilike for the inverse condition\n * @see notLike for a case-sensitive version of this condition\n */\nexport function notIlike(column: Column | SQL.Aliased | SQL | SQLWrapper, value: string | SQLWrapper): SQL {\n\treturn sql`${column} not ilike ${value}`;\n}\n\n/**\n * Test that a column or expression contains all elements of\n * the list passed as the second argument.\n *\n * ## Throws\n *\n * The argument passed in the second array can't be empty:\n * if an empty is provided, this method will throw.\n *\n * ## Examples\n *\n * ```ts\n * // Select posts where its tags contain \"Typescript\" and \"ORM\".\n * db.select().from(posts)\n * .where(arrayContains(posts.tags, ['Typescript', 'ORM']))\n * ```\n *\n * @see arrayContained to find if an array contains all elements of a column or expression\n * @see arrayOverlaps to find if a column or expression contains any elements of an array\n */\nexport function arrayContains<T>(\n\tcolumn: SQL.Aliased<T>,\n\tvalues: (T | Placeholder) | SQLWrapper,\n): SQL;\nexport function arrayContains<TColumn extends Column>(\n\tcolumn: TColumn,\n\tvalues: (GetColumnData<TColumn, 'raw'> | Placeholder) | SQLWrapper,\n): SQL;\nexport function arrayContains<T extends SQLWrapper>(\n\tcolumn: Exclude<T, SQL.Aliased | Column>,\n\tvalues: (unknown | Placeholder)[] | SQLWrapper,\n): SQL;\nexport function arrayContains(\n\tcolumn: SQLWrapper,\n\tvalues: (unknown | Placeholder)[] | SQLWrapper,\n): SQL {\n\tif (Array.isArray(values)) {\n\t\tif (values.length === 0) {\n\t\t\tthrow new Error('arrayContains requires at least one value');\n\t\t}\n\t\tconst par = bindIfParam(values, column);\n\t\tconst array = sql`${Array.isArray(par) ? new Param(par) : par}`;\n\t\treturn sql`${column} @> ${array}`;\n\t}\n\n\treturn sql`${column} @> ${bindIfParam(values, column)}`;\n}\n\n/**\n * Test that the list passed as the second argument contains\n * all elements of a column or expression.\n *\n * ## Throws\n *\n * The argument passed in the second array can't be empty:\n * if an empty is provided, this method will throw.\n *\n * ## Examples\n *\n * ```ts\n * // Select posts where its tags contain \"Typescript\", \"ORM\" or both,\n * // but filtering posts that have additional tags.\n * db.select().from(posts)\n * .where(arrayContained(posts.tags, ['Typescript', 'ORM']))\n * ```\n *\n * @see arrayContains to find if a column or expression contains all elements of an array\n * @see arrayOverlaps to find if a column or expression contains any elements of an array\n */\nexport function arrayContained<T>(\n\tcolumn: SQL.Aliased<T>,\n\tvalues: (T | Placeholder) | SQLWrapper,\n): SQL;\nexport function arrayContained<TColumn extends Column>(\n\tcolumn: TColumn,\n\tvalues: (GetColumnData<TColumn, 'raw'> | Placeholder) | SQLWrapper,\n): SQL;\nexport function arrayContained<T extends SQLWrapper>(\n\tcolumn: Exclude<T, SQL.Aliased | Column>,\n\tvalues: (unknown | Placeholder)[] | SQLWrapper,\n): SQL;\nexport function arrayContained(\n\tcolumn: SQLWrapper,\n\tvalues: (unknown | Placeholder)[] | SQLWrapper,\n): SQL {\n\tif (Array.isArray(values)) {\n\t\tif (values.length === 0) {\n\t\t\tthrow new Error('arrayContained requires at least one value');\n\t\t}\n\t\tconst par = bindIfParam(values, column);\n\t\tconst array = sql`${Array.isArray(par) ? new Param(par) : par}`;\n\t\treturn sql`${column} <@ ${array}`;\n\t}\n\n\treturn sql`${column} <@ ${bindIfParam(values, column)}`;\n}\n\n/**\n * Test that a column or expression contains any elements of\n * the list passed as the second argument.\n *\n * ## Throws\n *\n * The argument passed in the second array can't be empty:\n * if an empty is provided, this method will throw.\n *\n * ## Examples\n *\n * ```ts\n * // Select posts where its tags contain \"Typescript\", \"ORM\" or both.\n * db.select().from(posts)\n * .where(arrayOverlaps(posts.tags, ['Typescript', 'ORM']))\n * ```\n *\n * @see arrayContains to find if a column or expression contains all elements of an array\n * @see arrayContained to find if an array contains all elements of a column or expression\n */\nexport function arrayOverlaps<T>(\n\tcolumn: SQL.Aliased<T>,\n\tvalues: (T | Placeholder) | SQLWrapper,\n): SQL;\nexport function arrayOverlaps<TColumn extends Column>(\n\tcolumn: TColumn,\n\tvalues: (GetColumnData<TColumn, 'raw'> | Placeholder) | SQLWrapper,\n): SQL;\nexport function arrayOverlaps<T extends SQLWrapper>(\n\tcolumn: Exclude<T, SQL.Aliased | Column>,\n\tvalues: (unknown | Placeholder)[] | SQLWrapper,\n): SQL;\nexport function arrayOverlaps(\n\tcolumn: SQLWrapper,\n\tvalues: (unknown | Placeholder)[] | SQLWrapper,\n): SQL {\n\tif (Array.isArray(values)) {\n\t\tif (values.length === 0) {\n\t\t\tthrow new Error('arrayOverlaps requires at least one value');\n\t\t}\n\t\tconst par = bindIfParam(values, column);\n\t\tconst array = sql`${Array.isArray(par) ? new Param(par) : par}`;\n\t\treturn sql`${column} && ${array}`;\n\t}\n\n\treturn sql`${column} && ${bindIfParam(values, column)}`;\n}\n", "import type { AnyColumn } from '../../column.ts';\nimport type { SQL, SQLWrapper } from '../sql.ts';\nimport { sql } from '../sql.ts';\n\n/**\n * Used in sorting, this specifies that the given\n * column or expression should be sorted in ascending\n * order. By the SQL standard, ascending order is the\n * default, so it is not usually necessary to specify\n * ascending sort order.\n *\n * ## Examples\n *\n * ```ts\n * // Return cars, starting with the oldest models\n * // and going in ascending order to the newest.\n * db.select().from(cars)\n * .orderBy(asc(cars.year));\n * ```\n *\n * @see desc to sort in descending order\n */\nexport function asc(column: AnyColumn | SQLWrapper): SQL {\n\treturn sql`${column} asc`;\n}\n\n/**\n * Used in sorting, this specifies that the given\n * column or expression should be sorted in descending\n * order.\n *\n * ## Examples\n *\n * ```ts\n * // Select users, with the most recently created\n * // records coming first.\n * db.select().from(users)\n * .orderBy(desc(users.createdAt));\n * ```\n *\n * @see asc to sort in ascending order\n */\nexport function desc(column: AnyColumn | SQLWrapper): SQL {\n\treturn sql`${column} desc`;\n}\n", "import { entityKind } from '~/entity.ts';\nimport type { CockroachColumn, ExtraConfigColumn as CockroachExtraConfigColumn } from './cockroach-core/index.ts';\nimport type { Column, ColumnBaseConfig } from './column.ts';\nimport type { MsSqlColumn } from './mssql-core/index.ts';\nimport type { MySqlColumn } from './mysql-core/index.ts';\nimport type { ExtraConfigColumn, PgColumn, PgSequenceOptions } from './pg-core/index.ts';\nimport type { SingleStoreColumn } from './singlestore-core/index.ts';\nimport type { SQL } from './sql/sql.ts';\nimport type { SQLiteColumn } from './sqlite-core/index.ts';\nimport type { Assume } from './utils.ts';\n\nexport type ColumnDataType =\n\t| 'array'\n\t| 'bigint'\n\t| 'boolean'\n\t| 'custom'\n\t| 'number'\n\t| 'object'\n\t| 'string';\n\nexport type ColumnDataArrayConstraint =\n\t| 'vector'\n\t| 'int64vector'\n\t| 'halfvector'\n\t| 'basecolumn'\n\t| 'point'\n\t| 'geometry'\n\t| 'line';\n\nexport type ColumnDataBigIntConstraint = 'int64' | 'uint64';\n\nexport type ColumnDataNumberConstraint =\n\t| 'double'\n\t| 'float'\n\t| 'int8'\n\t| 'int16'\n\t| 'int24'\n\t| 'int32'\n\t| 'int53'\n\t| 'udouble'\n\t| 'ufloat'\n\t| 'uint8'\n\t| 'uint16'\n\t| 'uint24'\n\t| 'uint32'\n\t| 'uint53'\n\t| 'unsigned'\n\t| 'year';\n\nexport type ColumnDataObjectConstraint =\n\t| 'buffer'\n\t| 'date'\n\t| 'geometry'\n\t| 'json'\n\t| 'line'\n\t| 'point'\n\t// Gel-specific\n\t| 'dateDuration'\n\t| 'duration'\n\t| 'localDate'\n\t| 'localDateTime'\n\t| 'localTime'\n\t| 'relDuration';\n\nexport type ColumnDataStringConstraint =\n\t| 'binary'\n\t| 'cidr'\n\t| 'date'\n\t| 'datetime'\n\t| 'enum'\n\t| 'inet'\n\t| 'int64'\n\t| 'interval'\n\t| 'macaddr'\n\t| 'macaddr8'\n\t| 'numeric'\n\t| 'sparsevec'\n\t| 'time'\n\t| 'timestamp'\n\t| 'uint64'\n\t| 'unumeric'\n\t| 'uuid';\n\nexport type ColumnDataConstraint =\n\t| ColumnDataArrayConstraint\n\t| ColumnDataBigIntConstraint\n\t| ColumnDataNumberConstraint\n\t| ColumnDataObjectConstraint\n\t| ColumnDataStringConstraint;\n\nexport type ColumnType =\n\t| ColumnDataType\n\t| `array ${ColumnDataArrayConstraint}`\n\t| `bigint ${ColumnDataBigIntConstraint}`\n\t| `number ${ColumnDataNumberConstraint}`\n\t| `object ${ColumnDataObjectConstraint}`\n\t| `string ${ColumnDataStringConstraint}`;\n\nexport interface ColumnTypeData<\n\tTType extends ColumnDataType = ColumnDataType,\n\tTConstraint extends ColumnDataConstraint | undefined = ColumnDataConstraint | undefined,\n> {\n\ttype: TType;\n\tconstraint: TConstraint;\n}\n\nexport type ExtractColumnTypeData<T extends ColumnType> = T extends\n\t`${infer Type extends ColumnDataType} ${infer Constraint extends ColumnDataConstraint}`\n\t? ColumnTypeData<Type, Constraint>\n\t: ColumnTypeData<Assume<T, ColumnDataType>, undefined>;\n\nexport function extractExtendedColumnType<TColumn extends Column>(\n\tcolumn: TColumn,\n): ExtractColumnTypeData<TColumn['_']['dataType']> {\n\tconst [type, constraint] = column.dataType.split(' ');\n\n\treturn { type, constraint } as any;\n}\n\nexport type Dialect = 'pg' | 'mysql' | 'sqlite' | 'singlestore' | 'mssql' | 'common' | 'cockroach';\n\n// TODO update description\n// 'virtual' | 'stored' for postgres\n// 'stored' for mysql\n// 'virtual' | 'persisted' for mssql\n// We should remove this option from common Column and store it per dialect common\n// Was discussed with Andrew\nexport type GeneratedStorageMode = 'virtual' | 'stored' | 'persisted';\n\nexport type GeneratedType = 'always' | 'byDefault';\n\nexport interface GeneratedColumnConfig<TDataType> {\n\tas: TDataType | SQL | (() => SQL);\n\ttype?: GeneratedType;\n\tmode?: GeneratedStorageMode;\n}\n\nexport interface GeneratedIdentityConfig {\n\tsequenceName?: string;\n\tsequenceOptions?: PgSequenceOptions;\n\ttype: 'always' | 'byDefault';\n}\n\nexport interface ColumnBuilderBaseConfig<TDataType extends ColumnType> {\n\tdataType: TDataType;\n\tdata: unknown;\n\tdriverParam: unknown;\n\tnotNull?: boolean;\n\thasDefault?: boolean;\n}\n\nexport type MakeColumnConfig<\n\tT extends ColumnBuilderBaseConfig<ColumnType>,\n\tTTableName extends string,\n\tTDialect extends Dialect = 'common',\n\tTData = T extends { $type: infer U } ? U : T['data'],\n> = {\n\tname: string;\n\ttableName: TTableName;\n\tdataType: T['dataType'];\n\tdata: TData;\n\tdriverParam: T['driverParam'];\n\tnotNull: T['notNull'] extends true ? true : false;\n\thasDefault: T['hasDefault'] extends true ? true : false;\n\tisPrimaryKey: T extends { isPrimaryKey: true } ? true : false;\n\tisAutoincrement: T extends { isAutoincrement: true } ? true : false;\n\thasRuntimeDefault: T extends { hasRuntimeDefault: true } ? true : false;\n\tenumValues: T extends { enumValues: [string, ...string[]] } ? T['enumValues'] : undefined;\n\tbaseColumn: T extends { baseBuilder: infer U extends ColumnBuilderBase } ? BuildColumn<TTableName, U, TDialect>\n\t\t: never;\n\tidentity: T extends { identity: 'always' } ? 'always' : T extends { identity: 'byDefault' } ? 'byDefault' : undefined;\n\tgenerated: T extends { generated: infer G } ? unknown extends G ? undefined\n\t\t: G extends undefined ? undefined\n\t\t: G\n\t\t: undefined;\n} & {};\n\nexport interface ColumnBuilderRuntimeConfig<TData> {\n\tname: string;\n\tkeyAsName: boolean;\n\tnotNull: boolean;\n\tdefault: TData | SQL | undefined;\n\tdefaultFn: (() => TData | SQL) | undefined;\n\tonUpdateFn: (() => TData | SQL) | undefined;\n\thasDefault: boolean;\n\tprimaryKey: boolean;\n\tisUnique: boolean;\n\tuniqueName: string | undefined;\n\tuniqueType: string | undefined;\n\tdataType: string;\n\tcolumnType: string;\n\tgenerated: GeneratedColumnConfig<TData> | undefined;\n\tgeneratedIdentity: GeneratedIdentityConfig | undefined;\n}\n\nexport interface ColumnBuilderExtraConfig {\n\tprimaryKeyHasDefault?: boolean;\n}\n\nexport type NotNull<T> = T & {\n\t_: {\n\t\tnotNull: true;\n\t};\n};\n\nexport type HasDefault<T> = T & {\n\t_: {\n\t\thasDefault: true;\n\t};\n};\n\nexport type IsPrimaryKey<T> = T & {\n\t_: {\n\t\tisPrimaryKey: true;\n\t\tnotNull: true;\n\t};\n};\n\nexport type IsAutoincrement<T> = T & {\n\t_: {\n\t\tisAutoincrement: true;\n\t};\n};\n\nexport type HasRuntimeDefault<T> = T & {\n\t_: {\n\t\thasRuntimeDefault: true;\n\t};\n};\n\nexport type $Type<T, TType> = T & {\n\t_: {\n\t\t$type: TType;\n\t};\n};\n\nexport type HasGenerated<T, TGenerated = {}> = T & {\n\t_: {\n\t\thasDefault: true;\n\t\tgenerated: TGenerated;\n\t};\n};\n\nexport type IsIdentity<T, TType extends 'always' | 'byDefault'> = T & {\n\t_: {\n\t\tnotNull: true;\n\t\thasDefault: true;\n\t\tidentity: TType;\n\t};\n};\n\nexport interface ColumnBuilderBase<\n\tout T extends ColumnBuilderBaseConfig<ColumnType> = ColumnBuilderBaseConfig<ColumnType>,\n> {\n\t_: T;\n}\n\n// To understand how to use `ColumnBuilder` and `AnyColumnBuilder`, see `Column` and `AnyColumn` documentation.\nexport abstract class ColumnBuilder<\n\tout T extends ColumnBuilderBaseConfig<ColumnType>,\n\tTRuntimeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = ColumnBuilderExtraConfig,\n> implements ColumnBuilderBase<T> {\n\tstatic readonly [entityKind]: string = 'ColumnBuilder';\n\n\tdeclare _: T;\n\n\t/** @internal */\n\tprotected config: ColumnBuilderRuntimeConfig<T['data']> & TRuntimeConfig;\n\n\tconstructor(name: string, dataType: ColumnType, columnType: string) {\n\t\tthis.config = {\n\t\t\tname,\n\t\t\tkeyAsName: name === '',\n\t\t\tnotNull: false,\n\t\t\tdefault: undefined,\n\t\t\thasDefault: false,\n\t\t\tprimaryKey: false,\n\t\t\tisUnique: false,\n\t\t\tuniqueName: undefined,\n\t\t\tuniqueType: undefined,\n\t\t\tdataType,\n\t\t\tcolumnType,\n\t\t\tgenerated: undefined,\n\t\t} as ColumnBuilderRuntimeConfig<T['data']> & TRuntimeConfig; // TODO: ??\n\t}\n\n\t/**\n\t * Changes the data type of the column. Commonly used with `json` columns. Also, useful for branded types.\n\t *\n\t * @example\n\t * ```ts\n\t * const users = pgTable('users', {\n\t * \tid: integer('id').$type<UserId>().primaryKey(),\n\t * \tdetails: json('details').$type<UserDetails>().notNull(),\n\t * });\n\t * ```\n\t */\n\t$type<TType>(): $Type<this, TType> {\n\t\treturn this as $Type<this, TType>;\n\t}\n\n\t/**\n\t * Adds a `not null` clause to the column definition.\n\t *\n\t * Affects the `select` model of the table - columns *without* `not null` will be nullable on select.\n\t */\n\tnotNull(): NotNull<this> {\n\t\tthis.config.notNull = true;\n\t\treturn this as NotNull<this>;\n\t}\n\n\t/**\n\t * Adds a `default <value>` clause to the column definition.\n\t *\n\t * Affects the `insert` model of the table - columns *with* `default` are optional on insert.\n\t *\n\t * If you need to set a dynamic default value, use {@link $defaultFn} instead.\n\t */\n\tdefault(value: (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL): HasDefault<this> {\n\t\tthis.config.default = value;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasDefault<this>;\n\t}\n\n\t/**\n\t * Adds a dynamic default value to the column.\n\t * The function will be called when the row is inserted, and the returned value will be used as the column value.\n\t *\n\t * **Note:** This value does not affect the `drizzle-kit` behavior, it is only used at runtime in `drizzle-orm`.\n\t */\n\t$defaultFn(\n\t\tfn: () => (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL,\n\t): HasRuntimeDefault<HasDefault<this>> {\n\t\tthis.config.defaultFn = fn;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasRuntimeDefault<HasDefault<this>>;\n\t}\n\n\t/**\n\t * Alias for {@link $defaultFn}.\n\t */\n\t$default = this.$defaultFn;\n\n\t/**\n\t * Adds a dynamic update value to the column.\n\t * The function will be called when the row is updated, and the returned value will be used as the column value if none is provided.\n\t * If no `default` (or `$defaultFn`) value is provided, the function will be called when the row is inserted as well, and the returned value will be used as the column value.\n\t *\n\t * **Note:** This value does not affect the `drizzle-kit` behavior, it is only used at runtime in `drizzle-orm`.\n\t */\n\t$onUpdateFn(\n\t\tfn: () => (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL,\n\t): HasDefault<this> {\n\t\tthis.config.onUpdateFn = fn;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasDefault<this>;\n\t}\n\n\t/**\n\t * Alias for {@link $onUpdateFn}.\n\t */\n\t$onUpdate = this.$onUpdateFn;\n\n\t/**\n\t * Adds a `primary key` clause to the column definition. This implicitly makes the column `not null`.\n\t *\n\t * In SQLite, `integer primary key` implicitly makes the column auto-incrementing.\n\t */\n\tprimaryKey(): TExtraConfig['primaryKeyHasDefault'] extends true ? IsPrimaryKey<HasDefault<this>>\n\t\t: IsPrimaryKey<this>\n\t{\n\t\tthis.config.primaryKey = true;\n\t\tthis.config.notNull = true;\n\t\treturn this as TExtraConfig['primaryKeyHasDefault'] extends true ? IsPrimaryKey<HasDefault<this>>\n\t\t\t: IsPrimaryKey<this>;\n\t}\n\n\tabstract generatedAlwaysAs(\n\t\tas: SQL | T['data'] | (() => SQL),\n\t\tconfig?: Partial<GeneratedColumnConfig<unknown>>,\n\t): HasGenerated<this, {\n\t\ttype: 'always';\n\t}>;\n\n\t/** @internal Sets the name of the column to the key within the table definition if a name was not given. */\n\tsetName(name: string, casingFn: (name: string) => string) {\n\t\tif (this.config.name !== '') return;\n\t\tthis.config.name = casingFn(name);\n\t}\n}\n\nexport type BuildColumn<\n\tTTableName extends string,\n\tTBuilder extends ColumnBuilderBase,\n\tTDialect extends Dialect,\n\tTBuiltConfig extends ColumnBaseConfig<ColumnType> = MakeColumnConfig<TBuilder['_'], TTableName, TDialect>,\n> =\n\t// TDialect extends 'pg' ? PgColumn<TBuiltConfig, {}>\n\tTDialect extends 'mysql' ? MySqlColumn<TBuiltConfig, {}>\n\t\t: TDialect extends 'mssql' ? MsSqlColumn<TBuiltConfig, {}>\n\t\t: TDialect extends 'sqlite' ? SQLiteColumn<TBuiltConfig, {}>\n\t\t: TDialect extends 'singlestore' ? SingleStoreColumn<TBuiltConfig, {}>\n\t\t: TDialect extends 'cockroach' ? CockroachColumn<TBuiltConfig, {}>\n\t\t: TDialect extends 'common' ? Column<TBuiltConfig, {}>\n\t\t: never;\n\nexport type BuildIndexColumn<\n\tTDialect extends Dialect,\n> = TDialect extends 'pg' ? ExtraConfigColumn\n\t: TDialect extends 'cockroach' ? CockroachExtraConfigColumn\n\t: never;\n\n// TODO\n// try to make sql as well + indexRaw\n\n// optional after everything will be working as expected\n// also try to leave only needed methods for extraConfig\n// make an error if I pass .asc() to fk and so on\n\nexport type BuildColumns<\n\tTTableName extends string,\n\tTConfigMap extends Record<string, ColumnBuilderBase>,\n\tTDialect extends Dialect,\n> =\n\t& {\n\t\t[Key in keyof TConfigMap]: BuildColumn<\n\t\t\tTTableName,\n\t\t\tTConfigMap[Key],\n\t\t\tTDialect\n\t\t>;\n\t}\n\t& {};\n\nexport type BuildExtraConfigColumns<\n\t_TTableName extends string,\n\tTConfigMap extends Record<string, ColumnBuilderBase>,\n\tTDialect extends Dialect,\n> =\n\t& {\n\t\t[Key in keyof TConfigMap]: BuildIndexColumn<TDialect>;\n\t}\n\t& {};\n\nexport type ChangeColumnTableName<\n\tTColumn extends Column,\n\tTAlias extends string,\n\tTDialect extends Dialect,\n> =\n\t// TODO: optimise\n\tTDialect extends 'pg' ? PgColumn<\n\t\t\tTColumn['_']['dataType'],\n\t\t\tOmit<TColumn['_'], 'tableName'> & { tableName: TAlias; insertType: unknown }\n\t\t>\n\t\t: TDialect extends 'mysql' ? MySqlColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: TDialect extends 'singlestore' ? SingleStoreColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: TDialect extends 'sqlite' ? SQLiteColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: TDialect extends 'mssql' ? MsSqlColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: TDialect extends 'cockroach' ? CockroachColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: never;\n", "import { entityKind } from '~/entity.ts';\nimport { TableName } from '~/table.utils.ts';\nimport type { AnySQLiteColumn, SQLiteColumn } from './columns/index.ts';\nimport type { SQLiteTable } from './table.ts';\n\nexport type UpdateDeleteAction = 'cascade' | 'restrict' | 'no action' | 'set null' | 'set default';\n\nexport type Reference = () => {\n\treadonly name?: string;\n\treadonly columns: SQLiteColumn[];\n\treadonly foreignTable: SQLiteTable;\n\treadonly foreignColumns: SQLiteColumn[];\n};\n\nexport class ForeignKeyBuilder {\n\tstatic readonly [entityKind]: string = 'SQLiteForeignKeyBuilder';\n\n\tdeclare _: {\n\t\tbrand: 'SQLiteForeignKeyBuilder';\n\t\tforeignTableName: 'TForeignTableName';\n\t};\n\n\t/** @internal */\n\treference: Reference;\n\n\t/** @internal */\n\t_onUpdate: UpdateDeleteAction | undefined;\n\n\t/** @internal */\n\t_onDelete: UpdateDeleteAction | undefined;\n\n\tconstructor(\n\t\tconfig: () => {\n\t\t\tname?: string;\n\t\t\tcolumns: SQLiteColumn[];\n\t\t\tforeignColumns: SQLiteColumn[];\n\t\t},\n\t\tactions?: {\n\t\t\tonUpdate?: UpdateDeleteAction;\n\t\t\tonDelete?: UpdateDeleteAction;\n\t\t} | undefined,\n\t) {\n\t\tthis.reference = () => {\n\t\t\tconst { name, columns, foreignColumns } = config();\n\t\t\treturn { name, columns, foreignTable: foreignColumns[0]!.table as SQLiteTable, foreignColumns };\n\t\t};\n\t\tif (actions) {\n\t\t\tthis._onUpdate = actions.onUpdate;\n\t\t\tthis._onDelete = actions.onDelete;\n\t\t}\n\t}\n\n\tonUpdate(action: UpdateDeleteAction): this {\n\t\tthis._onUpdate = action;\n\t\treturn this;\n\t}\n\n\tonDelete(action: UpdateDeleteAction): this {\n\t\tthis._onDelete = action;\n\t\treturn this;\n\t}\n\n\t/** @internal */\n\tbuild(table: SQLiteTable): ForeignKey {\n\t\treturn new ForeignKey(table, this);\n\t}\n}\n\nexport class ForeignKey {\n\tstatic readonly [entityKind]: string = 'SQLiteForeignKey';\n\n\treadonly reference: Reference;\n\treadonly onUpdate: UpdateDeleteAction | undefined;\n\treadonly onDelete: UpdateDeleteAction | undefined;\n\n\tconstructor(readonly table: SQLiteTable, builder: ForeignKeyBuilder) {\n\t\tthis.reference = builder.reference;\n\t\tthis.onUpdate = builder._onUpdate;\n\t\tthis.onDelete = builder._onDelete;\n\t}\n\n\tgetName(): string {\n\t\tconst { name, columns, foreignColumns } = this.reference();\n\t\tconst columnNames = columns.map((column) => column.name);\n\t\tconst foreignColumnNames = foreignColumns.map((column) => column.name);\n\t\tconst chunks = [\n\t\t\tthis.table[TableName],\n\t\t\t...columnNames,\n\t\t\tforeignColumns[0]!.table[TableName],\n\t\t\t...foreignColumnNames,\n\t\t];\n\t\treturn name ?? `${chunks.join('_')}_fk`;\n\t}\n\n\tisNameExplicit() {\n\t\treturn !!this.reference().name;\n\t}\n}\n\ntype ColumnsWithTable<\n\tTTableName extends string,\n\tTColumns extends SQLiteColumn[],\n> = { [Key in keyof TColumns]: AnySQLiteColumn<{ tableName: TTableName }> };\n\nexport function foreignKey<\n\tTTableName extends string,\n\tTForeignTableName extends string,\n\tTColumns extends [AnySQLiteColumn<{ tableName: TTableName }>, ...AnySQLiteColumn<{ tableName: TTableName }>[]],\n>(\n\tconfig: {\n\t\tname?: string;\n\t\tcolumns: TColumns;\n\t\tforeignColumns: ColumnsWithTable<TForeignTableName, TColumns>;\n\t},\n): ForeignKeyBuilder;\nexport function foreignKey(\n\tconfig: any,\n): ForeignKeyBuilder {\n\tfunction mappedConfig() {\n\t\tif (typeof config === 'function') {\n\t\t\tconst { name, columns, foreignColumns } = config();\n\t\t\treturn {\n\t\t\t\tname,\n\t\t\t\tcolumns,\n\t\t\t\tforeignColumns,\n\t\t\t};\n\t\t}\n\t\treturn config;\n\t}\n\n\treturn new ForeignKeyBuilder(mappedConfig);\n}\n", "import type {\n\tColumnBuilderBaseConfig,\n\tColumnBuilderExtraConfig,\n\tColumnBuilderRuntimeConfig,\n\tColumnType,\n\tHasGenerated,\n} from '~/column-builder.ts';\nimport { ColumnBuilder } from '~/column-builder.ts';\nimport { Column } from '~/column.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { SQL } from '~/sql/sql.ts';\nimport type { ForeignKey, UpdateDeleteAction } from '~/sqlite-core/foreign-keys.ts';\nimport { ForeignKeyBuilder } from '~/sqlite-core/foreign-keys.ts';\nimport type { SQLiteTable } from '~/sqlite-core/table.ts';\nimport type { Update } from '~/utils.ts';\n\nexport type SQLiteColumns = Record<string, SQLiteColumn<any>>;\n\nexport interface ReferenceConfig {\n\tref: () => SQLiteColumn;\n\tactions: {\n\t\tonUpdate?: UpdateDeleteAction;\n\t\tonDelete?: UpdateDeleteAction;\n\t};\n}\n\nexport interface SQLiteGeneratedColumnConfig {\n\tmode?: 'virtual' | 'stored';\n}\n\nexport abstract class SQLiteColumnBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnType> = ColumnBuilderBaseConfig<ColumnType>,\n\tTRuntimeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = object,\n> extends ColumnBuilder<T, TRuntimeConfig, TExtraConfig> {\n\tstatic override readonly [entityKind]: string = 'SQLiteColumnBuilder';\n\n\tprivate foreignKeyConfigs: ReferenceConfig[] = [];\n\n\treferences(\n\t\tref: ReferenceConfig['ref'],\n\t\tactions: ReferenceConfig['actions'] = {},\n\t): this {\n\t\tthis.foreignKeyConfigs.push({ ref, actions });\n\t\treturn this;\n\t}\n\n\tunique(\n\t\tname?: string,\n\t): this {\n\t\tthis.config.isUnique = true;\n\t\tthis.config.uniqueName = name;\n\t\treturn this;\n\t}\n\n\tgeneratedAlwaysAs(as: SQL | (() => SQL), config?: SQLiteGeneratedColumnConfig): HasGenerated<this, {\n\t\ttype: 'always';\n\t}> {\n\t\tthis.config.generated = {\n\t\t\tas,\n\t\t\ttype: 'always',\n\t\t\tmode: config?.mode ?? 'virtual',\n\t\t};\n\t\treturn this as any;\n\t}\n\n\t/** @internal */\n\tbuildForeignKeys(column: SQLiteColumn, table: SQLiteTable): ForeignKey[] {\n\t\treturn this.foreignKeyConfigs.map(({ ref, actions }) => {\n\t\t\treturn ((ref, actions) => {\n\t\t\t\tconst builder = new ForeignKeyBuilder(() => {\n\t\t\t\t\tconst foreignColumn = ref();\n\t\t\t\t\treturn { columns: [column], foreignColumns: [foreignColumn] };\n\t\t\t\t});\n\t\t\t\tif (actions.onUpdate) {\n\t\t\t\t\tbuilder.onUpdate(actions.onUpdate);\n\t\t\t\t}\n\t\t\t\tif (actions.onDelete) {\n\t\t\t\t\tbuilder.onDelete(actions.onDelete);\n\t\t\t\t}\n\t\t\t\treturn builder.build(table);\n\t\t\t})(ref, actions);\n\t\t});\n\t}\n\n\t/** @internal */\n\tabstract build(table: SQLiteTable): SQLiteColumn;\n}\n\n// To understand how to use `SQLiteColumn` and `AnySQLiteColumn`, see `Column` and `AnyColumn` documentation.\nexport abstract class SQLiteColumn<\n\tT extends ColumnBaseConfig<ColumnType> = ColumnBaseConfig<ColumnType>,\n\tTRuntimeConfig extends object = {},\n> extends Column<T, TRuntimeConfig> {\n\tstatic override readonly [entityKind]: string = 'SQLiteColumn';\n\n\t/** @internal */\n\toverride readonly table: SQLiteTable;\n\n\tconstructor(\n\t\ttable: SQLiteTable,\n\t\tconfig: ColumnBuilderRuntimeConfig<T['data']> & TRuntimeConfig,\n\t) {\n\t\tsuper(table, config);\n\t\tthis.table = table;\n\t}\n}\n\nexport type AnySQLiteColumn<TPartial extends Partial<ColumnBaseConfig<ColumnType>> = {}> = SQLiteColumn<\n\tRequired<Update<ColumnBaseConfig<ColumnType>, TPartial>>\n>;\n", "import type { Cache } from './cache/core/cache.ts';\nimport type { CodecsCollection } from './codecs.ts';\nimport type { AnyColumn } from './column.ts';\nimport { Column } from './column.ts';\nimport { is } from './entity.ts';\nimport type { Logger } from './logger.ts';\nimport type { SelectedFieldsFlat, SelectedFieldsOrdered } from './operations.ts';\nimport type { TableLike } from './query-builders/select.types.ts';\nimport type { AnyRelations, EmptyRelations } from './relations.ts';\nimport { Param, SQL, View } from './sql/sql.ts';\nimport type { DriverValueDecoder, SQLWrapper } from './sql/sql.ts';\nimport { Subquery } from './subquery.ts';\nimport { getTableName, Table } from './table.ts';\nimport { ViewBaseConfig } from './view-common.ts';\n\n/** @internal */\nexport function mapResultRow<TResult>(\n\tcolumns: SelectedFieldsOrdered<AnyColumn>,\n\trow: unknown[] | (readonly unknown[]),\n\tjoinsNotNullableMap: Record<string, boolean> | undefined,\n): TResult {\n\t// Key -> nested object key, value -> table name if all fields in the nested object are from the same table, false otherwise\n\tconst nullifyMap: Record<string, string | false> = {};\n\n\tconst result = columns.reduce<Record<string, any>>(\n\t\t(result, { path, field, codec, arrayDimensions }, columnIndex) => {\n\t\t\tlet decoder: DriverValueDecoder<unknown, unknown>;\n\t\t\tif (is(field, Column)) {\n\t\t\t\tdecoder = field;\n\t\t\t} else if (is(field, SQL)) {\n\t\t\t\tdecoder = field.decoder;\n\t\t\t} else if (is(field, Subquery)) {\n\t\t\t\tdecoder = field._.sql.decoder;\n\t\t\t} else {\n\t\t\t\tdecoder = field.sql.decoder;\n\t\t\t}\n\t\t\tlet node = result;\n\t\t\tfor (const [pathChunkIndex, pathChunk] of path.entries()) {\n\t\t\t\tif (pathChunkIndex < path.length - 1) {\n\t\t\t\t\tif (!(pathChunk in node)) {\n\t\t\t\t\t\tnode[pathChunk] = {};\n\t\t\t\t\t}\n\t\t\t\t\tnode = node[pathChunk];\n\t\t\t\t} else {\n\t\t\t\t\tconst rawValue = row[columnIndex]!;\n\t\t\t\t\tconst value = node[pathChunk] = rawValue === null\n\t\t\t\t\t\t? null\n\t\t\t\t\t\t: decoder.mapFromDriverValue(codec ? codec(rawValue, arrayDimensions!) : rawValue);\n\n\t\t\t\t\tif (joinsNotNullableMap && is(field, Column) && path.length === 2) {\n\t\t\t\t\t\tconst objectName = path[0]!;\n\t\t\t\t\t\tif (!(objectName in nullifyMap)) {\n\t\t\t\t\t\t\tnullifyMap[objectName] = value === null ? getTableName(field.table) : false;\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\ttypeof nullifyMap[objectName] === 'string' && nullifyMap[objectName] !== getTableName(field.table)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tnullifyMap[objectName] = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\t\t{},\n\t);\n\n\t// Nullify all nested objects from nullifyMap that are nullable\n\tif (joinsNotNullableMap && Object.keys(nullifyMap).length > 0) {\n\t\tfor (const [objectName, tableName] of Object.entries(nullifyMap)) {\n\t\t\tif (typeof tableName === 'string' && !joinsNotNullableMap[tableName]) {\n\t\t\t\tresult[objectName] = null;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result as TResult;\n}\n\n/** @internal bypass bundle-time filtering */\nexport const FnConstructor = Object.getPrototypeOf(() => null).constructor as typeof Function;\n\n/** @internal */\nfunction makeJitQueryMapperInner(\n\tcolumns: SelectedFieldsOrdered<AnyColumn>,\n\tjoinsNotNullableMap: Record<string, boolean> = {},\n): string {\n\tconst preFn = [] as string[];\n\tconst fn = [] as string[];\n\tfn.push(`const [ ${columns.map((_, i) => `c${i}`).join(', ')} ] = rows[i];`);\n\n\tconst nullifyMap: Record<string, string | false> = {};\n\tconst objectIds: Record<string, string[]> = {};\n\tconst decodes = Array.from<string>({ length: columns.length });\n\n\tfor (let idx = 0; idx < columns.length; ++idx) {\n\t\tconst { field, path, codec, arrayDimensions } = columns[idx]!;\n\t\tlet decoder: DriverValueDecoder<unknown, unknown>;\n\t\tlet decoderStr: string;\n\t\tlet decoderFieldDestructure: string;\n\t\tlet isColumn = false;\n\t\tif (is(field, Column)) {\n\t\t\tisColumn = true;\n\t\t\tdecoder = field;\n\t\t\tdecoderFieldDestructure = `field: decoder${idx}`;\n\t\t} else if (is(field, SQL)) {\n\t\t\tdecoder = field.decoder;\n\t\t\tdecoderFieldDestructure = `field: { decoder: decoder${idx} }`;\n\t\t} else if (is(field, Subquery)) {\n\t\t\tdecoder = field._.sql.decoder;\n\t\t\tdecoderFieldDestructure = `field: { _: { sql: { decoder: decoder${idx} } } }`;\n\t\t} else {\n\t\t\tdecoder = field.sql.decoder;\n\t\t\tdecoderFieldDestructure = `field: { sql: { decoder: decoder${idx} } }`;\n\t\t}\n\t\tdecoderStr = `decoder${idx}.mapFromDriverValue`;\n\t\tif (decoder.mapFromDriverValue.isNoop) decoderStr = '';\n\t\tif (decoderStr) {\n\t\t\tpreFn.push(`const { ${decoderFieldDestructure}${codec ? `, codec: codec${idx}` : ''} } = columns[${idx}];`);\n\t\t} else if (codec) {\n\t\t\tpreFn.push(`const { codec: codec${idx} } = columns[${idx}];`);\n\t\t}\n\n\t\tconst colStr = `c${idx}`;\n\t\tlet decodedValue = colStr;\n\t\tif (codec) decodedValue = `codec${idx}(${decodedValue}, ${arrayDimensions})`;\n\t\tif (decoderStr) decodedValue = `${decoderStr}(${decodedValue})`;\n\t\tdecodes[idx] = colStr === decodedValue\n\t\t\t? `${colStr}`\n\t\t\t: `${colStr} === null ? ${colStr} : ${decodedValue}`;\n\n\t\tif (path.length !== 2 || !isColumn) continue;\n\t\tif (objectIds[path[0]!] === undefined) objectIds[path[0]!] = [`c${idx}`];\n\t\telse objectIds[path[0]!]?.push(`c${idx}`);\n\t\tconst [objectName] = path as [string];\n\t\tconst tableName = getTableName((<Column> field).table);\n\t\tnullifyMap[objectName] = joinsNotNullableMap[tableName] ? false : typeof nullifyMap[objectName] === 'string'\n\t\t\t? nullifyMap[objectName] === tableName ? tableName : false\n\t\t\t: tableName;\n\t}\n\n\tfn.push(`mapped[i] = {`);\n\tlet currentObjectPath: string[] = [];\n\tfor (let idx = 0; idx < columns.length; ++idx) {\n\t\tconst { path } = columns[idx]!;\n\t\tconst jsonPath = path.map((e) => JSON.stringify(e));\n\t\tconst decodedValue = decodes[idx]!;\n\n\t\tconst objectPath = path.slice(0, -1);\n\t\tlet commonLen = 0;\n\t\twhile (\n\t\t\tcommonLen < currentObjectPath.length\n\t\t\t&& commonLen < objectPath.length\n\t\t\t&& currentObjectPath[commonLen] === objectPath[commonLen]\n\t\t) commonLen++;\n\n\t\tfor (let d = currentObjectPath.length - 1; d >= commonLen; --d) {\n\t\t\tfn.push(`${'\\t'.repeat(d + 1)}},`);\n\t\t}\n\n\t\tfor (let d = commonLen; d < objectPath.length; ++d) {\n\t\t\tfn.push(\n\t\t\t\t`${'\\t'.repeat(d + 1)}${jsonPath[d]}: ${\n\t\t\t\t\td === 0 && objectPath.length === 1 && typeof nullifyMap[path[0]!] === 'string'\n\t\t\t\t\t\t? `${objectIds[path[0]!]?.map((c) => `${c} === null`).join(' && ')} ? null : {`\n\t\t\t\t\t\t: '{'\n\t\t\t\t}`,\n\t\t\t);\n\t\t}\n\n\t\tcurrentObjectPath = objectPath;\n\t\tfn.push(`${'\\t'.repeat(path.length)}${jsonPath[path.length - 1]}: ${decodedValue},`);\n\t}\n\n\tfor (let d = currentObjectPath.length - 1; d >= 0; --d) {\n\t\tfn.push(`${'\\t'.repeat(d + 1)}},`);\n\t}\n\tfn.push(`};`);\n\n\treturn `${preFn.length ? `${preFn.join('\\n\\t')}\\n\\t` : ''}for (let i = 0; i < length; ++i) {\n\t\t${fn.join('\\n\\t\\t')}\n\t}`;\n}\n\nexport type RowsMapperGenerator = <TResult = any>(\n\tcolumns: SelectedFieldsOrdered<AnyColumn>,\n\tjoinsNotNullableMap: Record<string, boolean> | undefined,\n) => RowsMapper<TResult>;\nexport interface RowsMapper<TResult = Record<string, unknown>[]> {\n\t(rows: unknown[][]): TResult;\n\t/** @internal jit mapper's function body for debugging */\n\tbody?: string;\n}\n\nexport function makeJitQueryMapper<TResult>(\n\tcolumns: SelectedFieldsOrdered<AnyColumn>,\n\tjoinsNotNullableMap: Record<string, boolean> | undefined,\n): RowsMapper<TResult> {\n\tconst internals = `\\t\"use strict\";\n\tconst { columns } = this;\n\tconst { length } = rows;\n\tconst mapped = Array.from({ length });\n\t${makeJitQueryMapperInner(columns, joinsNotNullableMap)}\n\treturn mapped;\n\t//# sourceURL=drizzle:jit-query-mapper`;\n\n\tconst fn = Object.assign(\n\t\tnew FnConstructor(\n\t\t\t'rows',\n\t\t\tinternals,\n\t\t).bind({\n\t\t\tcolumns,\n\t\t}),\n\t\t{ body: `function jitQueryMapper (rows) {\\n${internals}\\n}` },\n\t) as RowsMapper<TResult>;\n\n\treturn fn;\n}\n\n/** @internal */\nexport function jitCompatCheck(isEnabled?: boolean): boolean {\n\tif (!isEnabled) return false;\n\n\ttry {\n\t\tconst res = new FnConstructor('input', '\"use strict\"; return input;')(true);\n\t\tif (res !== true) {\n\t\t\t// In case it's broken in runtime but not forbidden\n\t\t\tconsole.warn(\n\t\t\t\t'Unable to use jit mappers due to incompatibility: corrupted jit function output.\\nFalling back to premade mappers.\\nError details:',\n\t\t\t);\n\t\t\tconsole.error(`Expected to receive \\`true\\`, got: ${res}`);\n\t\t}\n\t\treturn true;\n\t} catch (e) {\n\t\tconsole.warn(\n\t\t\t'Unable to use jit mappers due to incompatibility.\\nFalling back to premade mappers.\\nError details:',\n\t\t);\n\t\tconsole.error(e);\n\t\treturn false;\n\t}\n}\n\nexport function makeDefaultQueryMapper<TResult>(\n\tcolumns: SelectedFieldsOrdered<AnyColumn>,\n\tjoinsNotNullableMap: Record<string, boolean> | undefined,\n): RowsMapper<TResult> {\n\tconst interpretedData = columns.map(({ field, codec, arrayDimensions, path }) => {\n\t\tlet processNullifyMap: ((nullifyMap: Record<string, string | false>, value: any) => void) | undefined;\n\t\tlet decoderSrc: DriverValueDecoder<unknown, unknown>;\n\t\tif (is(field, Column)) {\n\t\t\tdecoderSrc = field;\n\n\t\t\tif (joinsNotNullableMap && path.length === 2) {\n\t\t\t\tconst objectName = path[0]!;\n\t\t\t\tprocessNullifyMap = (nullifyMap, value) => {\n\t\t\t\t\tif (!(objectName in nullifyMap)) {\n\t\t\t\t\t\tnullifyMap[objectName] = value === null ? getTableName(field.table) : false;\n\t\t\t\t\t} else if (\n\t\t\t\t\t\ttypeof nullifyMap[objectName] === 'string' && nullifyMap[objectName] !== getTableName(field.table)\n\t\t\t\t\t) {\n\t\t\t\t\t\tnullifyMap[objectName] = false;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t} else if (is(field, SQL)) {\n\t\t\tdecoderSrc = field.decoder;\n\t\t} else if (is(field, Subquery)) {\n\t\t\tdecoderSrc = field._.sql.decoder;\n\t\t} else {\n\t\t\tdecoderSrc = field.sql.decoder;\n\t\t}\n\n\t\tlet decoder: ((v: any) => any) | undefined;\n\t\tif (decoderSrc.mapFromDriverValue.isNoop) {\n\t\t\tdecoder = codec ? (v: any) => codec(v, arrayDimensions!) : undefined;\n\t\t} else {\n\t\t\tdecoder = codec\n\t\t\t\t? (v: any) => decoderSrc.mapFromDriverValue(codec(v, arrayDimensions!))\n\t\t\t\t: (v: any) => decoderSrc.mapFromDriverValue(v);\n\t\t}\n\n\t\treturn [decoder, processNullifyMap] as const;\n\t});\n\n\treturn ((rows) =>\n\t\trows.map((row) => {\n\t\t\t// Key -> nested object key, value -> table name if all fields in the nested object are from the same table, false otherwise\n\t\t\tconst nullifyMap: Record<string, string | false> = {};\n\n\t\t\tconst result = columns.reduce<Record<string, any>>(\n\t\t\t\t(result, { path }, columnIndex) => {\n\t\t\t\t\tlet node = result;\n\t\t\t\t\tfor (const [pathChunkIndex, pathChunk] of path.entries()) {\n\t\t\t\t\t\tif (pathChunkIndex < path.length - 1) {\n\t\t\t\t\t\t\tif (!(pathChunk in node)) {\n\t\t\t\t\t\t\t\tnode[pathChunk] = {};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tnode = node[pathChunk];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst [decoder, processNullifyMap] = interpretedData[columnIndex]!;\n\n\t\t\t\t\t\t\tconst rawValue = row[columnIndex]!;\n\t\t\t\t\t\t\tconst value = node[pathChunk] = rawValue === null\n\t\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t\t: decoder\n\t\t\t\t\t\t\t\t? decoder(rawValue)\n\t\t\t\t\t\t\t\t: rawValue;\n\n\t\t\t\t\t\t\tprocessNullifyMap?.(nullifyMap, value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn result;\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t);\n\n\t\t\t// Nullify all nested objects from nullifyMap that are nullable\n\t\t\tif (joinsNotNullableMap && Object.keys(nullifyMap).length > 0) {\n\t\t\t\tfor (const [objectName, tableName] of Object.entries(nullifyMap)) {\n\t\t\t\t\tif (typeof tableName === 'string' && !joinsNotNullableMap[tableName]) {\n\t\t\t\t\t\tresult[objectName] = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result as TResult;\n\t\t})) as RowsMapper<TResult>;\n}\n\nexport function make$ReturningResponseMapper(\n\treturningIds: SelectedFieldsOrdered<Column> | undefined,\n\tgeneratedIds?: Record<string, unknown>[],\n) {\n\tif (!returningIds) return;\n\n\treturn ({ insertId, affectedRows }: {\n\t\tinsertId: number;\n\t\taffectedRows: number;\n\t}) => {\n\t\tconst returningResponse = [];\n\t\tlet j = 0;\n\t\tfor (let i = insertId; i < insertId + affectedRows; i++) {\n\t\t\tfor (const column of returningIds) {\n\t\t\t\tconst key = returningIds[0]!.path[0]!;\n\t\t\t\tif (is(column.field, Column)) {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tif (column.field.primary && column.field.autoIncrement) {\n\t\t\t\t\t\treturningResponse.push({ [key]: i });\n\t\t\t\t\t}\n\t\t\t\t\tif (column.field.defaultFn && generatedIds) {\n\t\t\t\t\t\t// generatedIds[rowIdx][key]\n\t\t\t\t\t\treturningResponse.push({ [key]: generatedIds[j]![key] });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tj++;\n\t\t}\n\n\t\treturn returningResponse;\n\t};\n}\n\n/** @internal */\nexport function orderSelectedFields<TColumn extends AnyColumn>(\n\tfields: Record<string, unknown>,\n\tpathPrefix?: string[],\n\tcodecs?: CodecsCollection,\n): SelectedFieldsOrdered<TColumn> {\n\treturn Object.entries(fields).reduce<SelectedFieldsOrdered<AnyColumn>>((result, [name, field]) => {\n\t\tif (typeof name !== 'string') {\n\t\t\treturn result;\n\t\t}\n\n\t\tconst newPath = pathPrefix ? [...pathPrefix, name] : [name];\n\t\tif (is(field, Column)) {\n\t\t\tresult.push({\n\t\t\t\tpath: newPath,\n\t\t\t\tfield,\n\t\t\t\tcodec: codecs?.get(field, 'normalize'),\n\t\t\t\tarrayDimensions: (<any> field).dimensions,\n\t\t\t\tcolumn: field,\n\t\t\t});\n\t\t} else if (is(field, SQL) || is(field, SQL.Aliased)) {\n\t\t\tconst col = getColumnFromDecoder(field);\n\t\t\tresult.push(\n\t\t\t\tcol\n\t\t\t\t\t? {\n\t\t\t\t\t\tpath: newPath,\n\t\t\t\t\t\tfield,\n\t\t\t\t\t\tcodec: codecs?.get(col, 'normalize'),\n\t\t\t\t\t\tarrayDimensions: (<any> col).dimensions,\n\t\t\t\t\t\tcolumn: col,\n\t\t\t\t\t}\n\t\t\t\t\t: {\n\t\t\t\t\t\tpath: newPath,\n\t\t\t\t\t\tfield,\n\t\t\t\t\t},\n\t\t\t);\n\t\t} else if (is(field, Subquery)) {\n\t\t\tlet column: Column | undefined;\n\t\t\tconst entries = Object.values(field._.selectedFields) as (SQL.Aliased | Column | SQL)[];\n\t\t\tconst entry = entries[0]!;\n\n\t\t\tlet fieldDecoder: DriverValueDecoder<any, any>;\n\t\t\tif (is(entry, Column)) {\n\t\t\t\tcolumn = entry;\n\t\t\t\tfieldDecoder = entry;\n\t\t\t} else if (is(entry, SQL)) {\n\t\t\t\tcolumn = getColumnFromDecoder(entry);\n\t\t\t\tfieldDecoder = entry.decoder;\n\t\t\t} else {\n\t\t\t\tcolumn = getColumnFromDecoder(entry);\n\t\t\t\tfieldDecoder = entry.sql.decoder;\n\t\t\t}\n\n\t\t\tif (fieldDecoder) {\n\t\t\t\tfield._.sql.decoder = fieldDecoder;\n\t\t\t}\n\n\t\t\tresult.push(\n\t\t\t\tcolumn\n\t\t\t\t\t? {\n\t\t\t\t\t\tpath: newPath,\n\t\t\t\t\t\tfield,\n\t\t\t\t\t\tcodec: codecs?.get(column, 'normalize'),\n\t\t\t\t\t\tarrayDimensions: (<any> column).dimensions,\n\t\t\t\t\t\tcolumn,\n\t\t\t\t\t}\n\t\t\t\t\t: {\n\t\t\t\t\t\tpath: newPath,\n\t\t\t\t\t\tfield,\n\t\t\t\t\t},\n\t\t\t);\n\t\t} else if (is(field, Table)) {\n\t\t\tresult.push(...orderSelectedFields(field[Table.Symbol.Columns], newPath, codecs));\n\t\t} else {\n\t\t\tresult.push(...orderSelectedFields(field as Record<string, unknown>, newPath, codecs));\n\t\t}\n\t\treturn result;\n\t}, []) as SelectedFieldsOrdered<TColumn>;\n}\n\nexport function getColumnFromDecoder(source: SQL | SQL.Aliased | SQLWrapper): Column | undefined {\n\tconst query = source.getSQL();\n\n\tif (is(query.decoder, Column)) return query.decoder;\n\treturn undefined;\n}\n\nexport function haveSameKeys(left: Record<string, unknown>, right: Record<string, unknown>) {\n\tconst leftKeys = Object.keys(left);\n\tconst rightKeys = Object.keys(right);\n\n\tif (leftKeys.length !== rightKeys.length) {\n\t\treturn false;\n\t}\n\n\tfor (const [index, key] of leftKeys.entries()) {\n\t\tif (key !== rightKeys[index]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/** @internal */\nexport function mapUpdateSet(table: Table, values: Record<string, unknown>): UpdateSet {\n\tconst entries: [string, UpdateSet[string]][] = Object.entries(values)\n\t\t.filter(([, value]) => value !== undefined)\n\t\t.map(([key, value]) => {\n\t\t\t// eslint-disable-next-line unicorn/prefer-ternary\n\t\t\tif (is(value, SQL) || is(value, Column)) {\n\t\t\t\treturn [key, value];\n\t\t\t} else {\n\t\t\t\treturn [key, new Param(value, table[Table.Symbol.Columns][key])];\n\t\t\t}\n\t\t});\n\n\tif (entries.length === 0) {\n\t\tthrow new Error('No values to set');\n\t}\n\n\treturn Object.fromEntries(entries);\n}\n\nexport type UpdateSet = Record<string, SQL | Param | AnyColumn | null | undefined>;\n\nexport type OneOrMany<T> = T | T[];\n\nexport type Update<T, TUpdate> =\n\t& {\n\t\t[K in Exclude<keyof T, keyof TUpdate>]: T[K];\n\t}\n\t& TUpdate;\n\nexport type Simplify<T> =\n\t& {\n\t\t// @ts-ignore - \"Type parameter 'K' has a circular constraint\", not sure why\n\t\t[K in keyof T]: T[K];\n\t}\n\t& {};\n\nexport type Not<T extends boolean> = T extends true ? false : true;\n\nexport type IsNever<T> = [T] extends [never] ? true : false;\n\nexport type IsUnion<T, U extends T = T> = (T extends any ? (U extends T ? false : true) : never) extends false ? false\n\t: true;\n\nexport type SingleKeyObject<T, TError extends string, K = keyof T> = IsNever<K> extends true ? never\n\t: IsUnion<K> extends true ? DrizzleTypeError<TError>\n\t: T;\n\nexport type FromSingleKeyObject<T, Result, TError extends string, K = keyof T> = IsNever<K> extends true ? never\n\t: IsUnion<K> extends true ? DrizzleTypeError<TError>\n\t: Result;\n\nexport type SimplifyMappedType<T> = [T] extends [unknown] ? T : never;\n\nexport type ShallowRecord<K extends keyof any, T> = SimplifyMappedType<{ [P in K]: T }>;\n\nexport type Assume<T, U> = T extends U ? T : U;\n\nexport type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends (<T>() => T extends Y ? 1 : 2) ? true : false;\n\nexport interface DrizzleTypeError<T extends string> {\n\t$drizzleTypeError: T;\n}\n\nexport type ValueOrArray<T> = T | T[];\n\n/** @internal */\nexport function applyMixins(baseClass: any, extendedClasses: any[]) {\n\tfor (const extendedClass of extendedClasses) {\n\t\tfor (const name of Object.getOwnPropertyNames(extendedClass.prototype)) {\n\t\t\tif (name === 'constructor') continue;\n\n\t\t\tObject.defineProperty(\n\t\t\t\tbaseClass.prototype,\n\t\t\t\tname,\n\t\t\t\tObject.getOwnPropertyDescriptor(extendedClass.prototype, name) || Object.create(null),\n\t\t\t);\n\t\t}\n\t}\n}\n\nexport type Or<T1, T2> = T1 extends true ? true : T2 extends true ? true : false;\n\nexport type IfThenElse<If, Then, Else> = If extends true ? Then : Else;\n\nexport type PromiseOf<T> = T extends Promise<infer U> ? U : T;\n\nexport type Writable<T> = {\n\t-readonly [P in keyof T]: T[P];\n};\n\nexport type NonArray<T> = T extends any[] ? never : T;\n\n/**\n * @deprecated\n * Use `getColumns` instead\n */\nexport function getTableColumns<T extends Table>(table: T): T['_']['columns'] {\n\treturn table[Table.Symbol.Columns];\n}\n\nexport function getViewSelectedFields<T extends View>(view: T): T['_']['selectedFields'] {\n\treturn view[ViewBaseConfig].selectedFields;\n}\n\nexport function getColumns<T extends Table | View | Subquery>(\n\ttable: T,\n): T extends Table ? T['_']['columns']\n\t: T extends View ? T['_']['selectedFields']\n\t: T extends Subquery ? T['_']['selectedFields']\n\t: never\n{\n\treturn (is(table, Table)\n\t\t? table[Table.Symbol.Columns]\n\t\t: is(table, View)\n\t\t? table[ViewBaseConfig].selectedFields\n\t\t: table._.selectedFields) as any;\n}\n\n/** @internal */\nexport function getTableLikeName(table: TableLike): string | undefined {\n\treturn is(table, Subquery)\n\t\t? table._.alias\n\t\t: is(table, View)\n\t\t? table[ViewBaseConfig].name\n\t\t: is(table, SQL)\n\t\t? undefined\n\t\t: table[Table.Symbol.IsAlias]\n\t\t? table[Table.Symbol.Name]\n\t\t: table[Table.Symbol.BaseName];\n}\n\nexport type ColumnsWithTable<\n\tTTableName extends string,\n\tTForeignTableName extends string,\n\tTColumns extends AnyColumn<{ tableName: TTableName }>[],\n> = { [Key in keyof TColumns]: AnyColumn<{ tableName: TForeignTableName }> };\n\nexport interface DrizzleConfig<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelationConfigs extends AnyRelations = EmptyRelations,\n> {\n\tlogger?: boolean | Logger | undefined;\n\tschema?: TSchema | undefined;\n\trelations?: TRelationConfigs | undefined;\n\tcache?: Cache | undefined;\n\tjit?: boolean | undefined;\n}\nexport type ValidateShape<T, ValidShape, TResult = T> = T extends ValidShape\n\t? Exclude<keyof T, keyof ValidShape> extends never ? TResult\n\t: DrizzleTypeError<\n\t\t`Invalid key(s): ${Exclude<(keyof T) & (string | number | bigint | boolean | null | undefined), keyof ValidShape>}`\n\t>\n\t: never;\n\nexport type KnownKeysOnly<T, U> = {\n\t[K in keyof T]: K extends keyof U ? T[K] : never;\n};\n\nexport type IsAny<T> = 0 extends (1 & T) ? true : false;\n\n/** @internal */\nexport function getColumnNameAndConfig<\n\tTConfig extends Record<string, any> | undefined,\n>(a: string | TConfig | undefined, b: TConfig | undefined) {\n\treturn {\n\t\tname: typeof a === 'string' && a.length > 0 ? a : '' as string,\n\t\tconfig: typeof a === 'object' ? a : b as TConfig,\n\t};\n}\n\nexport type IfNotImported<T, Y, N> = unknown extends T ? Y : N;\n\nexport type ImportTypeError<TPackageName extends string> =\n\t`Please install \\`${TPackageName}\\` to allow Drizzle ORM to connect to the database`;\n\nexport type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Keys extends any\n\t? Required<Pick<T, Keys>> & Partial<Omit<T, Keys>>\n\t: never;\n\ntype ExpectedConfigShape = {\n\tlogger?: boolean | {\n\t\tlogQuery(query: string, params: unknown[]): void;\n\t} | undefined;\n\tschema?: Record<string, never> | undefined;\n\trelations?: AnyRelations | undefined;\n};\n\n// If this errors, you must update config shape checker function with new config specs\nconst _: DrizzleConfig<any, any> = {} as ExpectedConfigShape;\nconst __: ExpectedConfigShape = {} as DrizzleConfig;\n\nexport function isConfig(data: any): boolean {\n\tif (typeof data !== 'object' || data === null) return false;\n\n\tif (data.constructor.name !== 'Object') return false;\n\n\tif ('logger' in data) {\n\t\tconst type = typeof data['logger'];\n\t\tif (\n\t\t\ttype !== 'boolean' && (type !== 'object' || typeof data['logger']['logQuery'] !== 'function')\n\t\t\t&& type !== 'undefined'\n\t\t) return false;\n\n\t\treturn true;\n\t}\n\n\tif ('schema' in data) {\n\t\tconst type = typeof data['schema'];\n\t\tif (type !== 'object' && type !== 'undefined') return false;\n\n\t\treturn true;\n\t}\n\n\tif ('relations' in data) {\n\t\tconst type = typeof data['relations'];\n\t\tif (type !== 'object' && type !== 'undefined') return false;\n\n\t\treturn true;\n\t}\n\n\tif ('connection' in data) {\n\t\tconst type = typeof data['connection'];\n\t\tif (type !== 'string' && type !== 'object' && type !== 'undefined') return false;\n\n\t\treturn true;\n\t}\n\n\tif ('client' in data) {\n\t\tconst type = typeof data['client'];\n\t\tif (type !== 'object' && type !== 'function' && type !== 'undefined') return false;\n\n\t\treturn true;\n\t}\n\n\tif ('jit' in data) {\n\t\tconst type = typeof data['jit'];\n\t\tif (type !== 'boolean' && type !== 'undefined') return false;\n\n\t\treturn true;\n\t}\n\n\tif ('codecs' in data) {\n\t\tconst type = typeof data['connection'];\n\t\tif (type !== 'object' && type !== 'undefined') return false;\n\n\t\treturn true;\n\t}\n\n\tif (Object.keys(data).length === 0) return true;\n\n\treturn false;\n}\n\nexport type NeonAuthToken = string | (() => string | Promise<string>);\n\nexport const textDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder();\n\nexport function assertUnreachable(_x: never | undefined): never {\n\tthrow new Error(\"Didn't expect to get here\");\n}\n\nexport function isWithEnum(column: Column<any>): column is typeof column & { enumValues: [string, ...string[]] };\nexport function isWithEnum(value: unknown): value is { enumValues: [string, ...string[]] };\nexport function isWithEnum(value: unknown): boolean {\n\treturn ((typeof value === 'object' && value !== null) || typeof value === 'function') && 'enumValues' in value\n\t\t&& Array.isArray(value.enumValues)\n\t\t&& value.enumValues.length > 0;\n}\n\nexport type Literal = string | number | boolean | null;\nexport type Json = Literal | { [key: string]: any } | any[];\n\nexport type ColumnIsGeneratedAlwaysAs<TColumn> = TColumn extends Column<any>\n\t? TColumn['_']['identity'] extends 'always' ? true\n\t: TColumn['_'] extends { generated: undefined } ? false\n\t: TColumn['_']['generated'] extends { type: 'byDefault' } ? false\n\t: true\n\t: false;\n\nexport type GetSelection<T extends SelectedFieldsFlat<Column<any>> | Table<any> | View> = T extends Table<any>\n\t? T['_']['columns']\n\t: T extends View ? T['_']['selectedFields']\n\t: T;\n\nexport type RemoveNeverElements<T extends any[]> = T extends [infer First, ...infer Rest]\n\t? IsNever<First> extends true ? RemoveNeverElements<Rest>\n\t: [First, ...RemoveNeverElements<Rest>]\n\t: [];\n\nexport type HasBaseColumn<TColumn> = TColumn extends { _: { baseColumn: Column | undefined } }\n\t? IsNever<TColumn['_']['baseColumn']> extends false ? true\n\t: false\n\t: false;\n\nexport type EnumValuesToEnum<TEnumValues extends [string, ...string[]]> = { [K in TEnumValues[number]]: K };\n\nexport type EnumValuesToReadonlyEnum<TEnumValues extends [string, ...string[]]> = {\n\treadonly [K in TEnumValues[number]]: K;\n};\n\nexport const CONSTANTS = {\n\tINT8_MIN: -128,\n\tINT8_MAX: 127,\n\tINT8_UNSIGNED_MAX: 255,\n\tINT16_MIN: -32768,\n\tINT16_MAX: 32767,\n\tINT16_UNSIGNED_MAX: 65535,\n\tINT24_MIN: -8388608,\n\tINT24_MAX: 8388607,\n\tINT24_UNSIGNED_MAX: 16777215,\n\tINT32_MIN: -2147483648,\n\tINT32_MAX: 2147483647,\n\tINT32_UNSIGNED_MAX: 4294967295,\n\tINT48_MIN: -140737488355328,\n\tINT48_MAX: 140737488355327,\n\tINT48_UNSIGNED_MAX: 281474976710655,\n\tINT64_MIN: -9223372036854775808n,\n\tINT64_MAX: 9223372036854775807n,\n\tINT64_UNSIGNED_MAX: 18446744073709551615n,\n};\n\nexport function base64ToUint8Array(base64: string): Uint8Array {\n\tif (!base64) return new Uint8Array(0);\n\tconst binary = atob(base64);\n\tconst len = binary.length;\n\tconst bytes = new Uint8Array(len);\n\n\tfor (let i = 0; i < len; ++i) {\n\t\tbytes[i] = binary.charCodeAt(i);\n\t}\n\n\treturn bytes;\n}\n\nexport type PartialWithUndefined<T> = {\n\t[K in keyof T]?: T[K] | undefined;\n};\n", "import type { ColumnBuilderBaseConfig, ColumnType, HasDefault, IsPrimaryKey, NotNull } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport { sql } from '~/sql/sql.ts';\nimport type { OnConflict } from '~/sqlite-core/utils.ts';\nimport { type Equal, getColumnNameAndConfig, type Or } from '~/utils.ts';\nimport type { SQLiteTable } from '../table.ts';\nimport { SQLiteColumn, SQLiteColumnBuilder } from './common.ts';\n\nexport interface PrimaryKeyConfig {\n\tautoIncrement?: boolean;\n\tonConflict?: OnConflict;\n}\n\nexport abstract class SQLiteBaseIntegerBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnType>,\n\tTRuntimeConfig extends object = object,\n> extends SQLiteColumnBuilder<\n\tT,\n\tTRuntimeConfig & { autoIncrement: boolean },\n\t{ primaryKeyHasDefault: true }\n> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBaseIntegerBuilder';\n\n\tconstructor(name: string, dataType: T['dataType'], columnType: string) {\n\t\tsuper(name, dataType, columnType);\n\t\tthis.config.autoIncrement = false;\n\t}\n\n\toverride primaryKey(config?: PrimaryKeyConfig): IsPrimaryKey<HasDefault<NotNull<this>>> {\n\t\tif (config?.autoIncrement) {\n\t\t\tthis.config.autoIncrement = true;\n\t\t}\n\t\tthis.config.hasDefault = true;\n\t\treturn super.primaryKey() as IsPrimaryKey<HasDefault<NotNull<this>>>;\n\t}\n}\n\nexport abstract class SQLiteBaseInteger<\n\tT extends ColumnBaseConfig<ColumnType>,\n\tTRuntimeConfig extends object = object,\n> extends SQLiteColumn<T, TRuntimeConfig & { autoIncrement: boolean }> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBaseInteger';\n\n\treadonly autoIncrement: boolean = this.config.autoIncrement;\n\n\tgetSQLType(): string {\n\t\treturn 'integer';\n\t}\n}\n\nexport class SQLiteIntegerBuilder extends SQLiteBaseIntegerBuilder<{\n\tdataType: 'number int53';\n\tdata: number;\n\tdriverParam: number;\n}> {\n\tstatic override readonly [entityKind]: string = 'SQLiteIntegerBuilder';\n\n\tconstructor(name: string) {\n\t\tsuper(name, 'number int53', 'SQLiteInteger');\n\t}\n\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteInteger(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class SQLiteInteger<T extends ColumnBaseConfig<'number int53'>> extends SQLiteBaseInteger<T> {\n\tstatic override readonly [entityKind]: string = 'SQLiteInteger';\n}\n\nexport class SQLiteTimestampBuilder extends SQLiteBaseIntegerBuilder<{\n\tdataType: 'object date';\n\tdata: Date;\n\tdriverParam: number;\n}, { mode: 'timestamp' | 'timestamp_ms' }> {\n\tstatic override readonly [entityKind]: string = 'SQLiteTimestampBuilder';\n\n\tconstructor(name: string, mode: 'timestamp' | 'timestamp_ms') {\n\t\tsuper(name, 'object date', 'SQLiteTimestamp');\n\t\tthis.config.mode = mode;\n\t}\n\n\t/**\n\t * @deprecated Use `default()` with your own expression instead.\n\t *\n\t * Adds `DEFAULT (cast((julianday('now') - 2440587.5)*86400000 as integer))` to the column, which is the current epoch timestamp in milliseconds.\n\t */\n\tdefaultNow(): HasDefault<this> {\n\t\treturn this.default(sql`(cast((julianday('now') - 2440587.5)*86400000 as integer))`) as any;\n\t}\n\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteTimestamp(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class SQLiteTimestamp<T extends ColumnBaseConfig<'object date'>>\n\textends SQLiteBaseInteger<T, { mode: 'timestamp' | 'timestamp_ms' }>\n{\n\tstatic override readonly [entityKind]: string = 'SQLiteTimestamp';\n\n\treadonly mode: 'timestamp' | 'timestamp_ms' = this.config.mode;\n\n\toverride mapFromDriverValue = (value: number | string): Date => {\n\t\t// legacy issue if integer had string date format\n\t\t// old kit generated defaults as quoted strings \"<string>\"\n\t\tif (typeof value === 'string') return new Date(value.replaceAll('\"', ''));\n\t\tif (this.config.mode === 'timestamp') {\n\t\t\treturn new Date(value * 1000);\n\t\t}\n\t\treturn new Date(value);\n\t};\n\n\toverride mapToDriverValue = (value: Date | number): number => {\n\t\tif (typeof value === 'number') return value;\n\t\tconst unix = value.getTime();\n\t\tif (this.config.mode === 'timestamp') {\n\t\t\treturn Math.floor(unix / 1000);\n\t\t}\n\t\treturn unix;\n\t};\n}\n\nexport class SQLiteBooleanBuilder extends SQLiteBaseIntegerBuilder<{\n\tdataType: 'boolean';\n\tdata: boolean;\n\tdriverParam: number;\n}, { mode: 'boolean' }> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBooleanBuilder';\n\n\tconstructor(name: string, mode: 'boolean') {\n\t\tsuper(name, 'boolean', 'SQLiteBoolean');\n\t\tthis.config.mode = mode;\n\t}\n\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteBoolean(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class SQLiteBoolean<T extends ColumnBaseConfig<'boolean'>> extends SQLiteBaseInteger<T, { mode: 'boolean' }> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBoolean';\n\n\treadonly mode: 'boolean' = this.config.mode;\n\n\toverride mapFromDriverValue = (value: number): boolean => {\n\t\treturn Number(value) === 1;\n\t};\n\n\toverride mapToDriverValue = (value: boolean): number => {\n\t\treturn value ? 1 : 0;\n\t};\n}\n\nexport interface IntegerConfig<\n\tTMode extends 'number' | 'timestamp' | 'timestamp_ms' | 'boolean' =\n\t\t| 'number'\n\t\t| 'timestamp'\n\t\t| 'timestamp_ms'\n\t\t| 'boolean',\n> {\n\tmode: TMode;\n}\n\nexport function integer<TMode extends IntegerConfig['mode']>(\n\tconfig?: IntegerConfig<TMode>,\n): Or<Equal<TMode, 'timestamp'>, Equal<TMode, 'timestamp_ms'>> extends true ? SQLiteTimestampBuilder\n\t: Equal<TMode, 'boolean'> extends true ? SQLiteBooleanBuilder\n\t: SQLiteIntegerBuilder;\nexport function integer<TMode extends IntegerConfig['mode']>(\n\tname: string,\n\tconfig?: IntegerConfig<TMode>,\n): Or<Equal<TMode, 'timestamp'>, Equal<TMode, 'timestamp_ms'>> extends true ? SQLiteTimestampBuilder\n\t: Equal<TMode, 'boolean'> extends true ? SQLiteBooleanBuilder\n\t: SQLiteIntegerBuilder;\nexport function integer(a?: string | IntegerConfig, b?: IntegerConfig) {\n\tconst { name, config } = getColumnNameAndConfig<IntegerConfig | undefined>(a, b);\n\tif (config?.mode === 'timestamp' || config?.mode === 'timestamp_ms') {\n\t\treturn new SQLiteTimestampBuilder(name, config.mode);\n\t}\n\tif (config?.mode === 'boolean') {\n\t\treturn new SQLiteBooleanBuilder(name, config.mode);\n\t}\n\treturn new SQLiteIntegerBuilder(name);\n}\n\nexport const int = integer;\n", "import type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { SQLiteTable } from '../table.ts';\nimport { SQLiteColumn, SQLiteColumnBuilder } from './common.ts';\n\nexport class SQLiteRealBuilder extends SQLiteColumnBuilder<{\n\tdataType: 'number double';\n\tdata: number;\n\tdriverParam: number;\n}> {\n\tstatic override readonly [entityKind]: string = 'SQLiteRealBuilder';\n\n\tconstructor(name: string) {\n\t\tsuper(name, 'number double', 'SQLiteReal');\n\t}\n\n\t/** @internal */\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteReal(table, this.config as any);\n\t}\n}\n\nexport class SQLiteReal<T extends ColumnBaseConfig<'number double'>> extends SQLiteColumn<T> {\n\tstatic override readonly [entityKind]: string = 'SQLiteReal';\n\n\tgetSQLType(): string {\n\t\treturn 'real';\n\t}\n}\n\nexport function real(name?: string): SQLiteRealBuilder {\n\treturn new SQLiteRealBuilder(name ?? '');\n}\n", "import type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnySQLiteTable, SQLiteTable } from '~/sqlite-core/table.ts';\nimport { type Assume, type Equal, getColumnNameAndConfig, type Writable } from '~/utils.ts';\nimport { SQLiteColumn, SQLiteColumnBuilder } from './common.ts';\n\nexport class SQLiteTextBuilder<\n\tTEnum extends [string, ...string[]],\n> extends SQLiteColumnBuilder<\n\t{\n\t\tdataType: Equal<TEnum, [string, ...string[]]> extends true ? 'string' : 'string enum';\n\t\tdata: TEnum[number];\n\t\tdriverParam: string;\n\t\tenumValues: TEnum;\n\t},\n\t{ enumValues: TEnum; length: number | undefined }\n> {\n\tstatic override readonly [entityKind]: string = 'SQLiteTextBuilder';\n\n\tconstructor(name: string, config: SQLiteTextConfig<'text', TEnum>) {\n\t\tsuper(name, config.enum?.length ? 'string enum' : 'string', 'SQLiteText');\n\t\tthis.config.enumValues = config.enum!;\n\t\tthis.config.length = config.length!;\n\t}\n\n\t/** @internal */\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteText(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class SQLiteText<T extends ColumnBaseConfig<'string' | 'string enum'>>\n\textends SQLiteColumn<T, { length: number | undefined; enumValues: T['enumValues'] }>\n{\n\tstatic override readonly [entityKind]: string = 'SQLiteText';\n\n\toverride readonly enumValues = this.config.enumValues;\n\n\tconstructor(\n\t\ttable: AnySQLiteTable<{ name: T['tableName'] }>,\n\t\tconfig: SQLiteTextBuilder<Assume<T['enumValues'], [string, ...string[]]>>['config'],\n\t) {\n\t\tsuper(table, config);\n\t}\n\n\tgetSQLType(): string {\n\t\treturn `text${this.config.length ? `(${this.config.length})` : ''}`;\n\t}\n}\n\nexport class SQLiteTextJsonBuilder extends SQLiteColumnBuilder<{\n\tdataType: 'object json';\n\tdata: unknown;\n\tdriverParam: string;\n\n\tgenerated: undefined;\n}> {\n\tstatic override readonly [entityKind]: string = 'SQLiteTextJsonBuilder';\n\n\tconstructor(name: string) {\n\t\tsuper(name, 'object json', 'SQLiteTextJson');\n\t}\n\n\t/** @internal */\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteTextJson(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class SQLiteTextJson<T extends ColumnBaseConfig<'object json'>>\n\textends SQLiteColumn<T, { length: number | undefined; enumValues: T['enumValues'] }>\n{\n\tstatic override readonly [entityKind]: string = 'SQLiteTextJson';\n\n\tgetSQLType(): string {\n\t\treturn 'text';\n\t}\n\n\toverride mapFromDriverValue = (value: string): T['data'] => {\n\t\treturn JSON.parse(value);\n\t};\n\n\toverride mapToDriverValue = (value: T['data']): string => {\n\t\treturn JSON.stringify(value);\n\t};\n}\n\nexport type SQLiteTextConfig<\n\tTMode extends 'text' | 'json' = 'text' | 'json',\n\tTEnum extends readonly string[] | string[] | undefined = readonly string[] | string[] | undefined,\n> = TMode extends 'text' ? {\n\t\tmode?: TMode;\n\t\tlength?: number;\n\t\tenum?: TEnum;\n\t}\n\t: {\n\t\tmode?: TMode;\n\t};\n\nexport function text<\n\tU extends string,\n\tT extends Readonly<[U, ...U[]]>,\n\tTMode extends 'text' | 'json' = 'text' | 'json',\n>(\n\tconfig?: SQLiteTextConfig<TMode, T | Writable<T>>,\n): Equal<TMode, 'json'> extends true ? SQLiteTextJsonBuilder\n\t: SQLiteTextBuilder<Writable<T>>;\nexport function text<\n\tU extends string,\n\tT extends Readonly<[U, ...U[]]>,\n\tTMode extends 'text' | 'json' = 'text' | 'json',\n>(\n\tname: string,\n\tconfig?: SQLiteTextConfig<TMode, T | Writable<T>>,\n): Equal<TMode, 'json'> extends true ? SQLiteTextJsonBuilder\n\t: SQLiteTextBuilder<Writable<T>>;\nexport function text(a?: string | SQLiteTextConfig, b: SQLiteTextConfig = {}): any {\n\tconst { name, config } = getColumnNameAndConfig<SQLiteTextConfig>(a, b);\n\tif (config.mode === 'json') {\n\t\treturn new SQLiteTextJsonBuilder(name);\n\t}\n\treturn new SQLiteTextBuilder(name, config as any);\n}\n", "import type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { SQLiteTable } from '~/sqlite-core/table.ts';\nimport { type Equal, getColumnNameAndConfig, textDecoder } from '~/utils.ts';\nimport { SQLiteColumn, SQLiteColumnBuilder } from './common.ts';\n\ntype BlobMode = 'buffer' | 'json' | 'bigint';\n\nfunction hexToText(hexString: string) {\n\tlet result = '';\n\tfor (let i = 0; i < hexString.length; i += 2) {\n\t\tconst hexPair = hexString.slice(i, i + 2);\n\t\tconst decimalValue = Number.parseInt(hexPair, 16);\n\t\tresult += String.fromCodePoint(decimalValue);\n\t}\n\treturn result;\n}\n\nexport class SQLiteBigIntBuilder extends SQLiteColumnBuilder<{\n\tdataType: 'bigint int64';\n\tdata: bigint;\n\tdriverParam: Buffer;\n}> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBigIntBuilder';\n\n\tconstructor(name: string) {\n\t\tsuper(name, 'bigint int64', 'SQLiteBigInt');\n\t}\n\n\t/** @internal */\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteBigInt(table, this.config as any);\n\t}\n}\n\nexport class SQLiteBigInt<T extends ColumnBaseConfig<'bigint int64'>> extends SQLiteColumn<T> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBigInt';\n\n\tgetSQLType(): string {\n\t\treturn 'blob';\n\t}\n\n\toverride mapFromDriverValue = (value: Buffer | Uint8Array | ArrayBuffer | string): bigint => {\n\t\t// For RQBv2\n\t\tif (typeof value === 'string') {\n\t\t\treturn BigInt(hexToText(value));\n\t\t}\n\n\t\tif (typeof Buffer !== 'undefined' && Buffer.from) {\n\t\t\tconst buf = Buffer.isBuffer(value)\n\t\t\t\t? value\n\t\t\t\t// oxlint-disable-next-line drizzle-internal/no-instanceof\n\t\t\t\t: value instanceof ArrayBuffer\n\t\t\t\t? Buffer.from(value)\n\t\t\t\t: value.buffer\n\t\t\t\t? Buffer.from(value.buffer, value.byteOffset, value.byteLength)\n\t\t\t\t: Buffer.from(value);\n\t\t\treturn BigInt(buf.toString('utf8'));\n\t\t}\n\n\t\treturn BigInt(textDecoder!.decode(value as ArrayBuffer));\n\t};\n\n\toverride mapToDriverValue = (value: bigint): Buffer => {\n\t\treturn Buffer.from(value.toString());\n\t};\n}\n\nexport class SQLiteBlobJsonBuilder extends SQLiteColumnBuilder<{\n\tdataType: 'object json';\n\tdata: unknown;\n\tdriverParam: Buffer;\n}> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBlobJsonBuilder';\n\n\tconstructor(name: string) {\n\t\tsuper(name, 'object json', 'SQLiteBlobJson');\n\t}\n\n\t/** @internal */\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteBlobJson(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class SQLiteBlobJson<T extends ColumnBaseConfig<'object json'>> extends SQLiteColumn<T> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBlobJson';\n\n\tgetSQLType(): string {\n\t\treturn 'blob';\n\t}\n\n\toverride mapFromDriverValue = (value: Buffer | Uint8Array | ArrayBuffer | string): T['data'] => {\n\t\t// For RQBv2\n\t\tif (typeof value === 'string') {\n\t\t\treturn JSON.parse(hexToText(value));\n\t\t}\n\n\t\tif (typeof Buffer !== 'undefined' && Buffer.from) {\n\t\t\tconst buf = Buffer.isBuffer(value)\n\t\t\t\t? value\n\t\t\t\t// oxlint-disable-next-line drizzle-internal/no-instanceof\n\t\t\t\t: value instanceof ArrayBuffer\n\t\t\t\t? Buffer.from(value)\n\t\t\t\t: value.buffer\n\t\t\t\t? Buffer.from(value.buffer, value.byteOffset, value.byteLength)\n\t\t\t\t: Buffer.from(value);\n\t\t\treturn JSON.parse(buf.toString('utf8'));\n\t\t}\n\n\t\treturn JSON.parse(textDecoder!.decode(value as ArrayBuffer));\n\t};\n\n\toverride mapToDriverValue = (value: T['data']): Buffer => {\n\t\treturn Buffer.from(JSON.stringify(value));\n\t};\n}\n\nexport class SQLiteBlobBufferBuilder extends SQLiteColumnBuilder<{\n\tdataType: 'object buffer';\n\tdata: Buffer;\n\tdriverParam: Buffer;\n}> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBlobBufferBuilder';\n\n\tconstructor(name: string) {\n\t\tsuper(name, 'object buffer', 'SQLiteBlobBuffer');\n\t}\n\n\t/** @internal */\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteBlobBuffer(table, this.config as any);\n\t}\n}\n\nexport class SQLiteBlobBuffer<T extends ColumnBaseConfig<'object buffer'>> extends SQLiteColumn<T> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBlobBuffer';\n\n\toverride mapFromDriverValue = (value: Buffer | Uint8Array | ArrayBuffer): T['data'] => {\n\t\tif (Buffer.isBuffer(value)) {\n\t\t\treturn value;\n\t\t}\n\n\t\t// For RQBv2\n\t\tif (typeof value === 'string') {\n\t\t\treturn Buffer.from(value, 'hex');\n\t\t}\n\n\t\treturn Buffer.from(value as Uint8Array);\n\t};\n\n\tgetSQLType(): string {\n\t\treturn 'blob';\n\t}\n}\n\nexport interface BlobConfig<TMode extends BlobMode = BlobMode> {\n\tmode: TMode;\n}\n\n/**\n * It's recommended to use `text('...', { mode: 'json' })` instead of `blob` in JSON mode, because it supports JSON functions:\n * >All JSON functions currently throw an error if any of their arguments are BLOBs because BLOBs are reserved for a future enhancement in which BLOBs will store the binary encoding for JSON.\n *\n * https://www.sqlite.org/json1.html\n */\nexport function blob<TMode extends BlobMode = BlobMode>(\n\tconfig?: BlobConfig<TMode>,\n): Equal<TMode, 'bigint'> extends true ? SQLiteBigIntBuilder\n\t: Equal<TMode, 'buffer'> extends true ? SQLiteBlobBufferBuilder\n\t: SQLiteBlobJsonBuilder;\nexport function blob<TMode extends BlobMode = BlobMode>(\n\tname: string,\n\tconfig?: BlobConfig<TMode>,\n): Equal<TMode, 'bigint'> extends true ? SQLiteBigIntBuilder\n\t: Equal<TMode, 'buffer'> extends true ? SQLiteBlobBufferBuilder\n\t: SQLiteBlobJsonBuilder;\nexport function blob(a?: string | BlobConfig, b?: BlobConfig) {\n\tconst { name, config } = getColumnNameAndConfig<BlobConfig | undefined>(a, b);\n\tif (config?.mode === 'bigint') {\n\t\treturn new SQLiteBigIntBuilder(name);\n\t}\n\tif (config?.mode === 'buffer') {\n\t\treturn new SQLiteBlobBufferBuilder(name);\n\t}\n\treturn new SQLiteBlobJsonBuilder(name);\n}\n", "import type { ColumnBuilderBaseConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { SQL, SQLGenerator } from '~/sql/sql.ts';\nimport type { AnySQLiteTable, SQLiteTable } from '~/sqlite-core/table.ts';\nimport { type Equal, getColumnNameAndConfig } from '~/utils.ts';\nimport { SQLiteColumn, SQLiteColumnBuilder } from './common.ts';\n\nexport type ConvertCustomConfig<T extends Partial<CustomTypeValues>> =\n\t& {\n\t\tdataType: 'custom';\n\t\tdata: T['data'];\n\t\tdriverParam: T['driverData'];\n\t}\n\t& (T['notNull'] extends true ? { notNull: true } : {})\n\t& (T['default'] extends true ? { hasDefault: true } : {});\n\nexport interface SQLiteCustomColumnInnerConfig {\n\tcustomTypeValues: CustomTypeValues;\n}\n\nexport class SQLiteCustomColumnBuilder<T extends ColumnBuilderBaseConfig<'custom'>> extends SQLiteColumnBuilder<\n\tT,\n\t{\n\t\tfieldConfig: CustomTypeValues['config'];\n\t\tcustomTypeParams: CustomTypeParams<any>;\n\t}\n> {\n\tstatic override readonly [entityKind]: string = 'SQLiteCustomColumnBuilder';\n\n\tconstructor(\n\t\tname: string,\n\t\tfieldConfig: CustomTypeValues['config'],\n\t\tcustomTypeParams: CustomTypeParams<any>,\n\t) {\n\t\tsuper(name, 'custom', 'SQLiteCustomColumn');\n\t\tthis.config.fieldConfig = fieldConfig;\n\t\tthis.config.customTypeParams = customTypeParams;\n\t}\n\n\t/** @internal */\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteCustomColumn(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class SQLiteCustomColumn<T extends ColumnBaseConfig<'custom'>> extends SQLiteColumn<T> {\n\tstatic override readonly [entityKind]: string = 'SQLiteCustomColumn';\n\n\tprivate sqlName: string;\n\tprivate mapTo?: (value: T['data']) => T['driverParam'];\n\tprivate mapFrom?: (value: T['driverParam']) => T['data'];\n\tprivate mapJson?: (value: unknown) => T['data'];\n\tprivate forJsonSelect?: (name: SQL, sql: SQLGenerator) => SQL;\n\n\tconstructor(\n\t\ttable: AnySQLiteTable<{ name: T['tableName'] }>,\n\t\tconfig: SQLiteCustomColumnBuilder<T>['config'],\n\t) {\n\t\tsuper(table, config);\n\t\tthis.sqlName = config.customTypeParams.dataType(config.fieldConfig);\n\t\tthis.mapTo = config.customTypeParams.toDriver;\n\t\tthis.mapFrom = config.customTypeParams.fromDriver;\n\t\tthis.mapJson = config.customTypeParams.fromJson;\n\t\tthis.forJsonSelect = config.customTypeParams.forJsonSelect;\n\t}\n\n\tgetSQLType(): string {\n\t\treturn this.sqlName;\n\t}\n\n\toverride mapFromDriverValue = (value: T['driverParam']): T['data'] => {\n\t\treturn typeof this.mapFrom === 'function' ? this.mapFrom(value) : value as T['data'];\n\t};\n\n\tmapFromJsonValue(value: unknown): T['data'] {\n\t\treturn typeof this.mapJson === 'function' ? this.mapJson(value) : this.mapFromDriverValue(value) as T['data'];\n\t}\n\n\tjsonSelectIdentifier(identifier: SQL, sql: SQLGenerator): SQL {\n\t\tif (typeof this.forJsonSelect === 'function') return this.forJsonSelect(identifier, sql);\n\n\t\tconst rawType = this.getSQLType().toLowerCase();\n\t\tconst parenPos = rawType.indexOf('(');\n\t\tconst type = (parenPos + 1) ? rawType.slice(0, parenPos) : rawType;\n\n\t\tswitch (type) {\n\t\t\tcase 'numeric':\n\t\t\tcase 'decimal':\n\t\t\tcase 'bigint': {\n\t\t\t\treturn sql`cast(${identifier} as text)`;\n\t\t\t}\n\t\t\tcase 'blob': {\n\t\t\t\treturn sql`hex(${identifier})`;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\treturn identifier;\n\t\t\t}\n\t\t}\n\t}\n\n\toverride mapToDriverValue = (value: T['data']): T['driverParam'] => {\n\t\treturn typeof this.mapTo === 'function' ? this.mapTo(value) : value as T['data'];\n\t};\n}\n\nexport interface CustomTypeValues {\n\t/**\n\t * Required type for custom column, that will infer proper type model\n\t *\n\t * Examples:\n\t *\n\t * If you want your column to be `string` type after selecting/or on inserting - use `data: string`. Like `text`, `varchar`\n\t *\n\t * If you want your column to be `number` type after selecting/or on inserting - use `data: number`. Like `integer`\n\t */\n\tdata: unknown;\n\n\t/**\n\t * Type helper, that represents what type database driver is accepting for specific database data type\n\t */\n\tdriverData?: unknown;\n\n\t/**\n\t * Type helper, that represents what type database driver is returning for specific database data type\n\t *\n\t * Needed only in case driver's output and input for type differ\n\t *\n\t * Defaults to {@link driverData}\n\t */\n\tdriverOutput?: unknown;\n\n\t/**\n\t * Type helper, that represents what type field returns after being aggregated to JSON\n\t */\n\tjsonData?: unknown;\n\n\t/**\n\t * What config type should be used for {@link CustomTypeParams} `dataType` generation\n\t */\n\tconfig?: Record<string, any>;\n\n\t/**\n\t * Whether the config argument should be required or not\n\t * @default false\n\t */\n\tconfigRequired?: boolean;\n\n\t/**\n\t * If your custom data type should be notNull by default you can use `notNull: true`\n\t *\n\t * @example\n\t * const customSerial = customType<{ data: number, notNull: true, default: true }>({\n\t * \t dataType() {\n\t * \t return 'serial';\n\t * },\n\t * });\n\t */\n\tnotNull?: boolean;\n\n\t/**\n\t * If your custom data type has default you can use `default: true`\n\t *\n\t * @example\n\t * const customSerial = customType<{ data: number, notNull: true, default: true }>({\n\t * \t dataType() {\n\t * \t return 'serial';\n\t * },\n\t * });\n\t */\n\tdefault?: boolean;\n}\n\nexport interface CustomTypeParams<T extends CustomTypeValues> {\n\t/**\n\t * Database data type string representation, that is used for migrations\n\t * @example\n\t * ```\n\t * `jsonb`, `text`\n\t * ```\n\t *\n\t * If database data type needs additional params you can use them from `config` param\n\t * @example\n\t * ```\n\t * `varchar(256)`, `numeric(2,3)`\n\t * ```\n\t *\n\t * To make `config` be of specific type please use config generic in {@link CustomTypeValues}\n\t *\n\t * @example\n\t * Usage example\n\t * ```\n\t * dataType() {\n\t * return 'boolean';\n\t * },\n\t * ```\n\t * Or\n\t * ```\n\t * dataType(config) {\n\t * \t return typeof config.length !== 'undefined' ? `varchar(${config.length})` : `varchar`;\n\t * \t }\n\t * ```\n\t */\n\tdataType: (config: T['config'] | (Equal<T['configRequired'], true> extends true ? never : undefined)) => string;\n\n\t/**\n\t * Optional mapping function, that is used to transform inputs from desired to be used in code format to one suitable for driver\n\t * @example\n\t * For example, when using jsonb we need to map JS/TS object to string before writing to database\n\t * ```\n\t * toDriver(value: TData): string {\n\t * \t return JSON.stringify(value);\n\t * }\n\t * ```\n\t */\n\ttoDriver?: (value: T['data']) => T['driverData'] | SQL;\n\n\t/**\n\t * Optional mapping function, that is used for transforming data returned by driver to desired column's output format\n\t * @example\n\t * For example, when using timestamp we need to map string Date representation to JS Date\n\t * ```\n\t * fromDriver(value: string): Date {\n\t * \treturn new Date(value);\n\t * }\n\t * ```\n\t *\n\t * It'll cause the returned data to change from:\n\t * ```\n\t * {\n\t * \tcustomField: \"2025-04-07T03:25:16.635Z\";\n\t * }\n\t * ```\n\t * to:\n\t * ```\n\t * {\n\t * \tcustomField: new Date(\"2025-04-07T03:25:16.635Z\");\n\t * }\n\t * ```\n\t */\n\tfromDriver?: (value: 'driverOutput' extends keyof T ? T['driverOutput'] : T['driverData']) => T['data'];\n\n\t/**\n\t * Optional mapping function, that is used for transforming data returned by transofmed to JSON in database data to desired format\n\t *\n\t * Used by [relational queries](https://orm.drizzle.team/docs/rqb-v2)\n\t *\n\t * Defaults to {@link fromDriver} function\n\t * @example\n\t * For example, when querying blob column via [RQB](https://orm.drizzle.team/docs/rqb-v2) or [JSON functions](https://orm.drizzle.team/docs/json-functions), the result field will be returned as it's hex string representation, as opposed to Buffer from regular query\n\t * To handle that, we need a separate function to handle such field's mapping:\n\t * ```\n\t * fromJson(value: string): Buffer {\n\t * \treturn Buffer.from(value, 'hex');\n\t * },\n\t * ```\n\t *\n\t * It'll cause the returned data to change from:\n\t * ```\n\t * {\n\t * \tcustomField: \"04A8...\";\n\t * }\n\t * ```\n\t * to:\n\t * ```\n\t * {\n\t * \tcustomField: Buffer([...]);\n\t * }\n\t * ```\n\t */\n\tfromJson?: (value: T['jsonData']) => T['data'];\n\n\t/**\n\t * Optional selection modifier function, that is used for modifying selection of column inside [JSON functions](https://orm.drizzle.team/docs/json-functions)\n\t *\n\t * Additional mapping that could be required for such scenarios can be handled using {@link fromJson} function\n\t *\n\t * Used by [relational queries](https://orm.drizzle.team/docs/rqb-v2)\n\t *\n\t * Following types are being casted to text by default: `numeric`, `decimal`, `bigint`, `blob` (via `hex()` function)\n\t * @example\n\t * For example, when using numeric field for bigint storage we need to cast field to text to preserve data integrity\n\t * ```\n\t * forJsonSelect(identifier: SQL, sql: SQLGenerator): SQL {\n\t * \treturn sql`cast(${identifier} as text)`\n\t * },\n\t * ```\n\t *\n\t * This will change query from:\n\t * ```\n\t * SELECT\n\t * \tjson_object('bigint', `t`.`bigint`)\n\t * \tFROM\n\t * \t(\n\t * \t\tSELECT\n\t * \t\t`table`.`custom_bigint` AS \"bigint\"\n\t * \t\tFROM\n\t * \t\t`table`\n\t * \t) AS `t`\n\t * ```\n\t * to:\n\t * ```\n\t * SELECT\n\t * \tjson_object('bigint', `t`.`bigint`)\n\t * \tFROM\n\t * \t(\n\t * \t\tSELECT\n\t * \t\tcast(`table`.`custom_bigint` as text) AS `bigint`\n\t * \t\tFROM\n\t * \t\t`table`\n\t * \t) AS `t`\n\t * ```\n\t *\n\t * Returned by query object will change from:\n\t * ```\n\t * {\n\t * \tbigint: 5044565289845416000; // Partial data loss due to direct conversion to JSON format\n\t * }\n\t * ```\n\t * to:\n\t * ```\n\t * {\n\t * \tbigint: \"5044565289845416380\"; // Data is preserved due to conversion of field to text before JSON-ification\n\t * }\n\t * ```\n\t */\n\tforJsonSelect?: (identifier: SQL, sql: SQLGenerator) => SQL;\n}\n\n/**\n * Custom sqlite database data type generator\n */\nexport function customType<T extends CustomTypeValues = CustomTypeValues>(\n\tcustomTypeParams: CustomTypeParams<T>,\n): Equal<T['configRequired'], true> extends true ? {\n\t\t<TConfig extends Record<string, any> & T['config']>(\n\t\t\tfieldConfig: TConfig,\n\t\t): SQLiteCustomColumnBuilder<ConvertCustomConfig<T>>;\n\t\t(\n\t\t\tdbname: string,\n\t\t\tfieldConfig: T['config'],\n\t\t): SQLiteCustomColumnBuilder<ConvertCustomConfig<T>>;\n\t}\n\t: {\n\t\t(): SQLiteCustomColumnBuilder<ConvertCustomConfig<T>>;\n\t\t<TConfig extends Record<string, any> & T['config']>(\n\t\t\tfieldConfig?: TConfig,\n\t\t): SQLiteCustomColumnBuilder<ConvertCustomConfig<T>>;\n\t\t(\n\t\t\tdbname: string,\n\t\t\tfieldConfig?: T['config'],\n\t\t): SQLiteCustomColumnBuilder<ConvertCustomConfig<T>>;\n\t}\n{\n\treturn (\n\t\ta?: string | T['config'],\n\t\tb?: T['config'],\n\t): SQLiteCustomColumnBuilder<ConvertCustomConfig<T>> => {\n\t\tconst { name, config } = getColumnNameAndConfig<T['config']>(a, b);\n\t\treturn new SQLiteCustomColumnBuilder(\n\t\t\tname,\n\t\t\tconfig,\n\t\t\tcustomTypeParams,\n\t\t);\n\t};\n}\n", "import type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { SQLiteTable } from '~/sqlite-core/table.ts';\nimport { type Equal, getColumnNameAndConfig } from '~/utils.ts';\nimport { SQLiteColumn, SQLiteColumnBuilder } from './common.ts';\n\nexport class SQLiteNumericBuilder extends SQLiteColumnBuilder<{\n\tdataType: 'string numeric';\n\tdata: string;\n\tdriverParam: string;\n}> {\n\tstatic override readonly [entityKind]: string = 'SQLiteNumericBuilder';\n\n\tconstructor(name: string) {\n\t\tsuper(name, 'string numeric', 'SQLiteNumeric');\n\t}\n\n\t/** @internal */\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteNumeric(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class SQLiteNumeric<T extends ColumnBaseConfig<'string numeric'>> extends SQLiteColumn<T> {\n\tstatic override readonly [entityKind]: string = 'SQLiteNumeric';\n\n\toverride mapFromDriverValue = (value: unknown): string => {\n\t\tif (typeof value === 'string') return value;\n\n\t\treturn String(value);\n\t};\n\n\tgetSQLType(): string {\n\t\treturn 'numeric';\n\t}\n}\nexport class SQLiteNumericNumberBuilder extends SQLiteColumnBuilder<{\n\tdataType: 'number';\n\tdata: number;\n\tdriverParam: string;\n}> {\n\tstatic override readonly [entityKind]: string = 'SQLiteNumericNumberBuilder';\n\n\tconstructor(name: string) {\n\t\tsuper(name, 'number', 'SQLiteNumericNumber');\n\t}\n\n\t/** @internal */\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteNumericNumber(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class SQLiteNumericNumber<T extends ColumnBaseConfig<'number'>> extends SQLiteColumn<T> {\n\tstatic override readonly [entityKind]: string = 'SQLiteNumericNumber';\n\n\toverride mapFromDriverValue = (value: unknown): number => {\n\t\tif (typeof value === 'number') return value;\n\n\t\treturn Number(value);\n\t};\n\n\toverride mapToDriverValue = String;\n\n\tgetSQLType(): string {\n\t\treturn 'numeric';\n\t}\n}\n\nexport class SQLiteNumericBigIntBuilder extends SQLiteColumnBuilder<{\n\tdataType: 'bigint int64';\n\tdata: bigint;\n\tdriverParam: string;\n}> {\n\tstatic override readonly [entityKind]: string = 'SQLiteNumericBigIntBuilder';\n\n\tconstructor(name: string) {\n\t\tsuper(name, 'bigint int64', 'SQLiteNumericBigInt');\n\t}\n\n\t/** @internal */\n\toverride build(table: SQLiteTable) {\n\t\treturn new SQLiteNumericBigInt(\n\t\t\ttable,\n\t\t\tthis.config as any,\n\t\t);\n\t}\n}\n\nexport class SQLiteNumericBigInt<T extends ColumnBaseConfig<'bigint int64'>> extends SQLiteColumn<T> {\n\tstatic override readonly [entityKind]: string = 'SQLiteNumericBigInt';\n\n\toverride mapFromDriverValue = BigInt;\n\n\toverride mapToDriverValue = String;\n\n\tgetSQLType(): string {\n\t\treturn 'numeric';\n\t}\n}\n\nexport type SQLiteNumericConfig<T extends 'string' | 'number' | 'bigint' = 'string' | 'number' | 'bigint'> = {\n\tmode: T;\n};\n\nexport function numeric<TMode extends SQLiteNumericConfig['mode']>(\n\tconfig?: SQLiteNumericConfig<TMode>,\n): Equal<TMode, 'number'> extends true ? SQLiteNumericNumberBuilder\n\t: Equal<TMode, 'bigint'> extends true ? SQLiteNumericBigIntBuilder\n\t: SQLiteNumericBuilder;\nexport function numeric<TMode extends SQLiteNumericConfig['mode']>(\n\tname: string,\n\tconfig?: SQLiteNumericConfig<TMode>,\n): Equal<TMode, 'number'> extends true ? SQLiteNumericNumberBuilder\n\t: Equal<TMode, 'bigint'> extends true ? SQLiteNumericBigIntBuilder\n\t: SQLiteNumericBuilder;\nexport function numeric(a?: string | SQLiteNumericConfig, b?: SQLiteNumericConfig) {\n\tconst { name, config } = getColumnNameAndConfig<SQLiteNumericConfig>(a, b);\n\tconst mode = config?.mode;\n\treturn mode === 'number'\n\t\t? new SQLiteNumericNumberBuilder(name)\n\t\t: mode === 'bigint'\n\t\t? new SQLiteNumericBigIntBuilder(name)\n\t\t: new SQLiteNumericBuilder(name);\n}\n", "import { blob } from './blob.ts';\nimport { customType } from './custom.ts';\nimport { integer } from './integer.ts';\nimport { numeric } from './numeric.ts';\nimport { real } from './real.ts';\nimport { text } from './text.ts';\n\nexport function getSQLiteColumnBuilders() {\n\treturn {\n\t\tblob,\n\t\tcustomType,\n\t\tinteger,\n\t\tnumeric,\n\t\treal,\n\t\ttext,\n\t};\n}\n\nexport type SQLiteColumnBuilders = ReturnType<typeof getSQLiteColumnBuilders>;\n", "export type Casing = 'snake_case' | 'camelCase';\n\nexport function toSnakeCase(input: string) {\n\tconst words = input\n\t\t.replace(/['\\u2019]/g, '')\n\t\t.match(/[\\da-z]+|[A-Z]+(?![a-z])|[A-Z][\\da-z]+/g) ?? [];\n\n\treturn words.map((word) => word.toLowerCase()).join('_');\n}\n\nexport function toCamelCase(input: string) {\n\tconst words = input\n\t\t.replace(/['\\u2019]/g, '')\n\t\t.match(/[\\da-z]+|[A-Z]+(?![a-z])|[A-Z][\\da-z]+/g) ?? [];\n\n\treturn words.reduce((acc, word, i) => {\n\t\tconst formattedWord = i === 0 ? word.toLowerCase() : `${word[0]!.toUpperCase()}${word.slice(1)}`;\n\t\treturn acc + formattedWord;\n\t}, '');\n}\n\nexport function getCasingFn(casing: Casing | undefined) {\n\tif (casing === 'snake_case') return toSnakeCase;\n\tif (casing === 'camelCase') return toCamelCase;\n\treturn (name: string) => name;\n}\n", "import { type Casing, getCasingFn } from '~/casing.ts';\nimport type { BuildColumns, BuildExtraConfigColumns, ColumnBuilderBase } from '~/column-builder.ts';\nimport { entityKind } from '~/entity.ts';\nimport {\n\ttype InferTableColumnsModels,\n\tTable,\n\ttype TableConfig as TableConfigBase,\n\ttype UpdateTableConfig,\n} from '~/table.ts';\nimport type { CheckBuilder } from './checks.ts';\nimport { getSQLiteColumnBuilders, type SQLiteColumnBuilders } from './columns/all.ts';\nimport type { SQLiteColumn, SQLiteColumnBuilder, SQLiteColumns } from './columns/common.ts';\nimport type { ForeignKey, ForeignKeyBuilder } from './foreign-keys.ts';\nimport type { IndexBuilder } from './indexes.ts';\nimport type { PrimaryKeyBuilder } from './primary-keys.ts';\nimport type { UniqueConstraintBuilder } from './unique-constraint.ts';\n\nexport type SQLiteTableExtraConfigValue =\n\t| IndexBuilder\n\t| CheckBuilder\n\t| ForeignKeyBuilder\n\t| PrimaryKeyBuilder\n\t| UniqueConstraintBuilder;\n\nexport type SQLiteTableExtraConfig = Record<\n\tstring,\n\tSQLiteTableExtraConfigValue\n>;\n\nexport type TableConfig = TableConfigBase<SQLiteColumns>;\n\n/** @internal */\nexport const InlineForeignKeys = Symbol.for('drizzle:SQLiteInlineForeignKeys');\n\nexport class SQLiteTable<T extends TableConfig = TableConfig> extends Table<T> {\n\tstatic override readonly [entityKind]: string = 'SQLiteTable';\n\n\t/** @internal */\n\tstatic override readonly Symbol = Object.assign({}, Table.Symbol, {\n\t\tInlineForeignKeys: InlineForeignKeys as typeof InlineForeignKeys,\n\t});\n\n\t/** @internal */\n\toverride [Table.Symbol.Columns]!: NonNullable<T['columns']>;\n\n\t/** @internal */\n\t[InlineForeignKeys]: ForeignKey[] = [];\n\n\t/** @internal */\n\toverride [Table.Symbol.ExtraConfigBuilder]:\n\t\t| ((self: Record<string, SQLiteColumn>) => SQLiteTableExtraConfig)\n\t\t| undefined = undefined;\n}\n\nexport type AnySQLiteTable<TPartial extends Partial<TableConfig> = {}> = SQLiteTable<\n\tUpdateTableConfig<TableConfig, TPartial>\n>;\n\nexport type SQLiteTableWithColumns<T extends TableConfig> =\n\t& SQLiteTable<T>\n\t& T['columns']\n\t& InferTableColumnsModels<T['columns']>;\n\nexport interface SQLiteTableFn<TSchema extends string | undefined = undefined> {\n\t<\n\t\tTTableName extends string,\n\t\tTColumnsMap extends Record<string, ColumnBuilderBase>,\n\t>(\n\t\tname: TTableName,\n\t\tcolumns: TColumnsMap,\n\t\textraConfig?: (\n\t\t\tself: BuildColumns<TTableName, TColumnsMap, 'sqlite'>,\n\t\t) => SQLiteTableExtraConfigValue[],\n\t): SQLiteTableWithColumns<{\n\t\tname: TTableName;\n\t\tschema: TSchema;\n\t\tcolumns: BuildColumns<TTableName, TColumnsMap, 'sqlite'>;\n\t\tdialect: 'sqlite';\n\t}>;\n\n\t<\n\t\tTTableName extends string,\n\t\tTColumnsMap extends Record<string, ColumnBuilderBase>,\n\t>(\n\t\tname: TTableName,\n\t\tcolumns: (columnTypes: SQLiteColumnBuilders) => TColumnsMap,\n\t\textraConfig?: (self: BuildColumns<TTableName, TColumnsMap, 'sqlite'>) => SQLiteTableExtraConfigValue[],\n\t): SQLiteTableWithColumns<{\n\t\tname: TTableName;\n\t\tschema: TSchema;\n\t\tcolumns: BuildColumns<TTableName, TColumnsMap, 'sqlite'>;\n\t\tdialect: 'sqlite';\n\t}>;\n\t/**\n\t * @deprecated The third parameter of sqliteTable is changing and will only accept an array instead of an object\n\t *\n\t * @example\n\t * Deprecated version:\n\t * ```ts\n\t * export const users = sqliteTable(\"users\", {\n\t * \tid: int(),\n\t * }, (t) => ({\n\t * \tidx: index('custom_name').on(t.id)\n\t * }));\n\t * ```\n\t *\n\t * New API:\n\t * ```ts\n\t * export const users = sqliteTable(\"users\", {\n\t * \tid: int(),\n\t * }, (t) => [\n\t * \tindex('custom_name').on(t.id)\n\t * ]);\n\t * ```\n\t */\n\t<\n\t\tTTableName extends string,\n\t\tTColumnsMap extends Record<string, ColumnBuilderBase>,\n\t>(\n\t\tname: TTableName,\n\t\tcolumns: TColumnsMap,\n\t\textraConfig?: (self: BuildColumns<TTableName, TColumnsMap, 'sqlite'>) => SQLiteTableExtraConfig,\n\t): SQLiteTableWithColumns<{\n\t\tname: TTableName;\n\t\tschema: TSchema;\n\t\tcolumns: BuildColumns<TTableName, TColumnsMap, 'sqlite'>;\n\t\tdialect: 'sqlite';\n\t}>;\n\n\t/**\n\t * @deprecated The third parameter of sqliteTable is changing and will only accept an array instead of an object\n\t *\n\t * @example\n\t * Deprecated version:\n\t * ```ts\n\t * export const users = sqliteTable(\"users\", {\n\t * \tid: int(),\n\t * }, (t) => ({\n\t * \tidx: index('custom_name').on(t.id)\n\t * }));\n\t * ```\n\t *\n\t * New API:\n\t * ```ts\n\t * export const users = sqliteTable(\"users\", {\n\t * \tid: int(),\n\t * }, (t) => [\n\t * \tindex('custom_name').on(t.id)\n\t * ]);\n\t * ```\n\t */\n\t<\n\t\tTTableName extends string,\n\t\tTColumnsMap extends Record<string, ColumnBuilderBase>,\n\t>(\n\t\tname: TTableName,\n\t\tcolumns: (columnTypes: SQLiteColumnBuilders) => TColumnsMap,\n\t\textraConfig?: (self: BuildColumns<TTableName, TColumnsMap, 'sqlite'>) => SQLiteTableExtraConfig,\n\t): SQLiteTableWithColumns<{\n\t\tname: TTableName;\n\t\tschema: TSchema;\n\t\tcolumns: BuildColumns<TTableName, TColumnsMap, 'sqlite'>;\n\t\tdialect: 'sqlite';\n\t}>;\n}\n\n/** @internal */\nexport function sqliteTableBase<\n\tTTableName extends string,\n\tTColumnsMap extends Record<string, ColumnBuilderBase>,\n\tTSchema extends string | undefined,\n>(\n\tname: TTableName,\n\tcolumns: TColumnsMap | ((columnTypes: SQLiteColumnBuilders) => TColumnsMap),\n\textraConfig:\n\t\t| ((\n\t\t\tself: BuildColumns<TTableName, TColumnsMap, 'sqlite'>,\n\t\t) => SQLiteTableExtraConfig | SQLiteTableExtraConfigValue[])\n\t\t| undefined,\n\tschema: TSchema | undefined,\n\tcasing: Casing | undefined,\n\tbaseName = name,\n): SQLiteTableWithColumns<{\n\tname: TTableName;\n\tschema: TSchema;\n\tcolumns: BuildColumns<TTableName, TColumnsMap, 'sqlite'>;\n\tdialect: 'sqlite';\n}> {\n\tconst casingFn = getCasingFn(casing);\n\tconst rawTable = new SQLiteTable<{\n\t\tname: TTableName;\n\t\tschema: TSchema;\n\t\tcolumns: BuildColumns<TTableName, TColumnsMap, 'sqlite'>;\n\t\tdialect: 'sqlite';\n\t}>(name, schema, baseName);\n\n\tconst parsedColumns: TColumnsMap = typeof columns === 'function' ? columns(getSQLiteColumnBuilders()) : columns;\n\n\tconst builtColumns = Object.fromEntries(\n\t\tObject.entries(parsedColumns).map(([name, colBuilderBase]) => {\n\t\t\tconst colBuilder = colBuilderBase as SQLiteColumnBuilder;\n\t\t\tcolBuilder.setName(name, casingFn);\n\t\t\tconst column = colBuilder.build(rawTable).postBuild();\n\t\t\trawTable[InlineForeignKeys].push(...colBuilder.buildForeignKeys(column, rawTable));\n\t\t\treturn [name, column];\n\t\t}),\n\t) as unknown as BuildColumns<TTableName, TColumnsMap, 'sqlite'>;\n\n\tconst table = Object.assign(rawTable, builtColumns);\n\n\ttable[Table.Symbol.Columns] = builtColumns;\n\ttable[Table.Symbol.ExtraConfigColumns] = builtColumns as unknown as BuildExtraConfigColumns<\n\t\tTTableName,\n\t\tTColumnsMap,\n\t\t'sqlite'\n\t>;\n\n\tif (extraConfig) {\n\t\ttable[SQLiteTable.Symbol.ExtraConfigBuilder] = extraConfig as (\n\t\t\tself: Record<string, SQLiteColumn>,\n\t\t) => SQLiteTableExtraConfig;\n\t}\n\n\treturn table as any;\n}\n\n/** @internal */\nexport function sqliteTableWithCasing(casing: Casing | undefined): SQLiteTableFn {\n\treturn (name, columns, extraConfig) => sqliteTableBase(name, columns, extraConfig, undefined, casing);\n}\n\nexport const sqliteTable = sqliteTableWithCasing(undefined);\n\nexport function sqliteTableCreator(\n\tcustomizeTableName: (name: string) => string,\n\tcasing?: Casing | undefined,\n): SQLiteTableFn {\n\treturn (name, columns, extraConfig) => {\n\t\treturn sqliteTableBase(customizeTableName(name) as typeof name, columns, extraConfig, undefined, casing, name);\n\t};\n}\n", "import { entityKind } from '~/entity.ts';\nimport type { SQL } from '~/sql/sql.ts';\nimport type { SQLiteColumn } from './columns/index.ts';\nimport type { SQLiteTable } from './table.ts';\n\nexport interface IndexConfig {\n\tname: string;\n\tcolumns: IndexColumn[];\n\tunique: boolean;\n\twhere: SQL | undefined;\n}\n\nexport type IndexColumn = SQLiteColumn | SQL;\n\nexport class IndexBuilderOn {\n\tstatic readonly [entityKind]: string = 'SQLiteIndexBuilderOn';\n\n\tconstructor(private name: string, private unique: boolean) {}\n\n\ton(...columns: [IndexColumn, ...IndexColumn[]]): IndexBuilder {\n\t\treturn new IndexBuilder(this.name, columns, this.unique);\n\t}\n}\n\nexport class IndexBuilder {\n\tstatic readonly [entityKind]: string = 'SQLiteIndexBuilder';\n\n\tdeclare _: {\n\t\tbrand: 'SQLiteIndexBuilder';\n\t};\n\n\t/** @internal */\n\tconfig: IndexConfig;\n\n\tconstructor(name: string, columns: IndexColumn[], unique: boolean) {\n\t\tthis.config = {\n\t\t\tname,\n\t\t\tcolumns,\n\t\t\tunique,\n\t\t\twhere: undefined,\n\t\t};\n\t}\n\n\t/**\n\t * Condition for partial index.\n\t */\n\twhere(condition: SQL): this {\n\t\tthis.config.where = condition;\n\t\treturn this;\n\t}\n\n\t/** @internal */\n\tbuild(table: SQLiteTable): Index {\n\t\treturn new Index(this.config, table);\n\t}\n}\n\nexport class Index {\n\tstatic readonly [entityKind]: string = 'SQLiteIndex';\n\n\tdeclare _: {\n\t\tbrand: 'SQLiteIndex';\n\t};\n\n\treadonly config: IndexConfig & { table: SQLiteTable };\n\treadonly isNameExplicit: boolean;\n\n\tconstructor(config: IndexConfig, table: SQLiteTable) {\n\t\tthis.config = { ...config, table };\n\t\tthis.isNameExplicit = !!config.name;\n\t}\n}\n\nexport function index(name: string): IndexBuilderOn {\n\treturn new IndexBuilderOn(name, false);\n}\n\nexport function uniqueIndex(name: string): IndexBuilderOn {\n\treturn new IndexBuilderOn(name, true);\n}\n", "import { entityKind } from '~/entity.ts';\nimport type { AnySQLiteColumn, SQLiteColumn } from './columns/index.ts';\nimport { SQLiteTable } from './table.ts';\n\nexport function primaryKey<\n\tTTableName extends string,\n\tTColumn extends AnySQLiteColumn<{ tableName: TTableName }>,\n\tTColumns extends AnySQLiteColumn<{ tableName: TTableName }>[],\n>(config: { name?: string; columns: [TColumn, ...TColumns] }): PrimaryKeyBuilder;\n/**\n * @deprecated: Please use primaryKey({ columns: [] }) instead of this function\n * @param columns\n */\nexport function primaryKey<\n\tTTableName extends string,\n\tTColumns extends AnySQLiteColumn<{ tableName: TTableName }>[],\n>(...columns: TColumns): PrimaryKeyBuilder;\nexport function primaryKey(...config: any) {\n\tif (config[0].columns) {\n\t\treturn new PrimaryKeyBuilder(config[0].columns, config[0].name);\n\t}\n\treturn new PrimaryKeyBuilder(config);\n}\nexport class PrimaryKeyBuilder {\n\tstatic readonly [entityKind]: string = 'SQLitePrimaryKeyBuilder';\n\n\tdeclare _: {\n\t\tbrand: 'SQLitePrimaryKeyBuilder';\n\t};\n\n\t/** @internal */\n\tcolumns: SQLiteColumn[];\n\n\t/** @internal */\n\tname?: string;\n\n\tconstructor(\n\t\tcolumns: SQLiteColumn[],\n\t\tname?: string,\n\t) {\n\t\tthis.columns = columns;\n\t\tthis.name = name;\n\t}\n\n\t/** @internal */\n\tbuild(table: SQLiteTable): PrimaryKey {\n\t\treturn new PrimaryKey(table, this.columns, this.name);\n\t}\n}\n\nexport class PrimaryKey {\n\tstatic readonly [entityKind]: string = 'SQLitePrimaryKey';\n\n\treadonly columns: SQLiteColumn[];\n\treadonly name?: string;\n\treadonly isNameExplicit: boolean;\n\n\tconstructor(readonly table: SQLiteTable, columns: SQLiteColumn[], name?: string) {\n\t\tthis.columns = columns;\n\t\tthis.name = name;\n\t\tthis.isNameExplicit = !!name;\n\t}\n\n\tgetName(): string {\n\t\treturn this.name\n\t\t\t?? `${this.table[SQLiteTable.Symbol.Name]}_${this.columns.map((column) => column.name).join('_')}_pk`;\n\t}\n}\n", "import { entityKind } from '~/entity.ts';\nimport { TableName } from '~/table.utils.ts';\nimport type { SQLiteColumn } from './columns/common.ts';\nimport type { SQLiteTable } from './table.ts';\n\nexport function uniqueKeyName(table: SQLiteTable, columns: string[]) {\n\treturn `${table[TableName]}_${columns.join('_')}_unique`;\n}\n\nexport function unique(name?: string): UniqueOnConstraintBuilder {\n\treturn new UniqueOnConstraintBuilder(name);\n}\n\nexport class UniqueConstraintBuilder {\n\tstatic readonly [entityKind]: string = 'SQLiteUniqueConstraintBuilder';\n\n\t/** @internal */\n\tcolumns: SQLiteColumn[];\n\n\tconstructor(\n\t\tcolumns: SQLiteColumn[],\n\t\tprivate name?: string,\n\t) {\n\t\tthis.columns = columns;\n\t}\n\n\t/** @internal */\n\tbuild(table: SQLiteTable): UniqueConstraint {\n\t\treturn new UniqueConstraint(table, this.columns, this.name);\n\t}\n}\n\nexport class UniqueOnConstraintBuilder {\n\tstatic readonly [entityKind]: string = 'SQLiteUniqueOnConstraintBuilder';\n\n\t/** @internal */\n\tname?: string;\n\n\tconstructor(\n\t\tname?: string,\n\t) {\n\t\tthis.name = name;\n\t}\n\n\ton(...columns: [SQLiteColumn, ...SQLiteColumn[]]) {\n\t\treturn new UniqueConstraintBuilder(columns, this.name);\n\t}\n}\n\nexport class UniqueConstraint {\n\tstatic readonly [entityKind]: string = 'SQLiteUniqueConstraint';\n\n\treadonly columns: SQLiteColumn[];\n\treadonly name: string;\n\treadonly isNameExplicit: boolean;\n\n\tconstructor(readonly table: SQLiteTable, columns: SQLiteColumn[], name?: string) {\n\t\tthis.columns = columns;\n\t\tthis.isNameExplicit = !!name;\n\t\tthis.name = name ?? uniqueKeyName(this.table, this.columns.map((column) => column.name));\n\t}\n\n\tgetName() {\n\t\treturn this.name;\n\t}\n}\n", "import { entityKind } from '~/entity.ts';\n\nexport abstract class QueryPromise<T> implements Promise<T> {\n\tstatic readonly [entityKind]: string = 'QueryPromise';\n\n\t[Symbol.toStringTag] = 'QueryPromise';\n\n\tcatch<TResult = never>(\n\t\tonRejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined,\n\t): Promise<T | TResult> {\n\t\treturn this.then(undefined, onRejected);\n\t}\n\n\tfinally(onFinally?: (() => void) | null | undefined): Promise<T> {\n\t\treturn this.then(\n\t\t\t(value) => {\n\t\t\t\tonFinally?.();\n\t\t\t\treturn value;\n\t\t\t},\n\t\t\t(reason) => {\n\t\t\t\tonFinally?.();\n\t\t\t\tthrow reason;\n\t\t\t},\n\t\t);\n\t}\n\n\tthen<TResult1 = T, TResult2 = never>(\n\t\tonFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null,\n\t\tonRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null,\n\t): Promise<TResult1 | TResult2> {\n\t\treturn this.execute().then(onFulfilled, onRejected);\n\t}\n\n\tabstract execute(): Promise<T>;\n}\n", "import { entityKind } from '~/entity.ts';\n\nexport class DrizzleError extends Error {\n\tstatic readonly [entityKind]: string = 'DrizzleError';\n\n\tconstructor({ message, cause }: { message?: string; cause?: unknown }) {\n\t\tsuper(message);\n\t\tthis.name = 'DrizzleError';\n\t\tthis.cause = cause;\n\t}\n}\n\nexport class DrizzleQueryError extends Error {\n\tstatic readonly [entityKind]: string = 'DrizzleQueryError';\n\n\tconstructor(\n\t\tpublic query: string,\n\t\tpublic params: any[],\n\t\tpublic override cause?: Error,\n\t) {\n\t\tsuper(`Failed query: ${query}\\nparams: ${params}`);\n\t\tthis.name = 'DrizzleQueryError';\n\t\tError.captureStackTrace(this, DrizzleQueryError);\n\n\t\t// ES2022+: preserves original error on `.cause`\n\t\tif (cause) (this as any).cause = cause;\n\t}\n}\n\nexport class TransactionRollbackError extends DrizzleError {\n\tstatic override readonly [entityKind]: string = 'TransactionRollbackError';\n\n\tconstructor() {\n\t\tsuper({ message: 'Rollback' });\n\t\tthis.name = 'TransactionRollbackError';\n\t}\n}\n", "import type * as V1 from './_relations.ts';\nimport { OriginalColumn } from './column-common.ts';\nimport type { AnyColumn } from './column.ts';\nimport { Column } from './column.ts';\nimport { entityKind, is } from './entity.ts';\nimport { View } from './sql/sql.ts';\nimport { isSQLWrapper, SQL, sql } from './sql/sql.ts';\nimport { Subquery } from './subquery.ts';\nimport { Table } from './table.ts';\nimport { ViewBaseConfig } from './view-common.ts';\n\nexport class ColumnTableAliasProxyHandler<TColumn extends Column> implements ProxyHandler<TColumn> {\n\tstatic readonly [entityKind]: string = 'ColumnTableAliasProxyHandler';\n\n\tconstructor(private table: Table | View, private ignoreColumnAlias?: boolean) {}\n\n\tget(columnObj: TColumn, prop: string | symbol): any {\n\t\tif (prop === 'table') {\n\t\t\treturn this.table;\n\t\t}\n\n\t\tif (prop === 'isAlias' && this.ignoreColumnAlias) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn columnObj[prop as keyof TColumn];\n\t}\n}\n\nexport class ViewSelectionAliasProxyHandler<TSelection extends Record<string, unknown>>\n\timplements ProxyHandler<TSelection>\n{\n\tstatic readonly [entityKind]: string = 'ViewSelectionAliasProxyHandler';\n\n\tconstructor(protected view: View, protected selection: TSelection, private ignoreColumnAlias?: boolean) {}\n\n\tget(selection: TSelection, prop: string | symbol): any {\n\t\tconst value = selection[prop as keyof TSelection];\n\n\t\tif (is(value, Column)) return new Proxy(value, new ColumnTableAliasProxyHandler(this.view, this.ignoreColumnAlias));\n\t\tif (\n\t\t\tis(value, Subquery) || is(value, SQL) || is(value, SQL.Aliased) || isSQLWrapper(value)\n\t\t\t|| (typeof value !== 'object' || value === null)\n\t\t) return value;\n\n\t\treturn new Proxy(value as Record<string, unknown>, this);\n\t}\n}\n\nexport class TableAliasProxyHandler<T extends Table | View> implements ProxyHandler<T> {\n\tstatic readonly [entityKind]: string = 'TableAliasProxyHandler';\n\n\tconstructor(private alias: string, private replaceOriginalName: boolean, private ignoreColumnAlias?: boolean) {}\n\n\tget(target: T, prop: string | symbol): any {\n\t\tif (prop === Table.Symbol.IsAlias) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (prop === Table.Symbol.Name) {\n\t\t\treturn this.alias;\n\t\t}\n\n\t\tif (this.replaceOriginalName && prop === Table.Symbol.OriginalName) {\n\t\t\treturn this.alias;\n\t\t}\n\n\t\tif (prop === ViewBaseConfig) {\n\t\t\treturn {\n\t\t\t\t...target[ViewBaseConfig as keyof typeof target],\n\t\t\t\tname: this.alias,\n\t\t\t\tisAlias: true,\n\t\t\t\tselectedFields: new Proxy(\n\t\t\t\t\t(<View> target)[ViewBaseConfig].selectedFields,\n\t\t\t\t\tnew ViewSelectionAliasProxyHandler(\n\t\t\t\t\t\tnew Proxy(target, this) as View,\n\t\t\t\t\t\t(<View> target)[ViewBaseConfig].selectedFields,\n\t\t\t\t\t\tthis.ignoreColumnAlias,\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tif (prop === Table.Symbol.Columns) {\n\t\t\tconst columns = (target as Table)[Table.Symbol.Columns];\n\t\t\tif (!columns) {\n\t\t\t\treturn columns;\n\t\t\t}\n\n\t\t\tif (is(target, View)) {\n\t\t\t\treturn new Proxy(\n\t\t\t\t\t(<View> target)[Table.Symbol.Columns],\n\t\t\t\t\tnew ViewSelectionAliasProxyHandler(\n\t\t\t\t\t\tnew Proxy(target, this) as View,\n\t\t\t\t\t\t(<View> target)[Table.Symbol.Columns],\n\t\t\t\t\t\tthis.ignoreColumnAlias,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst proxiedColumns: { [key: string]: any } = {};\n\n\t\t\tObject.keys(columns).map((key) => {\n\t\t\t\tproxiedColumns[key] = new Proxy(\n\t\t\t\t\tcolumns[key]!,\n\t\t\t\t\tnew ColumnTableAliasProxyHandler(new Proxy(target, this), this.ignoreColumnAlias),\n\t\t\t\t);\n\t\t\t});\n\n\t\t\treturn proxiedColumns;\n\t\t}\n\n\t\tconst value = target[prop as keyof typeof target];\n\t\tif (is(value, Column)) {\n\t\t\treturn new Proxy(\n\t\t\t\tvalue as AnyColumn,\n\t\t\t\tnew ColumnTableAliasProxyHandler(new Proxy(target, this), this.ignoreColumnAlias),\n\t\t\t);\n\t\t}\n\n\t\treturn value;\n\t}\n}\n\nexport class ColumnAliasProxyHandler<T extends Column> implements ProxyHandler<T> {\n\tstatic readonly [entityKind]: string = 'ColumnAliasProxyHandler';\n\n\tconstructor(private alias: string) {}\n\n\tget(target: T, prop: keyof Column): any {\n\t\tif (prop === 'isAlias') {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (prop === 'name') {\n\t\t\treturn this.alias;\n\t\t}\n\n\t\tif (prop === 'keyAsName') {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (prop === OriginalColumn) {\n\t\t\treturn () => target;\n\t\t}\n\n\t\treturn target[prop];\n\t}\n}\n\nexport class RelationTableAliasProxyHandler<T extends V1.Relation> implements ProxyHandler<T> {\n\tstatic readonly [entityKind]: string = 'RelationTableAliasProxyHandler';\n\n\tconstructor(private alias: string) {}\n\n\tget(target: T, prop: string | symbol): any {\n\t\tif (prop === 'sourceTable') {\n\t\t\treturn aliasedTable(target.sourceTable, this.alias);\n\t\t}\n\n\t\treturn target[prop as keyof typeof target];\n\t}\n}\n\nexport function aliasedTable<T extends Table | View>(table: T, tableAlias: string): T {\n\treturn new Proxy(table, new TableAliasProxyHandler(tableAlias, false, false));\n}\n\nexport function aliasedColumn<T extends Column>(column: T, alias: string): T {\n\treturn new Proxy(column, new ColumnAliasProxyHandler(alias));\n}\n\nexport function aliasedRelation<T extends V1.Relation>(relation: T, tableAlias: string): T {\n\treturn new Proxy(relation, new RelationTableAliasProxyHandler(tableAlias));\n}\n\nexport function aliasedTableColumn<T extends AnyColumn>(column: T, tableAlias: string): T {\n\treturn new Proxy(\n\t\tcolumn,\n\t\tnew ColumnTableAliasProxyHandler(\n\t\t\tnew Proxy(column.table, new TableAliasProxyHandler(tableAlias, false, false)),\n\t\t\tfalse,\n\t\t),\n\t);\n}\n\nexport function mapColumnsInAliasedSQLToAlias(query: SQL.Aliased, alias: string): SQL.Aliased {\n\treturn new SQL.Aliased(mapColumnsInSQLToAlias(query.sql, alias), query.fieldAlias);\n}\n\nexport function mapColumnsInSQLToAlias(query: SQL, alias: string): SQL {\n\treturn sql.join(query.queryChunks.map((c) => {\n\t\tif (is(c, Column)) {\n\t\t\treturn aliasedTableColumn(c, alias);\n\t\t}\n\t\tif (is(c, SQL)) {\n\t\t\treturn mapColumnsInSQLToAlias(c, alias);\n\t\t}\n\t\tif (is(c, SQL.Aliased)) {\n\t\t\treturn mapColumnsInAliasedSQLToAlias(c, alias);\n\t\t}\n\t\treturn c;\n\t}));\n}\n\n// Defined separately from the Column class to resolve circular dependency\nColumn.prototype.as = function(alias: string): Column {\n\treturn aliasedColumn(this, alias);\n};\n\nexport function getOriginalColumnFromAlias<T extends Column>(column: T): T {\n\treturn column[OriginalColumn]();\n}\n", "import { IsAlias, OriginalName, Table, TableColumns, TableSchema } from '~/table.ts';\nimport { aliasedTable } from './alias.ts';\nimport type { CodecsCollection, NormalizeArrayCodec, NormalizeCodec } from './codecs.ts';\nimport { type AnyColumn, Column } from './column.ts';\nimport { entityKind, is } from './entity.ts';\nimport { DrizzleError } from './errors.ts';\nimport {\n\tand,\n\tarrayContained,\n\tarrayContains,\n\tarrayOverlaps,\n\tasc,\n\tbetween,\n\tdesc,\n\teq,\n\texists,\n\tgt,\n\tgte,\n\tilike,\n\tinArray,\n\tisNotNull,\n\tisNull,\n\tlike,\n\tlt,\n\tlte,\n\tne,\n\tnot,\n\tnotBetween,\n\tnotExists,\n\tnotIlike,\n\tnotInArray,\n\tnotLike,\n\tor,\n} from './sql/expressions/index.ts';\nimport { type CommentInput, noopDecoder, Placeholder, SQL, sql, type SQLWrapper, View } from './sql/sql.ts';\nimport {\n\ttype Assume,\n\ttype DrizzleTypeError,\n\ttype Equal,\n\tFnConstructor,\n\tgetColumnFromDecoder,\n\ttype Simplify,\n\ttype ValueOrArray,\n} from './utils.ts';\n\nexport type FilteredSchemaEntry = Table<any> | View<string, boolean, FieldSelection>;\n\nexport type SchemaEntry = Table<any> | View<string, boolean, any>;\n\nexport type Schema = Record<string, SchemaEntry>;\n\nexport type GetTableViewColumns<T extends SchemaEntry> = T extends View<string, boolean, any> ? T['_']['selectedFields']\n\t: T extends Table<any> ? T['_']['columns']\n\t: never;\n\nexport type GetTableViewFieldSelection<T extends SchemaEntry> = T extends View<string, boolean, FieldSelection>\n\t? T['_']['selectedFields']\n\t: T extends Table<any> ? T['_']['columns']\n\t: never;\n\nexport type FieldValue =\n\t| Column<any>\n\t| SQLWrapper\n\t| SQL.Aliased\n\t| SQL;\n\nexport type FieldSelection = Record<string, FieldValue>;\n\nexport function processRelations(tablesConfig: TablesRelationalConfig, tables: Schema) {\n\tfor (const tableConfig of Object.values(tablesConfig)) {\n\t\tfor (const [relationFieldName, relation] of Object.entries(tableConfig.relations)) {\n\t\t\tif (!is(relation, Relation)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trelation.sourceTable = tableConfig.table;\n\t\t\trelation.fieldName = relationFieldName;\n\t\t}\n\t}\n\n\tfor (const [sourceTableName, tableConfig] of Object.entries(tablesConfig)) {\n\t\tfor (const [relationFieldName, relation] of Object.entries(tableConfig.relations)) {\n\t\t\tif (!is(relation, Relation)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet reverseRelation: Relation | undefined;\n\t\t\tconst {\n\t\t\t\ttargetTableName,\n\t\t\t\talias,\n\t\t\t\tsourceColumns,\n\t\t\t\ttargetColumns,\n\t\t\t\tthroughTable,\n\t\t\t\tsourceTable,\n\t\t\t\tthrough,\n\t\t\t\twhere,\n\t\t\t\tsourceColumnTableNames,\n\t\t\t\ttargetColumnTableNames,\n\t\t\t} = relation;\n\t\t\tconst relationPrintName = `relations -> ${tableConfig.name}: { ${relationFieldName}: r.${\n\t\t\t\tis(relation, One) ? 'one' : 'many'\n\t\t\t}.${targetTableName}(...) }`;\n\n\t\t\tif (relationFieldName in tableConfig.table[TableColumns]) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`${relationPrintName}: relation name collides with column \"${relationFieldName}\" of table \"${tableConfig.name}\"`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof alias === 'string' && !alias) {\n\t\t\t\tthrow new Error(`${relationPrintName}: \"alias\" cannot be an empty string - omit it if you don't need it`);\n\t\t\t}\n\n\t\t\tif (sourceColumns?.length === 0) {\n\t\t\t\tthrow new Error(`${relationPrintName}: \"from\" cannot be empty`);\n\t\t\t}\n\n\t\t\tif (targetColumns?.length === 0) {\n\t\t\t\tthrow new Error(`${relationPrintName}: \"to\" cannot be empty`);\n\t\t\t}\n\n\t\t\tif (sourceColumns && targetColumns) {\n\t\t\t\tif (sourceColumns.length !== targetColumns.length && !throughTable) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`${relationPrintName}: \"from\" and \"to\" fields without \"through\" must have the same length`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tfor (const sName of sourceColumnTableNames) {\n\t\t\t\t\tif (sName !== sourceTableName) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`${relationPrintName}: all \"from\" columns must belong to table \"${sourceTableName}\", found column of table \"${sName}\"`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const tName of targetColumnTableNames) {\n\t\t\t\t\tif (tName !== targetTableName) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`${relationPrintName}: all \"to\" columns must belong to table \"${targetTableName}\", found column of table \"${tName}\"`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (through) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tthrough.source.length !== sourceColumns.length\n\t\t\t\t\t\t|| through.target.length !== targetColumns.length\n\t\t\t\t\t) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`${relationPrintName}: \".through(column)\" must be used either on all columns in \"from\" and \"to\" or not defined on any of them`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (const column of through.source) {\n\t\t\t\t\t\tif (tables[column._.tableName] !== throughTable) {\n\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t`${relationPrintName}: \".through(column)\" must be used on the same table by all columns of the relation`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (const column of through.target) {\n\t\t\t\t\t\tif (tables[column._.tableName] !== throughTable) {\n\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t`${relationPrintName}: \".through(column)\" must be used on the same table by all columns of the relation`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (sourceColumns || targetColumns) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`${relationPrintName}: relation must have either both \"from\" and \"to\" defined, or none of them`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst reverseTableConfig = tablesConfig[targetTableName];\n\t\t\tif (!reverseTableConfig) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`${relationPrintName}: not enough data provided to build the relation - \"from\"/\"to\" are not defined, and no reverse relations of table \"${targetTableName}\" were found\"`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (alias) {\n\t\t\t\tconst reverseRelations = Object.values(reverseTableConfig.relations).filter((it): it is Relation =>\n\t\t\t\t\tis(it, Relation) && it.alias === alias && it !== relation\n\t\t\t\t);\n\t\t\t\tif (reverseRelations.length > 1) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`${relationPrintName}: not enough data provided to build the relation - \"from\"/\"to\" are not defined, and multiple relations with alias \"${alias}\" found in table \"${targetTableName}\": ${\n\t\t\t\t\t\t\treverseRelations.map((it) => `\"${it.fieldName}\"`).join(', ')\n\t\t\t\t\t\t}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treverseRelation = reverseRelations[0];\n\t\t\t\tif (!reverseRelation) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`${relationPrintName}: not enough data provided to build the relation - \"from\"/\"to\" are not defined, and there is no reverse relation of table \"${targetTableName}\" with alias \"${alias}\"`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst reverseRelations = Object.values(reverseTableConfig.relations).filter((it): it is Relation =>\n\t\t\t\t\tis(it, Relation) && it.targetTable === sourceTable && !it.alias && it !== relation\n\t\t\t\t);\n\t\t\t\tif (reverseRelations.length > 1) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`${relationPrintName}: not enough data provided to build the relation - \"from\"/\"to\" are not defined, and multiple relations between \"${targetTableName}\" and \"${sourceTableName}\" were found.\\nHint: you can specify \"alias\" on both sides of the relation with the same value`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treverseRelation = reverseRelations[0];\n\t\t\t\tif (!reverseRelation) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`${relationPrintName}: not enough data provided to build the relation - \"from\"/\"to\" are not defined, and no reverse relation of table \"${targetTableName}\" with target table \"${sourceTableName}\" was found`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!reverseRelation.sourceColumns || !reverseRelation.targetColumns) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`${relationPrintName}: not enough data provided to build the relation - \"from\"/\"to\" are not defined, and reverse relation \"${targetTableName}.${reverseRelation.fieldName}\" does not have \"from\"/\"to\" defined`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\trelation.sourceColumns = reverseRelation.targetColumns;\n\t\t\trelation.targetColumns = reverseRelation.sourceColumns;\n\t\t\trelation.through = reverseRelation.through\n\t\t\t\t? {\n\t\t\t\t\tsource: reverseRelation.through.target,\n\t\t\t\t\ttarget: reverseRelation.through.source,\n\t\t\t\t}\n\t\t\t\t: undefined;\n\t\t\trelation.throughTable = reverseRelation.throughTable;\n\t\t\trelation.isReversed = !where;\n\t\t\trelation.where = where ?? reverseRelation.where;\n\t\t}\n\t}\n\n\treturn tablesConfig;\n}\n\n/** Builds relational config for every table in schema */\nexport function buildRelations<TTables extends Schema, TConfig extends AnyRelationsBuilderConfig>(\n\ttables: TTables,\n\tconfig: TConfig,\n): ExtractTablesWithRelations<TConfig, TTables> {\n\tconst tablesConfig = {} as TablesRelationalConfig;\n\n\tfor (const [tsName, table] of Object.entries(tables)) {\n\t\ttablesConfig[tsName] = {\n\t\t\ttable,\n\t\t\tname: tsName,\n\t\t\trelations: config[tsName] ?? {},\n\t\t};\n\t}\n\n\treturn processRelations(tablesConfig, tables) as any;\n}\n\n/** Builds relational config only for tables present in relational config */\nexport function buildRelationsParts<TTables extends Schema, TConfig extends AnyRelationsBuilderConfig>(\n\ttables: TTables,\n\tconfig: TConfig,\n): ExtractTablesWithRelationsParts<TConfig, TTables> {\n\tconst tablesConfig = {} as TablesRelationalConfig;\n\n\tfor (const [tsName, relations] of Object.entries(config)) {\n\t\tif (!relations || !tables[tsName]) continue;\n\t\ttablesConfig[tsName] = {\n\t\t\ttable: tables[tsName],\n\t\t\tname: tsName,\n\t\t\trelations,\n\t\t};\n\t}\n\n\treturn processRelations(tablesConfig, tables) as any;\n}\n\nexport type RelationsRecord = Record<string, AnyRelation>;\nexport type EmptyRelations = {};\nexport type AnyRelations = TablesRelationalConfig;\n\nexport abstract class Relation<\n\tTTargetTableName extends string = string,\n> {\n\tstatic readonly [entityKind]: string = 'RelationV2';\n\tdeclare readonly $brand: 'RelationV2';\n\tdeclare public readonly relationType: 'many' | 'one';\n\n\tfieldName!: string;\n\tsourceColumns!: Column<any>[];\n\ttargetColumns!: Column<any>[];\n\talias: string | undefined;\n\twhere: AnyTableFilter | undefined;\n\tsourceTable!: SchemaEntry;\n\ttargetTable: SchemaEntry;\n\tthrough?: {\n\t\tsource: RelationsBuilderColumnBase[];\n\t\ttarget: RelationsBuilderColumnBase[];\n\t};\n\tthroughTable?: SchemaEntry;\n\tisReversed?: boolean;\n\n\t/** @internal */\n\tsourceColumnTableNames: string[] = [];\n\t/** @internal */\n\ttargetColumnTableNames: string[] = [];\n\n\tconstructor(\n\t\ttargetTable: SchemaEntry,\n\t\treadonly targetTableName: TTargetTableName,\n\t) {\n\t\tthis.targetTable = targetTable;\n\t}\n}\n\nexport type AnyRelation = Relation<string>;\n\nexport class One<\n\tTTargetTableName extends string,\n\tTOptional extends boolean = boolean,\n> extends Relation<TTargetTableName> {\n\tstatic override readonly [entityKind]: string = 'OneV2';\n\tdeclare protected $relationBrand: 'OneV2';\n\n\tpublic override readonly relationType = 'one' as const;\n\n\treadonly optional: TOptional;\n\n\tconstructor(\n\t\ttables: Schema,\n\t\ttargetTable: SchemaEntry,\n\t\ttargetTableName: TTargetTableName,\n\t\tconfig: AnyOneConfig | undefined,\n\t) {\n\t\tsuper(targetTable, targetTableName);\n\t\tthis.alias = config?.alias;\n\t\tthis.where = config?.where;\n\t\tif (config?.from) {\n\t\t\tthis.sourceColumns = ((Array.isArray(config.from)\n\t\t\t\t? config.from\n\t\t\t\t: [config.from]) as RelationsBuilderColumnBase[]).map((it: RelationsBuilderColumnBase) => {\n\t\t\t\t\tthis.throughTable ??= it._.through ? tables[it._.through._.tableName]! as SchemaEntry : undefined;\n\t\t\t\t\tthis.sourceColumnTableNames.push(it._.tableName);\n\t\t\t\t\treturn it._.column as Column;\n\t\t\t\t});\n\t\t}\n\t\tif (config?.to) {\n\t\t\tthis.targetColumns = (Array.isArray(config.to)\n\t\t\t\t? config.to\n\t\t\t\t: [config.to]).map((it: RelationsBuilderColumnBase) => {\n\t\t\t\t\tthis.throughTable ??= it._.through ? tables[it._.through._.tableName]! as SchemaEntry : undefined;\n\t\t\t\t\tthis.targetColumnTableNames.push(it._.tableName);\n\t\t\t\t\treturn it._.column as Column;\n\t\t\t\t});\n\t\t}\n\n\t\tif (this.throughTable) {\n\t\t\tthis.through = {\n\t\t\t\tsource: (Array.isArray(config?.from) ? config.from : config?.from ? [config.from] : []).map((\n\t\t\t\t\tc,\n\t\t\t\t) => c._.through!),\n\t\t\t\ttarget: (Array.isArray(config?.to) ? config.to : config?.to ? [config.to] : []).map((c) => c._.through!),\n\t\t\t};\n\t\t}\n\t\tthis.optional = (config?.optional ?? true) as TOptional;\n\t}\n}\n\nexport type AnyOne = One<string, boolean>;\n\nexport class Many<TTargetTableName extends string> extends Relation<TTargetTableName> {\n\tstatic override readonly [entityKind]: string = 'ManyV2';\n\tdeclare protected $relationBrand: 'ManyV2';\n\n\tpublic override readonly relationType = 'many' as const;\n\n\tconstructor(\n\t\ttables: Schema,\n\t\ttargetTable: SchemaEntry,\n\t\ttargetTableName: TTargetTableName,\n\t\treadonly config: AnyManyConfig | undefined,\n\t) {\n\t\tsuper(targetTable, targetTableName);\n\t\tthis.alias = config?.alias;\n\t\tthis.where = config?.where;\n\t\tif (config?.from) {\n\t\t\tthis.sourceColumns = ((Array.isArray(config.from)\n\t\t\t\t? config.from\n\t\t\t\t: [config.from]) as RelationsBuilderColumnBase[]).map((it: RelationsBuilderColumnBase) => {\n\t\t\t\t\tthis.throughTable ??= it._.through ? tables[it._.through._.tableName]! as SchemaEntry : undefined;\n\t\t\t\t\tthis.sourceColumnTableNames.push(it._.tableName);\n\t\t\t\t\treturn it._.column as Column;\n\t\t\t\t});\n\t\t}\n\t\tif (config?.to) {\n\t\t\tthis.targetColumns = (Array.isArray(config.to)\n\t\t\t\t? config.to\n\t\t\t\t: [config.to]).map((it: RelationsBuilderColumnBase) => {\n\t\t\t\t\tthis.throughTable ??= it._.through ? tables[it._.through._.tableName]! as SchemaEntry : undefined;\n\t\t\t\t\tthis.targetColumnTableNames.push(it._.tableName);\n\t\t\t\t\treturn it._.column as Column;\n\t\t\t\t});\n\t\t}\n\t\tif (this.throughTable) {\n\t\t\tthis.through = {\n\t\t\t\tsource: (Array.isArray(config?.from) ? config.from : config?.from ? [config.from] : []).map((\n\t\t\t\t\tc,\n\t\t\t\t) => c._.through!),\n\t\t\t\ttarget: (Array.isArray(config?.to) ? config.to : config?.to ? [config.to] : []).map((c) => c._.through!),\n\t\t\t};\n\t\t}\n\t}\n}\n\nexport type AnyMany = Many<string>;\n\nexport abstract class AggregatedField<T = unknown> implements SQLWrapper<T> {\n\tstatic readonly [entityKind]: string = 'AggregatedField';\n\n\tdeclare readonly $brand: 'AggregatedField';\n\n\tdeclare readonly _: {\n\t\treadonly data: T;\n\t};\n\n\tprotected table: SchemaEntry | undefined;\n\n\tonTable(table: SchemaEntry) {\n\t\tthis.table = table;\n\n\t\treturn this;\n\t}\n\n\tabstract getSQL(): SQL<T>;\n}\n\nexport class Count extends AggregatedField<number> {\n\tstatic override readonly [entityKind]: string = 'AggregatedFieldCount';\n\n\tdeclare protected $aggregatedFieldBrand: 'Count';\n\n\tprivate query: SQL<number> | undefined;\n\n\tgetSQL(): SQL<number> {\n\t\tif (!this.query) {\n\t\t\tif (!this.table) throw new Error('Table must be set before building aggregate field');\n\t\t\tthis.query = sql`select count(*) as ${sql.identifier('r')} from ${getTableAsAliasSQL(this.table)}`\n\t\t\t\t.mapWith(Number);\n\t\t}\n\n\t\treturn this.query;\n\t}\n}\n\nexport type ExtractObjectValues<T> = T[keyof T];\n\nexport const operators = {\n\tand,\n\tbetween,\n\teq,\n\texists,\n\tgt,\n\tgte,\n\tilike,\n\tinArray,\n\tarrayContains,\n\tarrayContained,\n\tarrayOverlaps,\n\tisNull,\n\tisNotNull,\n\tlike,\n\tlt,\n\tlte,\n\tne,\n\tnot,\n\tnotBetween,\n\tnotExists,\n\tnotLike,\n\tnotIlike,\n\tnotInArray,\n\tor,\n\tsql,\n};\n\nexport type Operators = typeof operators;\n\nexport const orderByOperators = {\n\tsql,\n\tasc,\n\tdesc,\n};\n\nexport type OrderByOperators = typeof orderByOperators;\n\nexport function getOrderByOperators(): OrderByOperators {\n\treturn orderByOperators;\n}\n\nexport type FindTargetTableInRelationalConfig<\n\tTConfig extends TablesRelationalConfig,\n\tTRelation extends AnyRelation,\n> = TConfig[TRelation['targetTableName']];\n\nexport interface SQLOperator {\n\tsql: Operators['sql'];\n}\n\nexport type DBQueryConfigColumns<TColumns extends FieldSelection> = {\n\t[K in keyof TColumns]?: boolean | undefined;\n};\n\nexport type DBQueryConfigExtras<TTable extends SchemaEntry> = Record<\n\tstring,\n\t| SQLWrapper\n\t| ((\n\t\ttable: TTable,\n\t\toperators: SQLOperator,\n\t) => SQLWrapper)\n>;\n\nexport type DBQueryConfigOrderByCallback<TTable extends SchemaEntry> = (\n\ttable: TTable,\n\toperators: OrderByOperators,\n) => ValueOrArray<AnyColumn | SQL>;\n\nexport type DBQueryConfigOrderByObject<TColumns extends FieldSelection> = {\n\t[K in keyof TColumns]?: 'asc' | 'desc' | undefined;\n};\n\nexport type DBQueryConfigOrderBy<TTable extends SchemaEntry, TColumns extends FieldSelection> =\n\t| DBQueryConfigOrderByCallback<TTable>\n\t| DBQueryConfigOrderByObject<TColumns>;\n\nexport type DBQueryConfigWith<TSchema extends TablesRelationalConfig, TRelations extends RelationsRecord> = {\n\t[K in keyof TRelations]?:\n\t\t| boolean\n\t\t| (DBQueryConfig<\n\t\t\tTRelations[K]['relationType'],\n\t\t\tTSchema,\n\t\t\tFindTargetTableInRelationalConfig<TSchema, TRelations[K]>\n\t\t>)\n\t\t| undefined;\n};\n\nexport type DBQueryConfig<\n\tTRelationType extends 'one' | 'many' = 'one' | 'many',\n\tTSchema extends TablesRelationalConfig = TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig = TableRelationalConfig,\n> =\n\t& (TTableConfig['relations'] extends Record<string, never> ? {}\n\t\t: {\n\t\t\twith?:\n\t\t\t\t| DBQueryConfigWith<TSchema, TTableConfig['relations']>\n\t\t\t\t| undefined;\n\t\t})\n\t& {\n\t\tcolumns?: DBQueryConfigColumns<GetTableViewFieldSelection<TTableConfig['table']>> | undefined;\n\t\twhere?: RelationsFilter<TTableConfig, TSchema> | undefined;\n\t\textras?:\n\t\t\t| DBQueryConfigExtras<TTableConfig['table']>\n\t\t\t| undefined;\n\t\torderBy?:\n\t\t\t| DBQueryConfigOrderBy<TTableConfig['table'], GetTableViewFieldSelection<TTableConfig['table']>>\n\t\t\t| undefined;\n\t\toffset?: number | Placeholder | undefined;\n\t}\n\t& (TRelationType extends 'many' ? {\n\t\t\tlimit?: number | Placeholder | undefined;\n\t\t}\n\t\t: {});\n\nexport type DBQueryConfigWithComment<\n\tTRelationType extends 'one' | 'many' = 'one' | 'many',\n\tTSchema extends TablesRelationalConfig = TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig = TableRelationalConfig,\n> = DBQueryConfig<TRelationType, TSchema, TTableConfig> & {\n\t/**\n\t * Attach [sqlcommenter](https://google.github.io/sqlcommenter) comment to a query\n\t */\n\tcomment?: CommentInput | undefined;\n};\n\nexport type AnyDBQueryConfig = {\n\tcolumns?:\n\t\t| DBQueryConfigColumns<GetTableViewFieldSelection<TableRelationalConfig['table']>>\n\t\t| undefined;\n\twhere?: RelationsFilter<TableRelationalConfig, TablesRelationalConfig> | undefined;\n\textras?:\n\t\t| DBQueryConfigExtras<TableRelationalConfig['table']>\n\t\t| undefined;\n\twith?:\n\t\t| Record<string, AnyDBQueryConfig>\n\t\t| undefined;\n\torderBy?:\n\t\t| DBQueryConfigOrderBy<TableRelationalConfig['table'], GetTableViewFieldSelection<TableRelationalConfig['table']>>\n\t\t| undefined;\n\toffset?: number | Placeholder | undefined;\n\tlimit?: number | Placeholder | undefined;\n\tcomment?: CommentInput | undefined;\n};\n\nexport interface TableRelationalConfig {\n\ttable: SchemaEntry;\n\tname: string;\n\trelations: RelationsRecord;\n}\n\nexport type TablesRelationalConfig = Record<string, TableRelationalConfig>;\n\nexport type ExtractTablesWithRelations<\n\tTConfig extends AnyRelationsBuilderConfig,\n\tTTables extends Schema,\n> = {\n\t[K in keyof TTables]: {\n\t\ttable: TTables[K];\n\t\tname: K & string;\n\t\trelations: TConfig extends { [CK in K]: Record<string, any> } ? TConfig[K] : {};\n\t};\n};\n\nexport type ExtractTablesWithRelationsParts<\n\tTConfig extends AnyRelationsBuilderConfig,\n\tTTables extends Schema,\n> = {\n\t[K in NonUndefinedKeysOnly<TConfig> & keyof TTables]: {\n\t\ttable: TTables[K & string];\n\t\tname: K & string;\n\t\trelations: TConfig[K] extends Record<string, any> ? TConfig[K] : {};\n\t};\n};\n\nexport type ReturnTypeOrValue<T> = T extends (...args: any[]) => infer R ? R\n\t: T;\n\nexport type RelationResultKind<TResult, TInclude, TRelation extends AnyRelation> = TRelation extends AnyOne ? (\n\t\t| TResult\n\t\t| (Equal<TRelation['optional'], true> extends true ? null\n\t\t\t: TInclude extends Record<string, unknown> ? TInclude['where'] extends Record<string, any> ? null\n\t\t\t\t: never\n\t\t\t: never)\n\t)\n\t: TResult[];\n\nexport type BuildRelationResult<\n\tTConfig extends TablesRelationalConfig,\n\tTInclude,\n\tTRelations extends RelationsRecord,\n> = {\n\t[\n\t\tK in\n\t\t\t& TruthyKeysOnly<TInclude>\n\t\t\t& keyof TRelations\n\t]: TRelations[K] extends infer TRel extends AnyRelation ? RelationResultKind<\n\t\t\tBuildQueryResult<\n\t\t\t\tTConfig,\n\t\t\t\tFindTargetTableInRelationalConfig<TConfig, TRel>,\n\t\t\t\tAssume<TInclude[K], true | Record<string, unknown>>\n\t\t\t>,\n\t\t\tTInclude[K],\n\t\t\tTRel\n\t\t>\n\t\t: TRelations[K] extends AggregatedField<infer TData> ? TData\n\t\t: never;\n};\n\nexport type NonUndefinedKeysOnly<T> = {\n\t[K in keyof T]: T[K] extends undefined ? never : K;\n}[keyof T];\n\nexport type TruthyKeysOnly<T> = {\n\t[K in keyof T]: T[K] extends undefined | false ? never : K;\n}[keyof T];\n\nexport type InferRelationalQueryTableResult<\n\tTRawSelection extends Record<string, unknown>,\n\tTSelectedFields extends Record<string, unknown> | 'Full' = 'Full',\n> = TSelectedFields extends 'Full' ? TRawSelection : {\n\t[\n\t\tK in Equal<\n\t\t\tExclude<\n\t\t\t\tTSelectedFields[\n\t\t\t\t\t& keyof TSelectedFields\n\t\t\t\t\t& keyof TRawSelection\n\t\t\t\t],\n\t\t\t\tundefined\n\t\t\t>,\n\t\t\tfalse\n\t\t> extends true ? Exclude<\n\t\t\t\tkeyof TRawSelection,\n\t\t\t\tNonUndefinedKeysOnly<TSelectedFields>\n\t\t\t>\n\t\t\t:\n\t\t\t\t& {\n\t\t\t\t\t[K in keyof TSelectedFields]: Equal<\n\t\t\t\t\t\tTSelectedFields[K],\n\t\t\t\t\t\ttrue\n\t\t\t\t\t> extends true ? K\n\t\t\t\t\t\t: never;\n\t\t\t\t}[keyof TSelectedFields]\n\t\t\t\t& keyof TRawSelection\n\t]: TRawSelection[K];\n};\n\nexport type BuildQueryResult<\n\tTSchema extends TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig,\n\tTFullSelection extends true | Record<string, unknown>,\n\tTModel extends Record<string, unknown> = Assume<\n\t\tTTableConfig['table'],\n\t\t{ $inferSelect: Record<string, unknown> }\n\t>['$inferSelect'],\n> = TFullSelection extends true | Record<string, never> ? TModel\n\t: TFullSelection extends Record<string, unknown> ? Simplify<\n\t\t\t& (InferRelationalQueryTableResult<\n\t\t\t\tTModel,\n\t\t\t\tTFullSelection['columns'] extends Record<string, unknown> ? TFullSelection['columns'] : 'Full'\n\t\t\t>)\n\t\t\t& (TFullSelection['extras'] extends Record<string, SQLWrapper | ((...args: any[]) => SQLWrapper)> ? {\n\t\t\t\t\t[\n\t\t\t\t\t\tK in NonUndefinedKeysOnly<\n\t\t\t\t\t\t\tReturnTypeOrValue<TFullSelection['extras']>\n\t\t\t\t\t\t>\n\t\t\t\t\t]: ReturnType<\n\t\t\t\t\t\tAssume<\n\t\t\t\t\t\t\tReturnTypeOrValue<TFullSelection['extras'][K & string]>,\n\t\t\t\t\t\t\tSQLWrapper\n\t\t\t\t\t\t>['getSQL']\n\t\t\t\t\t>['_']['type'];\n\t\t\t\t}\n\t\t\t\t: {})\n\t\t\t& (TFullSelection['with'] extends Record<string, unknown> ? BuildRelationResult<\n\t\t\t\t\tTSchema,\n\t\t\t\t\tTFullSelection['with'],\n\t\t\t\t\tTTableConfig['relations']\n\t\t\t\t>\n\t\t\t\t: {})\n\t\t>\n\t: never;\n\nexport interface BuildRelationalQueryResult {\n\tselection: {\n\t\tkey: string;\n\t\tfield: Column<any> | Table | View | SQL | SQL.Aliased | SQLWrapper | AggregatedField;\n\t\t/** For array type relations */\n\t\tisArray?: boolean;\n\t\tselection?: BuildRelationalQueryResult['selection'];\n\t\tisOptional?: boolean;\n\t\tcodec?: NormalizeCodec | NormalizeArrayCodec;\n\t\t/** For array type columns */\n\t\tarrayDimensions?: number;\n\t}[];\n\tsql: SQL;\n}\n\nexport function mapRelationalRow(\n\trows: Record<string, unknown> | Record<string, unknown>[],\n\tisOne: boolean,\n\tbuildQueryResultSelection: BuildRelationalQueryResult['selection'],\n\t/** Needed for SQLite as it returns JSON values as strings */\n\tparseJson: boolean = false,\n\t/** Needed for SingleStore as it returns JSON arrays as strings */\n\tparseJsonIfString: boolean = false,\n\t/** Root level data of query is usually not nested in JSON */\n\tuseJsonMappers: boolean = true,\n): Record<string, unknown> | Record<string, unknown>[] {\n\tconst maxIdx = isOne ? 1 : (rows as Record<string, unknown>[]).length;\n\tconst decoders: (undefined | ((v: any) => any))[] = buildQueryResultSelection.map(\n\t\t({ field, codec, arrayDimensions }) => {\n\t\t\tlet decoder;\n\t\t\tif (is(field, Column)) {\n\t\t\t\tdecoder = field;\n\t\t\t} else if (is(field, SQL)) {\n\t\t\t\tdecoder = field.decoder;\n\t\t\t} else if (is(field, SQL.Aliased)) {\n\t\t\t\tdecoder = field.sql.decoder;\n\t\t\t} else if (is(field, Table) || is(field, View)) {\n\t\t\t\tdecoder = noopDecoder;\n\t\t\t} else {\n\t\t\t\tdecoder = field.getSQL().decoder;\n\t\t\t}\n\n\t\t\t// Support for old custom column JSON field API\n\t\t\tif (useJsonMappers && (<any> field).mapFromJsonValue) {\n\t\t\t\treturn (v) => (<(value: unknown) => unknown> (<any> field).mapFromJsonValue)(v);\n\t\t\t}\n\n\t\t\treturn decoder.mapFromDriverValue.isNoop\n\t\t\t\t? codec\n\t\t\t\t\t? (value) => codec(value, arrayDimensions!)\n\t\t\t\t\t: undefined\n\t\t\t\t: codec\n\t\t\t\t? (value) => decoder.mapFromDriverValue(codec(value, arrayDimensions!))\n\t\t\t\t: (value) => decoder.mapFromDriverValue(value);\n\t\t},\n\t);\n\n\tfor (let i = 0; i < maxIdx; ++i) {\n\t\tconst row = (isOne ? rows : (rows as Record<string, unknown>[])[i]) as Record<string, unknown>;\n\n\t\tfor (let selectionItemIdx = 0; selectionItemIdx < buildQueryResultSelection.length; ++selectionItemIdx) {\n\t\t\tconst selectionItem = buildQueryResultSelection[selectionItemIdx]!;\n\n\t\t\tif (selectionItem.selection) {\n\t\t\t\tif (row[selectionItem.key] === null) continue;\n\n\t\t\t\tif (parseJson) {\n\t\t\t\t\trow[selectionItem.key] = JSON.parse(row[selectionItem.key] as string);\n\t\t\t\t\tif (row[selectionItem.key] === null) continue;\n\t\t\t\t} else if (parseJsonIfString && typeof row[selectionItem.key] === 'string') {\n\t\t\t\t\trow[selectionItem.key] = JSON.parse(row[selectionItem.key] as string);\n\t\t\t\t}\n\n\t\t\t\tif (selectionItem.isArray) {\n\t\t\t\t\tmapRelationalRow(\n\t\t\t\t\t\trow[selectionItem.key] as Array<Record<string, unknown>>,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tselectionItem.selection!,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tparseJsonIfString,\n\t\t\t\t\t);\n\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tmapRelationalRow(\n\t\t\t\t\trow[selectionItem.key] as Record<string, unknown>,\n\t\t\t\t\ttrue,\n\t\t\t\t\tselectionItem.selection!,\n\t\t\t\t\tfalse,\n\t\t\t\t\tparseJsonIfString,\n\t\t\t\t);\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (row[selectionItem.key] === null) continue;\n\n\t\t\tconst decoder = decoders[selectionItemIdx];\n\t\t\tif (!decoder) continue;\n\n\t\t\trow[selectionItem.key] = decoder(row[selectionItem.key]);\n\t\t}\n\t}\n\n\treturn rows;\n}\n\nexport function mapRelationalRowFromArrays(\n\trows: unknown[][] | unknown[],\n\tisOne: boolean,\n\tbuildQueryResultSelection: BuildRelationalQueryResult['selection'],\n\t/** Needed for SQLite as it returns JSON values as strings */\n\tparseJson: boolean = false,\n\t/** Needed for SingleStore as it returns JSON arrays as strings */\n\tparseJsonIfString: boolean = false,\n): Record<string, unknown> | Record<string, unknown>[] {\n\tconst maxIdx = isOne ? 1 : rows.length;\n\tconst decoders: (undefined | ((v: any) => any))[] = buildQueryResultSelection.map(\n\t\t({ field, codec, arrayDimensions }) => {\n\t\t\tlet decoder;\n\t\t\tif (is(field, Column)) {\n\t\t\t\tdecoder = field;\n\t\t\t} else if (is(field, SQL)) {\n\t\t\t\tdecoder = field.decoder;\n\t\t\t} else if (is(field, SQL.Aliased)) {\n\t\t\t\tdecoder = field.sql.decoder;\n\t\t\t} else if (is(field, Table) || is(field, View)) {\n\t\t\t\tdecoder = noopDecoder;\n\t\t\t} else {\n\t\t\t\tdecoder = field.getSQL().decoder;\n\t\t\t}\n\n\t\t\treturn decoder.mapFromDriverValue.isNoop\n\t\t\t\t? codec\n\t\t\t\t\t? (value) => codec(value, arrayDimensions!)\n\t\t\t\t\t: undefined\n\t\t\t\t: codec\n\t\t\t\t? (value) => decoder.mapFromDriverValue(codec(value, arrayDimensions!))\n\t\t\t\t: (value) => decoder.mapFromDriverValue(value);\n\t\t},\n\t);\n\n\tconst results: Record<string, unknown>[] = Array.from({ length: maxIdx });\n\n\tfor (let i = 0; i < maxIdx; ++i) {\n\t\tconst row = (isOne ? rows : rows[i]!) as unknown[];\n\t\tconst result: Record<string, unknown> = {};\n\n\t\tfor (let selectionItemIdx = 0; selectionItemIdx < buildQueryResultSelection.length; ++selectionItemIdx) {\n\t\t\tconst selectionItem = buildQueryResultSelection[selectionItemIdx]!;\n\t\t\tlet value = row[selectionItemIdx];\n\n\t\t\tif (selectionItem.selection) {\n\t\t\t\tif (value === null) {\n\t\t\t\t\tresult[selectionItem.key] = null;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (parseJson) {\n\t\t\t\t\tvalue = JSON.parse(value as string);\n\t\t\t\t\tif (value === null) {\n\t\t\t\t\t\tresult[selectionItem.key] = null;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t} else if (parseJsonIfString && typeof value === 'string') {\n\t\t\t\t\tvalue = JSON.parse(value);\n\t\t\t\t}\n\n\t\t\t\tif (selectionItem.isArray) {\n\t\t\t\t\tmapRelationalRow(\n\t\t\t\t\t\tvalue as Array<Record<string, unknown>>,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tselectionItem.selection!,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tparseJsonIfString,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tmapRelationalRow(\n\t\t\t\t\t\tvalue as Record<string, unknown>,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\tselectionItem.selection!,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tparseJsonIfString,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tresult[selectionItem.key] = value;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (value === null) {\n\t\t\t\tresult[selectionItem.key] = null;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst decoder = decoders[selectionItemIdx];\n\t\t\tresult[selectionItem.key] = decoder ? decoder(value) : value;\n\t\t}\n\n\t\tresults[i] = result;\n\t}\n\n\treturn isOne ? results[0]! : results;\n}\n\nexport interface RelationalRowsMapper<T = any> {\n\t(rows: unknown[][] | Record<string, unknown>[]): T;\n\t/** @internal jit mapper's function body for debugging */\n\tbody?: string;\n}\n\nexport type RelationalRowsMapperGenerator<T = any> = (\n\tconfig: RelationalQueryMapperConfig,\n) => RelationalRowsMapper<T>;\n\nexport function makeDefaultRqbMapper<T = any>(\n\t{ selection, isFirst, parseJson, parseJsonIfString, rootJsonMappers, arrayModeRoot }: RelationalQueryMapperConfig,\n): RelationalRowsMapper<T> {\n\treturn ((rows) => {\n\t\tif (isFirst && !rows[0]) return rows[0];\n\n\t\treturn arrayModeRoot\n\t\t\t? mapRelationalRowFromArrays(\n\t\t\t\t(isFirst ? rows[0]! : rows) as unknown[][] | unknown[],\n\t\t\t\tisFirst,\n\t\t\t\tselection,\n\t\t\t\tparseJson,\n\t\t\t\tparseJsonIfString,\n\t\t\t)\n\t\t\t: mapRelationalRow(\n\t\t\t\t(isFirst ? rows[0]! : rows) as Record<string, unknown>[] | Record<string, unknown>,\n\t\t\t\tisFirst,\n\t\t\t\tselection,\n\t\t\t\tparseJson,\n\t\t\t\tparseJsonIfString,\n\t\t\t\trootJsonMappers,\n\t\t\t);\n\t}) as RelationalRowsMapper<T>;\n}\n\nfunction makeJitRqbMapperInner(\n\tselection: BuildRelationalQueryResult['selection'],\n\trowExpr: string,\n\tselectionVar: string,\n\t/** Needed for SQLite as it returns JSON values as strings */\n\tparseJson: boolean,\n\t/** Needed for SingleStore as it returns JSON arrays as strings */\n\tparseJsonIfString: boolean,\n\t/** Root level data of query is usually not nested in JSON */\n\tuseJsonMappers: boolean,\n\tpreFn: string[],\n\tcounter: { n: number },\n\taccessByIdx: boolean,\n): { bodyStmts: string[]; literal: string; hasWork: boolean } {\n\tconst bodyStmts: string[] = [];\n\tconst literalEntries: string[] = [];\n\tlet hasWork = false;\n\n\tconst fieldVars: string[] = selection.map(() => `c${counter.n++}`);\n\tconst destructurePieces = selection.map((item, idx) =>\n\t\taccessByIdx ? fieldVars[idx]! : `${JSON.stringify(item.key)}: ${fieldVars[idx]}`\n\t);\n\tbodyStmts.push(\n\t\taccessByIdx\n\t\t\t? `let [ ${destructurePieces.join(', ')} ] = ${rowExpr};`\n\t\t\t: `let { ${destructurePieces.join(', ')} } = ${rowExpr};`,\n\t);\n\n\tfor (\n\t\tconst [idx, { field, key, codec, isArray, selection: innerSelection, arrayDimensions }] of selection\n\t\t\t.entries()\n\t) {\n\t\tconst sel = `${selectionVar}[${idx}]`;\n\t\tconst keyStr = JSON.stringify(key);\n\t\tconst slot = fieldVars[idx]!;\n\n\t\tif (innerSelection) {\n\t\t\tif (parseJson) {\n\t\t\t\tbodyStmts.push(`if (${slot} !== null) ${slot} = JSON.parse(${slot});`);\n\t\t\t\thasWork = true;\n\t\t\t} else if (parseJsonIfString) {\n\t\t\t\tbodyStmts.push(`if (typeof ${slot} === 'string') ${slot} = JSON.parse(${slot});`);\n\t\t\t\thasWork = true;\n\t\t\t}\n\n\t\t\tconst nestedSelVar = `s${counter.n++}`;\n\t\t\tconst savedPreFnLen = preFn.length;\n\t\t\tpreFn.push(`const { selection: ${nestedSelVar} } = ${sel};`);\n\n\t\t\tif (isArray) {\n\t\t\t\tconst j = `j${counter.n++}`;\n\t\t\t\tconst inner = makeJitRqbMapperInner(\n\t\t\t\t\tinnerSelection,\n\t\t\t\t\t`${slot}[${j}]`,\n\t\t\t\t\tnestedSelVar,\n\t\t\t\t\tfalse,\n\t\t\t\t\tparseJsonIfString,\n\t\t\t\t\ttrue,\n\t\t\t\t\tpreFn,\n\t\t\t\t\tcounter,\n\t\t\t\t\tfalse,\n\t\t\t\t);\n\t\t\t\tif (inner.hasWork) {\n\t\t\t\t\thasWork = true;\n\t\t\t\t\tbodyStmts.push(`if (${slot} !== null) {`);\n\t\t\t\t\tbodyStmts.push(`\\tfor (let ${j} = 0; ${j} < ${slot}.length; ++${j}) {`);\n\t\t\t\t\tfor (const s of inner.bodyStmts) bodyStmts.push(`\\t\\t${s}`);\n\t\t\t\t\tbodyStmts.push(`\\t\\t${slot}[${j}] = ${inner.literal};`);\n\t\t\t\t\tbodyStmts.push(`\\t}`);\n\t\t\t\t\tbodyStmts.push(`}`);\n\t\t\t\t} else {\n\t\t\t\t\tpreFn.splice(savedPreFnLen, 1);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst inner = makeJitRqbMapperInner(\n\t\t\t\t\tinnerSelection,\n\t\t\t\t\tslot,\n\t\t\t\t\tnestedSelVar,\n\t\t\t\t\tfalse,\n\t\t\t\t\tparseJsonIfString,\n\t\t\t\t\ttrue,\n\t\t\t\t\tpreFn,\n\t\t\t\t\tcounter,\n\t\t\t\t\tfalse,\n\t\t\t\t);\n\t\t\t\tif (inner.hasWork) {\n\t\t\t\t\thasWork = true;\n\t\t\t\t\tbodyStmts.push(`if (${slot} !== null) {`);\n\t\t\t\t\tfor (const s of inner.bodyStmts) bodyStmts.push(`\\t${s}`);\n\t\t\t\t\tbodyStmts.push(`\\t${slot} = ${inner.literal};`);\n\t\t\t\t\tbodyStmts.push(`}`);\n\t\t\t\t} else {\n\t\t\t\t\tpreFn.splice(savedPreFnLen, 1);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tliteralEntries.push(`${keyStr}: ${slot}`);\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet decoderExpr = '';\n\t\tlet destructure = '';\n\t\tlet bypassCodecs = false;\n\t\tif (is(field, Column)) {\n\t\t\tif (useJsonMappers && (<any> field).mapFromJsonValue) {\n\t\t\t\tbypassCodecs = true;\n\t\t\t\tconst id = counter.n++;\n\t\t\t\tdestructure = `field: dec${id}`;\n\t\t\t\tdecoderExpr = `dec${id}.mapFromJsonValue`;\n\t\t\t} else if (!field.mapFromDriverValue.isNoop) {\n\t\t\t\tconst id = counter.n++;\n\t\t\t\tdestructure = `field: dec${id}`;\n\t\t\t\tdecoderExpr = `dec${id}.mapFromDriverValue`;\n\t\t\t}\n\t\t} else if (is(field, SQL)) {\n\t\t\tif (useJsonMappers && (<any> field.decoder).mapFromJsonValue) {\n\t\t\t\tbypassCodecs = true;\n\t\t\t\tconst id = counter.n++;\n\t\t\t\tdestructure = `field: { decoder: dec${id} }`;\n\t\t\t\tdecoderExpr = `dec${id}.mapFromJsonValue`;\n\t\t\t} else if (!field.decoder.mapFromDriverValue.isNoop) {\n\t\t\t\tconst id = counter.n++;\n\t\t\t\tdestructure = `field: { decoder: dec${id} }`;\n\t\t\t\tdecoderExpr = `dec${id}.mapFromDriverValue`;\n\t\t\t}\n\t\t} else if (is(field, SQL.Aliased)) {\n\t\t\tif (useJsonMappers && (<any> field.sql.decoder).mapFromJsonValue) {\n\t\t\t\tbypassCodecs = true;\n\t\t\t\tconst id = counter.n++;\n\t\t\t\tdestructure = `field: { sql: { decoder: dec${id} } }`;\n\t\t\t\tdecoderExpr = `dec${id}.mapFromJsonValue`;\n\t\t\t} else if (!field.sql.decoder.mapFromDriverValue.isNoop) {\n\t\t\t\tconst id = counter.n++;\n\t\t\t\tdestructure = `field: { sql: { decoder: dec${id} } }`;\n\t\t\t\tdecoderExpr = `dec${id}.mapFromDriverValue`;\n\t\t\t}\n\t\t} else if (is(field, Table) || is(field, View)) {\n\t\t\t// no decoder\n\t\t} else {\n\t\t\tconst sqlExpr = field.getSQL();\n\n\t\t\tif (useJsonMappers && (<any> sqlExpr.decoder).mapFromJsonValue) {\n\t\t\t\tbypassCodecs = true;\n\t\t\t\tconst id = counter.n++;\n\t\t\t\tpreFn.push(`const dec${id} = ${sel}.field.getSQL().decoder;`);\n\t\t\t\tdecoderExpr = `dec${id}.mapFromJsonValue`;\n\t\t\t} else if (!sqlExpr.decoder.mapFromDriverValue.isNoop) {\n\t\t\t\tconst id = counter.n++;\n\t\t\t\tpreFn.push(`const dec${id} = ${sel}.field.getSQL().decoder;`);\n\t\t\t\tdecoderExpr = `dec${id}.mapFromDriverValue`;\n\t\t\t}\n\t\t}\n\n\t\tlet codecVar = '';\n\t\tif (!bypassCodecs && codec) {\n\t\t\tcodecVar = `codec${counter.n++}`;\n\t\t}\n\n\t\tif (destructure || codecVar) {\n\t\t\tconst parts: string[] = [];\n\t\t\tif (destructure) parts.push(destructure);\n\t\t\tif (codecVar) parts.push(`codec: ${codecVar}`);\n\t\t\tpreFn.push(`const { ${parts.join(', ')} } = ${sel};`);\n\t\t}\n\n\t\tif (decoderExpr || codecVar) {\n\t\t\thasWork = true;\n\t\t\tlet decoded = slot;\n\t\t\tif (codecVar) decoded = `${codecVar}(${decoded}, ${arrayDimensions})`;\n\t\t\tif (decoderExpr) decoded = `${decoderExpr}(${decoded})`;\n\t\t\tliteralEntries.push(`${keyStr}: ${slot} === null ? null : ${decoded}`);\n\t\t} else {\n\t\t\tliteralEntries.push(`${keyStr}: ${slot}`);\n\t\t}\n\t}\n\n\tconst literal = `{ ${literalEntries.join(', ')} }`;\n\n\treturn { bodyStmts, literal, hasWork };\n}\n\nexport interface RelationalQueryMapperConfig {\n\tselection: BuildRelationalQueryResult['selection'];\n\t/** Used for `db.query.table.findFirst(...)` */\n\tisFirst: boolean;\n\t/** Used by SQLite & drivers that return JSON-s as strings by default */\n\tparseJson: boolean;\n\t/** Used by SingleStore to fix malformed outputs for empty JSON arrays */\n\tparseJsonIfString: boolean;\n\t/** Enable for non-reworked dialects & drivers with JSON-ified root level of relational query */\n\trootJsonMappers: boolean;\n\t/** Used when root level of data is in array mode */\n\tarrayModeRoot?: boolean;\n}\n\nexport function makeJitRqbMapper<T = unknown>(\n\t{ selection, isFirst, parseJson, parseJsonIfString, rootJsonMappers, arrayModeRoot }: RelationalQueryMapperConfig,\n): RelationalRowsMapper<T> {\n\tconst preFn: string[] = [];\n\tconst counter = { n: 0 };\n\n\tconst inner = makeJitRqbMapperInner(\n\t\tselection,\n\t\t'row',\n\t\t'selection',\n\t\tparseJson,\n\t\tparseJsonIfString,\n\t\tarrayModeRoot ? false : rootJsonMappers,\n\t\tpreFn,\n\t\tcounter,\n\t\t!!arrayModeRoot,\n\t);\n\n\tconst lines: string[] = [];\n\tlines.push(`\\t\"use strict\";\n\tconst { selection } = this;`);\n\tfor (const p of preFn) lines.push(`\\t${p}`);\n\n\tif (arrayModeRoot) {\n\t\tif (isFirst) {\n\t\t\tlines.push(`\\tconst row = rows[0];`);\n\t\t\tlines.push(`\\tif (!row) return undefined;`);\n\t\t\tfor (const s of inner.bodyStmts) lines.push(`\\t${s}`);\n\t\t\tlines.push(`\\treturn ${inner.literal};`);\n\t\t} else {\n\t\t\tlines.push(`\\tconst { length } = rows;`);\n\t\t\tlines.push(`\\tconst mapped = Array.from({ length });`);\n\t\t\tlines.push(`\\tfor (let i = 0; i < length; ++i) {`);\n\t\t\tlines.push(`\\t\\tconst row = rows[i];`);\n\t\t\tfor (const s of inner.bodyStmts) lines.push(`\\t\\t${s}`);\n\t\t\tlines.push(`\\t\\tmapped[i] = ${inner.literal};`);\n\t\t\tlines.push(`\\t}`);\n\t\t\tlines.push(`\\treturn mapped;`);\n\t\t}\n\t} else if (!inner.hasWork) {\n\t\tlines.push(isFirst ? `\\treturn rows[0];` : `\\treturn rows;`);\n\t} else if (isFirst) {\n\t\tlines.push(`\\tconst row = rows[0];`);\n\t\tlines.push(`\\tif (!row) return undefined;`);\n\t\tfor (const s of inner.bodyStmts) lines.push(`\\t${s}`);\n\t\tlines.push(`\\trows[0] = ${inner.literal};`);\n\t\tlines.push(`\\treturn rows[0];`);\n\t} else {\n\t\tlines.push(`\\tfor (let i = 0; i < rows.length; ++i) {`);\n\t\tlines.push(`\\t\\tconst row = rows[i];`);\n\t\tfor (const s of inner.bodyStmts) lines.push(`\\t\\t${s}`);\n\t\tlines.push(`\\t\\trows[i] = ${inner.literal};`);\n\t\tlines.push(`\\t}`);\n\t\tlines.push(`\\treturn rows;`);\n\t}\n\n\tlines.push('\\t//# sourceURL=drizzle:jit-relational-query-mapper');\n\tconst compiled = lines.join('\\n');\n\n\treturn Object.assign(\n\t\tnew FnConstructor(\n\t\t\t'rows',\n\t\t\tcompiled,\n\t\t).bind({\n\t\t\tselection,\n\t\t}),\n\t\t{ body: `function jitRqbMapper (rows) {\\n${compiled}\\n}` },\n\t) as RelationalRowsMapper<T>;\n}\n\nexport class RelationsBuilderTable<TTableName extends string = string> {\n\tstatic readonly [entityKind]: string = 'RelationsBuilderTable';\n\n\tprotected readonly _: {\n\t\treadonly name: TTableName;\n\t\treadonly table: SchemaEntry;\n\t};\n\n\tconstructor(table: SchemaEntry, name: TTableName) {\n\t\tthis._ = {\n\t\t\tname,\n\t\t\ttable,\n\t\t};\n\t}\n}\n\nexport interface RelationsBuilderColumnConfig<\n\tTTableName extends string = string,\n> {\n\treadonly tableName: TTableName;\n\treadonly column: FieldValue;\n\treadonly through?: RelationsBuilderColumnBase;\n\treadonly key: string;\n}\n\nexport interface RelationsBuilderColumnBase<\n\tTTableName extends string = string,\n> {\n\t_: RelationsBuilderColumnConfig<TTableName>;\n}\n\nexport class RelationsBuilderColumn<\n\tTTableName extends string = string,\n> implements RelationsBuilderColumnBase<TTableName> {\n\tstatic readonly [entityKind]: string = 'RelationsBuilderColumn';\n\n\treadonly _: {\n\t\treadonly tableName: TTableName;\n\t\treadonly column: FieldValue;\n\t\treadonly key: string;\n\t};\n\n\tconstructor(\n\t\tcolumn: FieldValue,\n\t\ttableName: TTableName,\n\t\tkey: string,\n\t) {\n\t\tthis._ = {\n\t\t\ttableName: tableName,\n\t\t\tcolumn,\n\t\t\tkey,\n\t\t};\n\t}\n\n\tthrough(column: RelationsBuilderColumn): RelationsBuilderJunctionColumn<TTableName> {\n\t\treturn new RelationsBuilderJunctionColumn(\n\t\t\tthis._.column,\n\t\t\tthis._.tableName,\n\t\t\tthis._.key,\n\t\t\tcolumn,\n\t\t);\n\t}\n}\n\nexport class RelationsBuilderJunctionColumn<\n\tTTableName extends string = string,\n> implements RelationsBuilderColumnBase<TTableName> {\n\tstatic readonly [entityKind]: string = 'RelationsBuilderColumn';\n\n\treadonly _: {\n\t\treadonly tableName: TTableName;\n\t\treadonly column: FieldValue;\n\t\treadonly through: RelationsBuilderColumnBase;\n\t\treadonly key: string;\n\t};\n\n\tconstructor(\n\t\tcolumn: FieldValue,\n\t\ttableName: TTableName,\n\t\tkey: string,\n\t\tthrough: RelationsBuilderColumnBase,\n\t) {\n\t\tthis._ = {\n\t\t\ttableName: tableName,\n\t\t\tcolumn,\n\t\t\tthrough,\n\t\t\tkey,\n\t\t};\n\t}\n}\n\nexport interface RelationFieldsFilterInternals<T> {\n\teq?: T | Placeholder | undefined;\n\tne?: T | Placeholder | undefined;\n\tgt?: T | Placeholder | undefined;\n\tgte?: T | Placeholder | undefined;\n\tlt?: T | Placeholder | undefined;\n\tlte?: T | Placeholder | undefined;\n\tin?: (T | Placeholder)[] | Placeholder | undefined;\n\tnotIn?: (T | Placeholder)[] | Placeholder | undefined;\n\tarrayContains?: (T extends Array<infer E> ? (E | Placeholder)[] : (T | Placeholder)[]) | Placeholder | undefined;\n\tarrayContained?: (T extends Array<infer E> ? (E | Placeholder)[] : (T | Placeholder)[]) | Placeholder | undefined;\n\tarrayOverlaps?: (T extends Array<infer E> ? (E | Placeholder)[] : (T | Placeholder)[]) | Placeholder | undefined;\n\tlike?: string | Placeholder | undefined;\n\tilike?: string | Placeholder | undefined;\n\tnotLike?: string | Placeholder | undefined;\n\tnotIlike?: string | Placeholder | undefined;\n\tisNull?: true | undefined;\n\tisNotNull?: true | undefined;\n\tNOT?: RelationsFieldFilter<T> | undefined;\n\tOR?: RelationsFieldFilter<T>[] | undefined;\n\tAND?: RelationsFieldFilter<T>[] | undefined;\n}\n\nexport type RelationsFieldFilter<T = unknown> =\n\t| RelationFieldsFilterInternals<T>\n\t| (\n\t\tunknown extends T ? never : T extends object ? never : T\n\t)\n\t// Bleeds into filters - discuss removal\n\t| Placeholder;\n\nexport interface RelationsFilterCommons<\n\tTTable extends TableRelationalConfig = TableRelationalConfig,\n\tTSchema extends TablesRelationalConfig = TablesRelationalConfig,\n> {\n\tOR?: RelationsFilter<TTable, TSchema>[] | undefined;\n\tNOT?: RelationsFilter<TTable, TSchema> | undefined;\n\tAND?: RelationsFilter<TTable, TSchema>[] | undefined;\n\tRAW?:\n\t\t| SQLWrapper\n\t\t| ((\n\t\t\ttable: TTable['table'],\n\t\t\toperators: Operators,\n\t\t) => SQL)\n\t\t| undefined;\n}\n\nexport type RelationsFilterColumns<\n\tTColumns extends Record<string, unknown>,\n> = {\n\t[K in keyof TColumns]?:\n\t\t| (TColumns[K] extends { _: { data: infer Data } } ? RelationsFieldFilter<Data>\n\t\t\t: RelationsFieldFilter<unknown>)\n\t\t| undefined;\n};\n\nexport type RelationsFilterRelations<\n\tTTable extends TableRelationalConfig,\n\tTSchema extends TablesRelationalConfig,\n\tTRelations extends RelationsRecord = TTable['relations'],\n> = {\n\t[K in keyof TRelations]?:\n\t\t| boolean\n\t\t| RelationsFilter<FindTargetTableInRelationalConfig<TSchema, TRelations[K]>, TSchema>\n\t\t| undefined;\n};\n\nexport type RelationsFilter<\n\tTTable extends TableRelationalConfig,\n\tTSchema extends TablesRelationalConfig,\n\tTColumns extends FieldSelection = GetTableViewFieldSelection<TTable['table']>,\n> = TTable['relations'] extends Record<string, never> ? TableFilter<TTable['table']>\n\t:\n\t\t& RelationsFilterColumns<TColumns>\n\t\t& RelationsFilterRelations<TTable, TSchema>\n\t\t& RelationsFilterCommons<TTable, TSchema>;\n\nexport interface TableFilterCommons<\n\tTTable extends SchemaEntry = SchemaEntry,\n\tTColumns extends Record<string, unknown> = GetTableViewColumns<TTable>,\n> {\n\tOR?: TableFilter<TTable, TColumns>[] | undefined;\n\tNOT?: TableFilter<TTable, TColumns> | undefined;\n\tAND?: TableFilter<TTable, TColumns>[] | undefined;\n\tRAW?:\n\t\t| SQLWrapper\n\t\t| ((\n\t\t\ttable: TTable,\n\t\t\toperators: Operators,\n\t\t) => SQL)\n\t\t| undefined;\n}\n\nexport type TableFilterColumns<\n\tTColumns extends Record<string, unknown>,\n> = {\n\t[K in keyof TColumns]?:\n\t\t| (TColumns[K] extends { _: { data: infer Data } } ? RelationsFieldFilter<Data>\n\t\t\t: RelationsFieldFilter<unknown>)\n\t\t| undefined;\n};\n\nexport type TableFilter<\n\tTTable extends SchemaEntry = SchemaEntry,\n\tTColumns extends Record<string, unknown> = GetTableViewColumns<TTable>,\n> =\n\t& TableFilterColumns<TColumns>\n\t& TableFilterCommons<TTable, TColumns>;\n\nexport type AnyRelationsFilter = RelationsFilter<\n\tTableRelationalConfig,\n\tTablesRelationalConfig,\n\tFieldSelection\n>;\n\nexport type AnyTableFilter = TableFilter<\n\tSchemaEntry,\n\tFieldSelection\n>;\n\nexport interface OneConfig<TTargetTable extends SchemaEntry, TOptional extends boolean> {\n\tfrom?: RelationsBuilderColumnBase | [RelationsBuilderColumnBase, ...RelationsBuilderColumnBase[]];\n\tto?: RelationsBuilderColumnBase | [RelationsBuilderColumnBase, ...RelationsBuilderColumnBase[]];\n\twhere?: TableFilter<TTargetTable>;\n\toptional?: TOptional;\n\talias?: string;\n}\n\nexport type AnyOneConfig = OneConfig<\n\tSchemaEntry,\n\tboolean\n>;\n\nexport interface ManyConfig<TTargetTable extends SchemaEntry> {\n\tfrom?: RelationsBuilderColumnBase | [RelationsBuilderColumnBase, ...RelationsBuilderColumnBase[]];\n\tto?: RelationsBuilderColumnBase | [RelationsBuilderColumnBase, ...RelationsBuilderColumnBase[]];\n\twhere?: TableFilter<TTargetTable>;\n\talias?: string;\n}\n\nexport type AnyManyConfig = ManyConfig<SchemaEntry>;\n\nexport interface OneFn<TTargetTable extends SchemaEntry, TTargetTableName extends string> {\n\t<TOptional extends boolean = true>(config?: OneConfig<TTargetTable, TOptional>): One<TTargetTableName, TOptional>;\n}\n\nexport interface ManyFn<TTargetTable extends SchemaEntry, TTargetTableName extends string> {\n\t(config?: ManyConfig<TTargetTable>): Many<TTargetTableName>;\n}\n\nexport class RelationsHelperStatic<TTables extends Schema> {\n\tstatic readonly [entityKind]: string = 'RelationsHelperStatic';\n\t// declare readonly $brand: 'RelationsHelperStatic';\n\n\tprivate readonly _: {\n\t\treadonly tables: TTables;\n\t};\n\n\tconstructor(tables: TTables) {\n\t\tthis._ = {\n\t\t\ttables,\n\t\t};\n\n\t\tconst one: Record<string, OneFn<TTables[string], string>> = {};\n\t\tconst many: Record<string, ManyFn<TTables[string], string>> = {};\n\n\t\tfor (const [tableName, table] of Object.entries(tables)) {\n\t\t\tone[tableName] = (config) => {\n\t\t\t\treturn new One(tables, table, tableName, config as unknown as AnyOneConfig);\n\t\t\t};\n\n\t\t\tmany[tableName] = (config) => {\n\t\t\t\treturn new Many(tables, table, tableName, config as AnyManyConfig);\n\t\t\t};\n\t\t}\n\n\t\tthis.one = one as any as this['one'];\n\t\tthis.many = many as any as this['many'];\n\t}\n\n\tone: {\n\t\t[K in keyof TTables]: TTables[K] extends FilteredSchemaEntry ? OneFn<TTables[K], K & string>\n\t\t\t: DrizzleTypeError<'Views with nested selections are not supported by the relational query builder'>;\n\t};\n\n\tmany: {\n\t\t[K in keyof TTables]: TTables[K] extends FilteredSchemaEntry ? ManyFn<TTables[K], K & string>\n\t\t\t: DrizzleTypeError<'Views with nested selections are not supported by the relational query builder'>;\n\t};\n\n\t/** @internal - to be reworked */\n\taggs = {\n\t\tcount(): Count {\n\t\t\treturn new Count();\n\t\t},\n\t};\n}\n\nexport type RelationsBuilderColumns<TTable extends SchemaEntry, TTableName extends string> = {\n\t[\n\t\tTColumnName in keyof GetTableViewColumns<TTable>\n\t]: RelationsBuilderColumn<\n\t\tTTableName\n\t>;\n};\n\nexport type RelationsBuilderTables<TSchema extends Schema> = {\n\t[TTableName in keyof TSchema]: TSchema[TTableName] extends FilteredSchemaEntry ? (\n\t\t\t& RelationsBuilderColumns<TSchema[TTableName], TTableName & string>\n\t\t\t& RelationsBuilderTable<TTableName & string>\n\t\t)\n\t\t: DrizzleTypeError<'Views with nested selections are not supported by the relational query builder'>;\n};\n\nexport type RelationsBuilder<TSchema extends Schema> =\n\t& RelationsBuilderTables<TSchema>\n\t& RelationsHelperStatic<TSchema>;\n\nexport type RelationsBuilderConfigValue =\n\t| RelationsRecord\n\t| undefined;\n\nexport type RelationsBuilderConfig<TTables extends Schema> = {\n\t[TTableName in keyof TTables]?: RelationsBuilderConfigValue;\n};\n\nexport type AnyRelationsBuilderConfig = Record<string, RelationsBuilderConfigValue>;\n\nexport type ExtractTablesFromSchema<TSchema extends Record<string, unknown>> = {\n\t[K in keyof TSchema as TSchema[K] extends SchemaEntry ? K extends string ? K : never : never]: Assume<\n\t\tTSchema[K],\n\t\tSchemaEntry\n\t>;\n};\n\nexport function createRelationsHelper<\n\tTTables extends Schema,\n>(tables: TTables): RelationsBuilder<TTables> {\n\tconst helperStatic = new RelationsHelperStatic(tables);\n\tconst relationsTables = Object.entries(tables).reduce<Record<string, RelationsBuilderTable>>((acc, [tKey, value]) => {\n\t\tconst rTable = new RelationsBuilderTable(value, tKey);\n\t\tconst columns = Object.entries(value[TableColumns]).reduce<\n\t\t\tRecord<string, RelationsBuilderColumnBase>\n\t\t>(\n\t\t\t(acc, [cKey, column]) => {\n\t\t\t\tconst rbColumn = new RelationsBuilderColumn(column as FieldValue, tKey, cKey);\n\t\t\t\tacc[cKey] = rbColumn;\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{},\n\t\t);\n\n\t\tacc[tKey] = Object.assign(rTable, columns);\n\n\t\treturn acc;\n\t}, {});\n\n\treturn Object.assign(helperStatic, relationsTables) as any;\n}\n\nexport function extractTablesFromSchema<TSchema extends Record<string, unknown>>(\n\tschema: TSchema,\n): ExtractTablesFromSchema<TSchema> {\n\treturn Object.fromEntries(\n\t\tObject.entries(schema).filter(([_, e]) => is(e, Table) || is(e, View)),\n\t) as ExtractTablesFromSchema<TSchema>;\n}\n\nexport type IncludeEveryTable<TTables extends Schema> = { [K in keyof TTables]: {} };\n\n/** Builds relational config for every table in schema */\nexport function defineRelations<\n\tTSchema extends Record<string, unknown>,\n\tTTables extends Schema = ExtractTablesFromSchema<TSchema>,\n>(\n\tschema: TSchema,\n): ExtractTablesWithRelations<{}, TTables>;\n/** Builds relational config for every table in schema */\nexport function defineRelations<\n\tTSchema extends Record<string, unknown>,\n\tTConfig extends RelationsBuilderConfig<TTables>,\n\tTTables extends Schema = ExtractTablesFromSchema<TSchema>,\n>(\n\tschema: TSchema,\n\trelations: (helpers: RelationsBuilder<TTables>) => TConfig,\n): ExtractTablesWithRelations<TConfig, TTables>;\nexport function defineRelations(\n\tschema: Record<string, unknown>,\n\trelations?: (helpers: RelationsBuilder<Schema>) => AnyRelationsBuilderConfig,\n): TablesRelationalConfig {\n\tconst tables = extractTablesFromSchema(schema);\n\tconst config = relations\n\t\t? relations(\n\t\t\tcreateRelationsHelper(tables) as RelationsBuilder<Schema>,\n\t\t)\n\t\t: {};\n\n\treturn buildRelations(tables, config);\n}\n\n/** Builds relational config for every table in schema */\nexport function defineRelationsPart<\n\tTSchema extends Record<string, unknown>,\n\tTTables extends Schema = ExtractTablesFromSchema<TSchema>,\n>(\n\tschema: TSchema,\n): ExtractTablesWithRelationsParts<IncludeEveryTable<TTables>, TTables>;\n/** Builds relational config only for tables present in relational config */\nexport function defineRelationsPart<\n\tTSchema extends Record<string, unknown>,\n\tTConfig extends RelationsBuilderConfig<TTables>,\n\tTTables extends Schema = ExtractTablesFromSchema<TSchema>,\n>(\n\tschema: TSchema,\n\trelations: (helpers: RelationsBuilder<TTables>) => TConfig,\n): ExtractTablesWithRelationsParts<TConfig, TTables>;\nexport function defineRelationsPart(\n\tschema: Record<string, unknown>,\n\trelations?: (helpers: RelationsBuilder<Schema>) => AnyRelationsBuilderConfig,\n): TablesRelationalConfig {\n\tconst tables = extractTablesFromSchema(schema);\n\tconst config = relations\n\t\t? relations(\n\t\t\tcreateRelationsHelper(tables) as RelationsBuilder<Schema>,\n\t\t)\n\t\t: Object.fromEntries(Object.keys(tables).map((k) => [k, {}])) as AnyRelationsBuilderConfig;\n\n\treturn buildRelationsParts(tables, config);\n}\n\nexport interface WithContainer {\n\twith?: Record<string, boolean | AnyDBQueryConfig | undefined>;\n}\n\nexport interface ColumnWithTSName {\n\tcolumn: Table | View | Column<any> | SQL | SQLWrapper | SQL.Aliased;\n\ttsName: string;\n}\n\nexport type RelationsOrder<TColumns extends FieldSelection> = {\n\t[K in keyof TColumns]?: 'asc' | 'desc';\n};\n\nexport type OrderBy = Exclude<AnyDBQueryConfig['orderBy'], undefined>;\n\nexport type Extras = Exclude<AnyDBQueryConfig['extras'], undefined>;\n\n/** @internal */\nexport function fieldSelectionToSQL(table: SchemaEntry, target: string) {\n\tconst field = table[TableColumns][target];\n\n\treturn field\n\t\t? is(field, Column)\n\t\t\t? field\n\t\t\t: is(field, SQL.Aliased)\n\t\t\t? sql`${table}.${sql.identifier(field.fieldAlias)}`\n\t\t\t: sql`${table}.${sql.identifier(target)}`\n\t\t: sql`${table}.${sql.identifier(target)}`;\n}\n\nfunction relationsFieldFilterToSQL(column: SQLWrapper, filter: RelationsFieldFilter<unknown>): SQL | undefined {\n\tif (typeof filter !== 'object' || is(filter, Placeholder)) return eq(column, filter);\n\n\tconst entries = Object.entries(filter as RelationFieldsFilterInternals<unknown>);\n\tif (!entries.length) return undefined;\n\n\tconst parts: (SQL)[] = [];\n\tfor (const [target, value] of entries) {\n\t\tif (value === undefined) continue;\n\n\t\tswitch (target as keyof RelationFieldsFilterInternals<unknown>) {\n\t\t\tcase 'NOT': {\n\t\t\t\tconst res = relationsFieldFilterToSQL(column, value as RelationsFieldFilter<unknown>);\n\t\t\t\tif (!res) continue;\n\n\t\t\t\tparts.push(not(res));\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcase 'OR': {\n\t\t\t\tif (!(value as RelationsFieldFilter<unknown>[]).length) continue;\n\n\t\t\t\tparts.push(\n\t\t\t\t\tor(\n\t\t\t\t\t\t...(value as AnyRelationsFilter[]).map((subFilter) => relationsFieldFilterToSQL(column, subFilter)),\n\t\t\t\t\t)!,\n\t\t\t\t);\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcase 'AND': {\n\t\t\t\tif (!(value as RelationsFieldFilter<unknown>[]).length) continue;\n\n\t\t\t\tparts.push(\n\t\t\t\t\tand(\n\t\t\t\t\t\t...(value as AnyRelationsFilter[]).map((subFilter) => relationsFieldFilterToSQL(column, subFilter)),\n\t\t\t\t\t)!,\n\t\t\t\t);\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcase 'isNotNull':\n\t\t\tcase 'isNull': {\n\t\t\t\tif (!value) continue;\n\n\t\t\t\tparts.push(operators[target as 'isNull' | 'isNotNull'](column));\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcase 'in': {\n\t\t\t\tparts.push(operators.inArray(column, value as any[] | Placeholder));\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcase 'notIn': {\n\t\t\t\tparts.push(operators.notInArray(column, value as any[] | Placeholder));\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tdefault: {\n\t\t\t\tparts.push(\n\t\t\t\t\t(operators[target as keyof typeof operators] as ((col: SQLWrapper, data: any) => SQL | undefined))(\n\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t)!,\n\t\t\t\t);\n\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!parts.length) return undefined;\n\n\treturn and(...parts);\n}\n\nexport function relationsFilterToSQL(\n\ttable: SchemaEntry,\n\tfilter: AnyRelationsFilter | AnyTableFilter,\n): SQL | undefined;\nexport function relationsFilterToSQL(\n\ttable: SchemaEntry,\n\tfilter: AnyRelationsFilter | AnyTableFilter,\n\ttableRelations: RelationsRecord,\n\ttablesRelations: TablesRelationalConfig,\n\tdepth?: number,\n): SQL | undefined;\nexport function relationsFilterToSQL(\n\ttable: SchemaEntry,\n\tfilter: AnyRelationsFilter | AnyTableFilter,\n\ttableRelations: RelationsRecord = {},\n\ttablesRelations: TablesRelationalConfig = {},\n\tdepth: number = 0,\n): SQL | undefined {\n\tconst entries = Object.entries(filter);\n\tif (!entries.length) return undefined;\n\n\tconst parts: SQL[] = [];\n\tfor (const [target, value] of entries) {\n\t\tif (value === undefined) continue;\n\n\t\tswitch (target) {\n\t\t\tcase 'RAW': {\n\t\t\t\tconst processed = typeof value === 'function'\n\t\t\t\t\t? (value as unknown as (table: FieldSelection, operators: Operators) => SQL)(table as any, operators)\n\t\t\t\t\t: (value as SQLWrapper).getSQL();\n\n\t\t\t\tparts.push(processed);\n\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcase 'OR': {\n\t\t\t\tif (!(value as AnyRelationsFilter[] | undefined)?.length) continue;\n\n\t\t\t\tparts.push(\n\t\t\t\t\tor(\n\t\t\t\t\t\t...(value as AnyRelationsFilter[]).map((subFilter) =>\n\t\t\t\t\t\t\trelationsFilterToSQL(table, subFilter, tableRelations, tablesRelations, depth)\n\t\t\t\t\t\t),\n\t\t\t\t\t)!,\n\t\t\t\t);\n\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcase 'AND': {\n\t\t\t\tif (!(value as AnyRelationsFilter[] | undefined)?.length) continue;\n\n\t\t\t\tparts.push(\n\t\t\t\t\tand(\n\t\t\t\t\t\t...(value as AnyRelationsFilter[]).map((subFilter) =>\n\t\t\t\t\t\t\trelationsFilterToSQL(table, subFilter, tableRelations, tablesRelations, depth)\n\t\t\t\t\t\t),\n\t\t\t\t\t)!,\n\t\t\t\t);\n\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcase 'NOT': {\n\t\t\t\tif (value === undefined) continue;\n\n\t\t\t\tconst built = relationsFilterToSQL(\n\t\t\t\t\ttable,\n\t\t\t\t\tvalue as AnyRelationsFilter,\n\t\t\t\t\ttableRelations,\n\t\t\t\t\ttablesRelations,\n\t\t\t\t\tdepth,\n\t\t\t\t);\n\t\t\t\tif (!built) continue;\n\n\t\t\t\tparts.push(not(built));\n\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tif (table[TableColumns][target]) {\n\t\t\t\t\tconst column = fieldSelectionToSQL(table, target);\n\n\t\t\t\t\tconst colFilter = relationsFieldFilterToSQL(\n\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\tvalue as RelationsFieldFilter,\n\t\t\t\t\t);\n\t\t\t\t\tif (colFilter) parts.push(colFilter);\n\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst relation = tableRelations[target];\n\t\t\t\tif (!relation) {\n\t\t\t\t\t// Should never trigger unless the types've been violated\n\t\t\t\t\tthrow new DrizzleError({\n\t\t\t\t\t\tmessage: `Unknown relational filter field: \"${target}\"`,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst targetTable = aliasedTable(relation.targetTable, `f${depth}`);\n\t\t\t\tconst throughTable = relation.throughTable ? aliasedTable(relation.throughTable, `ft${depth}`) : undefined;\n\t\t\t\tconst targetConfig = tablesRelations[relation.targetTableName]!;\n\n\t\t\t\tconst {\n\t\t\t\t\tfilter: relationFilter,\n\t\t\t\t\tjoinCondition,\n\t\t\t\t} = relationToSQL(relation, table, targetTable, throughTable);\n\t\t\t\tconst subfilter = typeof value === 'boolean' ? undefined : relationsFilterToSQL(\n\t\t\t\t\ttargetTable,\n\t\t\t\t\tvalue as AnyRelationsFilter,\n\t\t\t\t\ttargetConfig.relations,\n\t\t\t\t\ttablesRelations,\n\t\t\t\t\tdepth + 1,\n\t\t\t\t);\n\t\t\t\tconst filter = and(\n\t\t\t\t\trelationFilter,\n\t\t\t\t\tsubfilter,\n\t\t\t\t);\n\n\t\t\t\tconst subquery = throughTable\n\t\t\t\t\t? sql`(select * from ${getTableAsAliasSQL(targetTable)} inner join ${\n\t\t\t\t\t\tgetTableAsAliasSQL(throughTable)\n\t\t\t\t\t} on ${joinCondition}${sql` where ${filter}`.if(filter)} limit 1)`\n\t\t\t\t\t: sql`(select * from ${getTableAsAliasSQL(targetTable)}${sql` where ${filter}`.if(filter)} limit 1)`;\n\t\t\t\tif (filter) parts.push((value ? exists : notExists)(subquery));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn and(...parts)!;\n}\n\nexport function relationsOrderToSQL(\n\ttable: SchemaEntry,\n\torders: OrderBy,\n): SQL | undefined {\n\tif (typeof orders === 'function') {\n\t\tconst data = orders(table as any, orderByOperators);\n\n\t\treturn is(data, SQL)\n\t\t\t? data\n\t\t\t: Array.isArray(data)\n\t\t\t? data.length\n\t\t\t\t? sql.join(data.map((o) => is(o, SQL) ? o : asc(o)), sql`, `)\n\t\t\t\t: undefined\n\t\t\t: is(data, Column)\n\t\t\t? asc(data)\n\t\t\t: undefined;\n\t}\n\n\tconst entries = Object.entries(orders).filter(([_, value]) => value);\n\tif (!entries.length) return undefined;\n\n\treturn sql.join(\n\t\tentries.map(([target, value]) => (value === 'asc' ? asc : desc)(fieldSelectionToSQL(table, target))),\n\t\tsql`, `,\n\t);\n}\n\nexport function relationExtrasToSQL(\n\ttable: SchemaEntry,\n\textras: Extras,\n\tcodecs?: CodecsCollection,\n\tinJson?: boolean,\n) {\n\tconst subqueries: SQL[] = [];\n\tconst selection: BuildRelationalQueryResult['selection'] = [];\n\n\tfor (\n\t\tconst [key, field] of Object.entries(extras)\n\t) {\n\t\tif (!field) continue;\n\t\tconst extra = typeof field === 'function' ? field(table as any, { sql: operators.sql }) : field;\n\n\t\tconst subq = extra.getSQL();\n\t\tconst column = codecs ? getColumnFromDecoder(subq) : undefined;\n\t\t// Codec bypass for custom columns with enabled legacy JSON api\n\t\tconst query = column && (!inJson || !(<any> column).jsonSelectIdentifier)\n\t\t\t? sql`${codecs!.apply(column, inJson ? 'castInJson' : 'cast', sql`(${subq})`)} as ${sql.identifier(key)}`\n\t\t\t: sql`(${subq}) as ${sql.identifier(key)}`;\n\t\tquery.decoder = subq.decoder;\n\n\t\tsubqueries.push(query);\n\t\tselection.push(\n\t\t\t// Codec bypass for custom columns with enabled legacy JSON api\n\t\t\tcolumn && (!inJson || !(<any> column).mapFromJsonValue)\n\t\t\t\t? {\n\t\t\t\t\tkey,\n\t\t\t\t\tfield: query,\n\t\t\t\t\tcodec: codecs!.get(column, inJson ? 'normalizeInJson' : 'normalize'),\n\t\t\t\t\tarrayDimensions: (<any> column).dimensions,\n\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\tkey,\n\t\t\t\t\tfield: query,\n\t\t\t\t},\n\t\t);\n\t}\n\n\treturn {\n\t\tsql: subqueries.length ? sql.join(subqueries, sql`, `) : undefined,\n\t\tselection,\n\t};\n}\n\nexport interface BuiltRelationFilters {\n\tfilter?: SQL;\n\tjoinCondition?: SQL;\n}\n\nexport function relationToSQL(\n\trelation: Relation,\n\tsourceTable: SchemaEntry,\n\ttargetTable: SchemaEntry,\n\tthroughTable?: SchemaEntry,\n): BuiltRelationFilters {\n\tif (relation.through) {\n\t\tconst outerColumnWhere = relation.sourceColumns.map((s, i) => {\n\t\t\tconst t = relation.through!.source[i]!;\n\n\t\t\treturn eq(\n\t\t\t\tsql`${sourceTable}.${sql.identifier(s.name)}`,\n\t\t\t\tsql`${throughTable!}.${sql.identifier(is(t._.column, Column) ? t._.column.name : t._.key)}`,\n\t\t\t);\n\t\t});\n\n\t\tconst innerColumnWhere = relation.targetColumns.map((s, i) => {\n\t\t\tconst t = relation.through!.target[i]!;\n\n\t\t\treturn eq(\n\t\t\t\tsql`${throughTable!}.${sql.identifier(is(t._.column, Column) ? t._.column.name : t._.key)}`,\n\t\t\t\tsql`${targetTable}.${sql.identifier(s.name)}`,\n\t\t\t);\n\t\t});\n\n\t\treturn {\n\t\t\tfilter: and(\n\t\t\t\trelation.where\n\t\t\t\t\t? relationsFilterToSQL(relation.isReversed ? sourceTable : targetTable, relation.where)\n\t\t\t\t\t: undefined,\n\t\t\t\t...outerColumnWhere,\n\t\t\t),\n\t\t\tjoinCondition: and(...innerColumnWhere),\n\t\t};\n\t}\n\n\tconst columnWhere = relation.sourceColumns.map((s, i) => {\n\t\tconst t = relation.targetColumns[i]!;\n\n\t\treturn eq(\n\t\t\tsql`${sourceTable}.${sql.identifier(s.name)}`,\n\t\t\tsql`${targetTable}.${sql.identifier(t.name)}`,\n\t\t);\n\t});\n\n\tconst fullWhere = and(\n\t\t...columnWhere,\n\t\trelation.where\n\t\t\t? relationsFilterToSQL(relation.isReversed ? sourceTable : targetTable, relation.where)\n\t\t\t: undefined,\n\t)!;\n\n\treturn { filter: fullWhere };\n}\n\nexport function getTableAsAliasSQL(table: SchemaEntry) {\n\treturn sql`${\n\t\ttable[IsAlias]\n\t\t\t? sql`${sql`${sql.identifier(table[TableSchema] ?? '')}.`.if(table[TableSchema])}${\n\t\t\t\tsql.identifier(table[OriginalName])\n\t\t\t} as ${table}`\n\t\t\t: table\n\t}`;\n}\n", "import { entityKind } from '~/entity.ts';\n\nexport interface Logger {\n\tlogQuery(query: string, params: unknown[]): void;\n}\n\nexport interface LogWriter {\n\twrite(message: string): void;\n}\n\nexport class ConsoleLogWriter implements LogWriter {\n\tstatic readonly [entityKind]: string = 'ConsoleLogWriter';\n\n\twrite(message: string) {\n\t\tconsole.log(message);\n\t}\n}\n\nexport class DefaultLogger implements Logger {\n\tstatic readonly [entityKind]: string = 'DefaultLogger';\n\n\treadonly writer: LogWriter;\n\n\tconstructor(config?: { writer: LogWriter }) {\n\t\tthis.writer = config?.writer ?? new ConsoleLogWriter();\n\t}\n\n\tlogQuery(query: string, params: unknown[]): void {\n\t\tconst stringifiedParams = params.map((p) => {\n\t\t\ttry {\n\t\t\t\treturn JSON.stringify(p);\n\t\t\t} catch {\n\t\t\t\treturn String(p);\n\t\t\t}\n\t\t});\n\t\tconst paramsStr = stringifiedParams.length ? ` -- params: [${stringifiedParams.join(', ')}]` : '';\n\t\tthis.writer.write(`Query: ${query}${paramsStr}`);\n\t}\n}\n\nexport class NoopLogger implements Logger {\n\tstatic readonly [entityKind]: string = 'NoopLogger';\n\n\tlogQuery(): void {\n\t\t// noop\n\t}\n}\n", "import { is } from '~/entity.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport { SQL } from '~/sql/sql.ts';\nimport { Subquery } from '~/subquery.ts';\nimport { Table } from '~/table.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { ViewBaseConfig } from '~/view-common.ts';\nimport type { Check } from './checks.ts';\nimport { CheckBuilder } from './checks.ts';\nimport type { ForeignKey } from './foreign-keys.ts';\nimport { ForeignKeyBuilder } from './foreign-keys.ts';\nimport type { Index } from './indexes.ts';\nimport { IndexBuilder } from './indexes.ts';\nimport type { PrimaryKey } from './primary-keys.ts';\nimport { PrimaryKeyBuilder } from './primary-keys.ts';\nimport { SQLiteTable } from './table.ts';\nimport { type UniqueConstraint, UniqueConstraintBuilder } from './unique-constraint.ts';\nimport type { SQLiteViewBase } from './view-base.ts';\nimport type { SQLiteView } from './view.ts';\n\nexport function getTableConfig<TTable extends SQLiteTable>(table: TTable) {\n\tconst columns = Object.values(table[SQLiteTable.Symbol.Columns]);\n\tconst indexes: Index[] = [];\n\tconst checks: Check[] = [];\n\tconst primaryKeys: PrimaryKey[] = [];\n\tconst uniqueConstraints: UniqueConstraint[] = [];\n\tconst foreignKeys: ForeignKey[] = Object.values(table[SQLiteTable.Symbol.InlineForeignKeys]);\n\tconst name = table[Table.Symbol.Name];\n\n\tconst extraConfigBuilder = table[SQLiteTable.Symbol.ExtraConfigBuilder];\n\n\tif (extraConfigBuilder !== undefined) {\n\t\tconst extraConfig = extraConfigBuilder(table[SQLiteTable.Symbol.Columns]);\n\t\tconst extraValues = Array.isArray(extraConfig) ? extraConfig.flat(1) as any[] : Object.values(extraConfig);\n\t\tfor (const builder of Object.values(extraValues)) {\n\t\t\tif (is(builder, IndexBuilder)) {\n\t\t\t\tindexes.push(builder.build(table));\n\t\t\t} else if (is(builder, CheckBuilder)) {\n\t\t\t\tchecks.push(builder.build(table));\n\t\t\t} else if (is(builder, UniqueConstraintBuilder)) {\n\t\t\t\tuniqueConstraints.push(builder.build(table));\n\t\t\t} else if (is(builder, PrimaryKeyBuilder)) {\n\t\t\t\tprimaryKeys.push(builder.build(table));\n\t\t\t} else if (is(builder, ForeignKeyBuilder)) {\n\t\t\t\tforeignKeys.push(builder.build(table));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tcolumns,\n\t\tindexes,\n\t\tforeignKeys,\n\t\tchecks,\n\t\tprimaryKeys,\n\t\tuniqueConstraints,\n\t\tname,\n\t};\n}\n\nexport function extractUsedTable(table: SQLiteTable | Subquery | SQLiteViewBase | SQL): string[] {\n\tif (is(table, SQLiteTable)) {\n\t\treturn [`${table[Table.Symbol.BaseName]}`];\n\t}\n\tif (is(table, Subquery)) {\n\t\treturn table._.usedTables ?? [];\n\t}\n\tif (is(table, SQL)) {\n\t\treturn table.usedTables ?? [];\n\t}\n\treturn [];\n}\n\nexport type OnConflict = 'rollback' | 'abort' | 'fail' | 'ignore' | 'replace';\n\nexport function getViewConfig<\n\tTName extends string = string,\n\tTExisting extends boolean = boolean,\n>(view: SQLiteView<TName, TExisting>) {\n\treturn {\n\t\t...view[ViewBaseConfig],\n\t\t// ...view[SQLiteViewConfig],\n\t};\n}\n\nexport type DrizzleSQLiteConfig<TRelations extends AnyRelations> = Omit<\n\tDrizzleConfig<Record<string, never>, TRelations>,\n\t'schema'\n>;\n", "import { entityKind } from '~/entity.ts';\nimport type { ColumnsSelection } from '~/sql/sql.ts';\nimport { View } from '~/sql/sql.ts';\n\nexport abstract class SQLiteViewBase<\n\tTName extends string = string,\n\tTExisting extends boolean = boolean,\n\tTSelection extends ColumnsSelection = ColumnsSelection,\n> extends View<TName, TExisting, TSelection> {\n\tstatic override readonly [entityKind]: string = 'SQLiteViewBase';\n\n\tdeclare _: View<TName, TExisting, TSelection>['_'] & {\n\t\tviewBrand: 'SQLiteView';\n\t};\n}\n", "import { ColumnTableAliasProxyHandler, TableAliasProxyHandler } from './alias.ts';\nimport { Column } from './column.ts';\nimport { entityKind, is } from './entity.ts';\nimport { SQL, View } from './sql/sql.ts';\nimport { Subquery } from './subquery.ts';\nimport { ViewBaseConfig } from './view-common.ts';\n\nexport class SelectionProxyHandler<T extends Subquery | Record<string, unknown> | View>\n\timplements ProxyHandler<Subquery | Record<string, unknown> | View>\n{\n\tstatic readonly [entityKind]: string = 'SelectionProxyHandler';\n\n\tprivate config: {\n\t\t/**\n\t\t * Table alias for the columns\n\t\t */\n\t\talias?: string;\n\t\t/**\n\t\t * What to do when a field is an instance of `SQL.Aliased` and it's not a selection field (from a subquery)\n\t\t *\n\t\t * `sql` - return the underlying SQL expression\n\t\t *\n\t\t * `alias` - return the field alias\n\t\t */\n\t\tsqlAliasedBehavior: 'sql' | 'alias';\n\t\t/**\n\t\t * What to do when a field is an instance of `SQL` and it doesn't have an alias declared\n\t\t *\n\t\t * `sql` - return the underlying SQL expression\n\t\t *\n\t\t * `error` - return a DrizzleTypeError on type level and throw an error on runtime\n\t\t */\n\t\tsqlBehavior: 'sql' | 'error';\n\n\t\t/**\n\t\t * Whether to replace the original name of the column with the alias\n\t\t * Should be set to `true` for views creation\n\t\t * @default false\n\t\t */\n\t\treplaceOriginalName?: boolean;\n\t};\n\n\tconstructor(config: SelectionProxyHandler<T>['config']) {\n\t\tthis.config = { ...config };\n\t}\n\n\tget(subquery: T, prop: string | symbol): any {\n\t\tif (prop === '_') {\n\t\t\treturn {\n\t\t\t\t...subquery['_' as keyof typeof subquery],\n\t\t\t\tselectedFields: new Proxy(\n\t\t\t\t\t(subquery as Subquery)._.selectedFields,\n\t\t\t\t\tthis as ProxyHandler<Record<string, unknown>>,\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tif (prop === ViewBaseConfig) {\n\t\t\treturn {\n\t\t\t\t...subquery[ViewBaseConfig as keyof typeof subquery],\n\t\t\t\tselectedFields: new Proxy(\n\t\t\t\t\t(subquery as View)[ViewBaseConfig].selectedFields,\n\t\t\t\t\tthis as ProxyHandler<Record<string, unknown>>,\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tif (typeof prop === 'symbol') {\n\t\t\treturn subquery[prop as keyof typeof subquery];\n\t\t}\n\n\t\tconst columns = is(subquery, Subquery)\n\t\t\t? subquery._.selectedFields\n\t\t\t: is(subquery, View)\n\t\t\t? subquery[ViewBaseConfig].selectedFields\n\t\t\t: subquery;\n\t\tconst value: unknown = columns[prop as keyof typeof columns];\n\n\t\tif (is(value, SQL.Aliased)) {\n\t\t\t// Never return the underlying SQL expression for a field previously selected in a subquery\n\t\t\tif (this.config.sqlAliasedBehavior === 'sql' && !value.isSelectionField) {\n\t\t\t\treturn value.sql;\n\t\t\t}\n\n\t\t\tconst newValue = value.clone();\n\t\t\tnewValue.isSelectionField = true;\n\t\t\tnewValue.origin = this.config.alias;\n\t\t\treturn newValue;\n\t\t}\n\n\t\tif (is(value, SQL)) {\n\t\t\tif (this.config.sqlBehavior === 'sql') {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tthrow new Error(\n\t\t\t\t`You tried to reference \"${prop}\" field from a subquery, which is a raw SQL field, but it doesn't have an alias declared. Please add an alias to the field using \".as('alias')\" method.`,\n\t\t\t);\n\t\t}\n\n\t\tif (is(value, Column)) {\n\t\t\tif (this.config.alias) {\n\t\t\t\treturn new Proxy(\n\t\t\t\t\tvalue,\n\t\t\t\t\tnew ColumnTableAliasProxyHandler(\n\t\t\t\t\t\tnew Proxy(\n\t\t\t\t\t\t\tvalue.table,\n\t\t\t\t\t\t\tnew TableAliasProxyHandler(this.config.alias, this.config.replaceOriginalName ?? false, true),\n\t\t\t\t\t\t),\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\n\t\tif (typeof value !== 'object' || value === null) {\n\t\t\treturn value;\n\t\t}\n\n\t\treturn new Proxy(value, new SelectionProxyHandler(this.config));\n\t}\n}\n", "import { entityKind } from '~/entity.ts';\nimport type { SQL, SQLWrapper } from '~/sql/index.ts';\n\nexport abstract class TypedQueryBuilder<TSelection, TResult = unknown, TConfig = unknown> implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'TypedQueryBuilder';\n\n\tdeclare _: {\n\t\tselectedFields: TSelection;\n\t\tresult: TResult;\n\t\tconfig?: TConfig;\n\t};\n\n\t/** @internal */\n\tgetSelectedFields(): TSelection {\n\t\treturn this._.selectedFields;\n\t}\n\n\t/** @internal */\n\twithoutSelectionCastCodecs(): this {\n\t\treturn this;\n\t}\n\n\tabstract getSQL(): SQL;\n}\n", "import type { CacheConfig, WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport { TypedQueryBuilder } from '~/query-builders/query-builder.ts';\nimport type {\n\tBuildSubquerySelection,\n\tGetSelectTableName,\n\tGetSelectTableSelection,\n\tJoinNullability,\n\tJoinType,\n\tSelectMode,\n\tSelectResult,\n\tSetOperator,\n} from '~/query-builders/select.types.ts';\nimport { SelectionProxyHandler } from '~/selection-proxy.ts';\nimport { SQL, View } from '~/sql/sql.ts';\nimport type { ColumnsSelection, Placeholder, Query } from '~/sql/sql.ts';\nimport type { SQLiteColumn } from '~/sqlite-core/columns/index.ts';\nimport type { SQLiteDialect } from '~/sqlite-core/dialect.ts';\nimport type { SQLiteSession } from '~/sqlite-core/session.ts';\nimport type { SubqueryWithSelection } from '~/sqlite-core/subquery.ts';\nimport type { SQLiteTable } from '~/sqlite-core/table.ts';\nimport { Subquery } from '~/subquery.ts';\nimport { Table } from '~/table.ts';\nimport { getTableColumns, getTableLikeName, haveSameKeys, orderSelectedFields, type ValueOrArray } from '~/utils.ts';\nimport { ViewBaseConfig } from '~/view-common.ts';\nimport { extractUsedTable } from '../utils.ts';\nimport { SQLiteViewBase } from '../view-base.ts';\nimport type {\n\tAnySQLiteSelect,\n\tAnySQLiteSelectQueryBuilder,\n\tGetSQLiteSetOperators,\n\tSelectedFields,\n\tSetOperatorRightSelect,\n\tSQLiteCreateSetOperatorFn,\n\tSQLiteSelectConfig,\n\tSQLiteSelectCrossJoinFn,\n\tSQLiteSelectDynamic,\n\tSQLiteSelectHKTBase,\n\tSQLiteSelectJoinFn,\n\tSQLiteSelectKind,\n\tSQLiteSelectQueryBuilderHKT,\n\tSQLiteSelectWithout,\n\tSQLiteSetOperatorExcludedMethods,\n\tSQLiteSetOperatorWithResult,\n} from './select.types.ts';\n\nexport interface SQLiteSelectBuilderConstructor {\n\tnew(\n\t\tconfig: {\n\t\t\ttable: SQLiteSelectConfig['table'];\n\t\t\tfields: SQLiteSelectConfig['fields'];\n\t\t\tisPartialSelect: boolean;\n\t\t\tsession: SQLiteSession<any, any> | undefined;\n\t\t\tdialect: SQLiteDialect;\n\t\t\twithList: Subquery[];\n\t\t\tdistinct: boolean | undefined;\n\t\t},\n\t): AnySQLiteSelectQueryBuilder;\n}\n\nexport class SQLiteSelectBuilder<\n\tTSelection extends SelectedFields | undefined,\n\tTRunResult,\n\tTHKT extends SQLiteSelectHKTBase = SQLiteSelectQueryBuilderHKT,\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteSelectBuilder';\n\n\tprivate fields: TSelection;\n\tprivate session: SQLiteSession<any, any> | undefined;\n\tprivate dialect: SQLiteDialect;\n\tprivate withList: Subquery[] | undefined;\n\tprivate distinct: boolean | undefined;\n\n\tconstructor(\n\t\tconfig: {\n\t\t\tfields: TSelection;\n\t\t\tsession: SQLiteSession<any, any> | undefined;\n\t\t\tdialect: SQLiteDialect;\n\t\t\twithList?: Subquery[];\n\t\t\tdistinct?: boolean;\n\t\t},\n\t\tprivate builder: SQLiteSelectBuilderConstructor = SQLiteSelectBase,\n\t) {\n\t\tthis.fields = config.fields;\n\t\tthis.session = config.session;\n\t\tthis.dialect = config.dialect;\n\t\tthis.withList = config.withList;\n\t\tthis.distinct = config.distinct;\n\t}\n\n\tfrom<TFrom extends SQLiteTable | Subquery | SQLiteViewBase | SQL>(\n\t\tsource: TFrom,\n\t): SQLiteSelectKind<\n\t\tTHKT,\n\t\tGetSelectTableName<TFrom>,\n\t\tTRunResult,\n\t\tTSelection extends undefined ? GetSelectTableSelection<TFrom> : TSelection,\n\t\tTSelection extends undefined ? 'single' : 'partial',\n\t\tGetSelectTableName<TFrom> extends string ? Record<GetSelectTableName<TFrom>, 'not-null'> : {},\n\t\tfalse,\n\t\tnever\n\t> {\n\t\tconst isPartialSelect = !!this.fields;\n\n\t\tlet fields: SelectedFields;\n\t\tif (this.fields) {\n\t\t\tfields = this.fields;\n\t\t} else if (is(source, Subquery)) {\n\t\t\t// This is required to use the proxy handler to get the correct field values from the subquery\n\t\t\tfields = Object.fromEntries(\n\t\t\t\tObject.keys(source._.selectedFields).map((\n\t\t\t\t\tkey,\n\t\t\t\t) => [key, source[key as unknown as keyof typeof source] as unknown as SelectedFields[string]]),\n\t\t\t);\n\t\t} else if (is(source, SQLiteViewBase)) {\n\t\t\tfields = source[ViewBaseConfig].selectedFields as SelectedFields;\n\t\t} else if (is(source, SQL)) {\n\t\t\tfields = {};\n\t\t} else {\n\t\t\tfields = getTableColumns<SQLiteTable>(source);\n\t\t}\n\n\t\treturn new this.builder({\n\t\t\ttable: source,\n\t\t\tfields,\n\t\t\tisPartialSelect,\n\t\t\tsession: this.session,\n\t\t\tdialect: this.dialect,\n\t\t\twithList: this.withList ?? [],\n\t\t\tdistinct: this.distinct,\n\t\t}) as any;\n\t}\n}\n\nexport class SQLiteSelectBase<\n\tTHKT extends SQLiteSelectHKTBase,\n\tTTableName extends string | undefined,\n\tTRunResult,\n\tTSelection extends ColumnsSelection,\n\tTSelectMode extends SelectMode,\n\tTNullabilityMap extends Record<string, JoinNullability> = TTableName extends string ? Record<TTableName, 'not-null'>\n\t\t: {},\n\tTDynamic extends boolean = false,\n\tTExcludedMethods extends string = never,\n\tTResult extends any[] = SelectResult<TSelection, TSelectMode, TNullabilityMap>[],\n\tTSelectedFields extends ColumnsSelection = BuildSubquerySelection<TSelection, TNullabilityMap>,\n> extends TypedQueryBuilder<TSelectedFields, TResult> {\n\tstatic override readonly [entityKind]: string = 'SQLiteSelectQueryBuilder';\n\n\toverride readonly _: {\n\t\treadonly dialect: 'sqlite';\n\t\treadonly hkt: THKT;\n\t\treadonly tableName: TTableName;\n\t\treadonly runResult: TRunResult;\n\t\treadonly selection: TSelection;\n\t\treadonly selectMode: TSelectMode;\n\t\treadonly nullabilityMap: TNullabilityMap;\n\t\treadonly dynamic: TDynamic;\n\t\treadonly excludedMethods: TExcludedMethods;\n\t\treadonly result: TResult;\n\t\treadonly selectedFields: TSelectedFields;\n\t\treadonly config: SQLiteSelectConfig;\n\t};\n\n\t/** @internal */\n\tconfig: SQLiteSelectConfig;\n\tprotected joinsNotNullableMap: Record<string, boolean>;\n\tprivate tableName: string | undefined;\n\tprivate isPartialSelect: boolean;\n\tprotected session: SQLiteSession<any, any> | undefined;\n\tprotected dialect: SQLiteDialect;\n\tprotected cacheConfig?: WithCacheConfig = undefined;\n\tprotected usedTables: Set<string> = new Set();\n\n\tconstructor(\n\t\t{ table, fields, isPartialSelect, session, dialect, withList, distinct }: {\n\t\t\ttable: SQLiteSelectConfig['table'];\n\t\t\tfields: SQLiteSelectConfig['fields'];\n\t\t\tisPartialSelect: boolean;\n\t\t\tsession: SQLiteSession<any, any> | undefined;\n\t\t\tdialect: SQLiteDialect;\n\t\t\twithList: Subquery[] | undefined;\n\t\t\tdistinct: boolean | undefined;\n\t\t},\n\t) {\n\t\tsuper();\n\t\tthis.config = {\n\t\t\twithList,\n\t\t\ttable,\n\t\t\tfields: { ...fields },\n\t\t\tdistinct,\n\t\t\tsetOperators: [],\n\t\t};\n\t\tthis.isPartialSelect = isPartialSelect;\n\t\tthis.session = session;\n\t\tthis.dialect = dialect;\n\t\tthis._ = {\n\t\t\tselectedFields: fields as TSelectedFields,\n\t\t\tconfig: this.config,\n\t\t} as this['_'];\n\t\tthis.tableName = getTableLikeName(table);\n\t\tthis.joinsNotNullableMap = typeof this.tableName === 'string' ? { [this.tableName]: true } : {};\n\t\tfor (const item of extractUsedTable(table)) this.usedTables.add(item);\n\t}\n\n\t/** @internal */\n\tgetUsedTables() {\n\t\treturn [...this.usedTables];\n\t}\n\n\tprivate createJoin<TJoinType extends JoinType>(\n\t\tjoinType: TJoinType,\n\t): 'cross' extends TJoinType ? SQLiteSelectCrossJoinFn<this, TDynamic>\n\t\t: SQLiteSelectJoinFn<this, TDynamic, TJoinType>\n\t{\n\t\treturn (\n\t\t\ttable: SQLiteTable | Subquery | SQLiteViewBase | SQL,\n\t\t\ton?: ((aliases: TSelection) => SQL | undefined) | SQL | undefined,\n\t\t) => {\n\t\t\tconst baseTableName = this.tableName;\n\t\t\tconst tableName = getTableLikeName(table);\n\n\t\t\t// store all tables used in a query\n\t\t\tfor (const item of extractUsedTable(table)) this.usedTables.add(item);\n\n\t\t\tif (typeof tableName === 'string' && this.config.joins?.some((join) => join.alias === tableName)) {\n\t\t\t\tthrow new Error(`Alias \"${tableName}\" is already used in this query`);\n\t\t\t}\n\n\t\t\tif (!this.isPartialSelect) {\n\t\t\t\t// If this is the first join and this is not a partial select and we're not selecting from raw SQL, \"move\" the fields from the main table to the nested object\n\t\t\t\tif (Object.keys(this.joinsNotNullableMap).length === 1 && typeof baseTableName === 'string') {\n\t\t\t\t\tthis.config.fields = {\n\t\t\t\t\t\t[baseTableName]: this.config.fields,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (typeof tableName === 'string' && !is(table, SQL)) {\n\t\t\t\t\tconst selection = is(table, Subquery)\n\t\t\t\t\t\t? table._.selectedFields\n\t\t\t\t\t\t: is(table, View)\n\t\t\t\t\t\t? table[ViewBaseConfig].selectedFields\n\t\t\t\t\t\t: table[Table.Symbol.Columns];\n\t\t\t\t\tthis.config.fields[tableName] = selection;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (typeof on === 'function') {\n\t\t\t\ton = on(\n\t\t\t\t\tnew Proxy(\n\t\t\t\t\t\tthis.config.fields,\n\t\t\t\t\t\tnew SelectionProxyHandler({ sqlAliasedBehavior: 'sql', sqlBehavior: 'sql' }),\n\t\t\t\t\t) as TSelection,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (!this.config.joins) {\n\t\t\t\tthis.config.joins = [];\n\t\t\t}\n\t\t\tthis.config.joins.push({ on, table, joinType, alias: tableName });\n\n\t\t\tif (typeof tableName === 'string') {\n\t\t\t\tswitch (joinType) {\n\t\t\t\t\tcase 'left': {\n\t\t\t\t\t\tthis.joinsNotNullableMap[tableName] = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase 'right': {\n\t\t\t\t\t\tthis.joinsNotNullableMap = Object.fromEntries(\n\t\t\t\t\t\t\tObject.entries(this.joinsNotNullableMap).map(([key]) => [key, false]),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.joinsNotNullableMap[tableName] = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase 'cross':\n\t\t\t\t\tcase 'inner': {\n\t\t\t\t\t\tthis.joinsNotNullableMap[tableName] = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase 'full': {\n\t\t\t\t\t\tthis.joinsNotNullableMap = Object.fromEntries(\n\t\t\t\t\t\t\tObject.entries(this.joinsNotNullableMap).map(([key]) => [key, false]),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.joinsNotNullableMap[tableName] = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this as any;\n\t\t};\n\t}\n\n\t/**\n\t * Executes a `left join` operation by adding another table to the current query.\n\t *\n\t * Calling this method associates each row of the table with the corresponding row from the joined table, if a match is found. If no matching row exists, it sets all columns of the joined table to null.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/joins#left-join}\n\t *\n\t * @param table the table to join.\n\t * @param on the `on` clause.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all users and their pets\n\t * const usersWithPets: { user: User; pets: Pet | null; }[] = await db.select()\n\t * .from(users)\n\t * .leftJoin(pets, eq(users.id, pets.ownerId))\n\t *\n\t * // Select userId and petId\n\t * const usersIdsAndPetIds: { userId: number; petId: number | null; }[] = await db.select({\n\t * userId: users.id,\n\t * petId: pets.id,\n\t * })\n\t * .from(users)\n\t * .leftJoin(pets, eq(users.id, pets.ownerId))\n\t * ```\n\t */\n\tleftJoin = this.createJoin('left');\n\n\t/**\n\t * Executes a `right join` operation by adding another table to the current query.\n\t *\n\t * Calling this method associates each row of the joined table with the corresponding row from the main table, if a match is found. If no matching row exists, it sets all columns of the main table to null.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/joins#right-join}\n\t *\n\t * @param table the table to join.\n\t * @param on the `on` clause.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all users and their pets\n\t * const usersWithPets: { user: User | null; pets: Pet; }[] = await db.select()\n\t * .from(users)\n\t * .rightJoin(pets, eq(users.id, pets.ownerId))\n\t *\n\t * // Select userId and petId\n\t * const usersIdsAndPetIds: { userId: number | null; petId: number; }[] = await db.select({\n\t * userId: users.id,\n\t * petId: pets.id,\n\t * })\n\t * .from(users)\n\t * .rightJoin(pets, eq(users.id, pets.ownerId))\n\t * ```\n\t */\n\trightJoin = this.createJoin('right');\n\n\t/**\n\t * Executes an `inner join` operation, creating a new table by combining rows from two tables that have matching values.\n\t *\n\t * Calling this method retrieves rows that have corresponding entries in both joined tables. Rows without matching entries in either table are excluded, resulting in a table that includes only matching pairs.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/joins#inner-join}\n\t *\n\t * @param table the table to join.\n\t * @param on the `on` clause.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all users and their pets\n\t * const usersWithPets: { user: User; pets: Pet; }[] = await db.select()\n\t * .from(users)\n\t * .innerJoin(pets, eq(users.id, pets.ownerId))\n\t *\n\t * // Select userId and petId\n\t * const usersIdsAndPetIds: { userId: number; petId: number; }[] = await db.select({\n\t * userId: users.id,\n\t * petId: pets.id,\n\t * })\n\t * .from(users)\n\t * .innerJoin(pets, eq(users.id, pets.ownerId))\n\t * ```\n\t */\n\tinnerJoin = this.createJoin('inner');\n\n\t/**\n\t * Executes a `full join` operation by combining rows from two tables into a new table.\n\t *\n\t * Calling this method retrieves all rows from both main and joined tables, merging rows with matching values and filling in `null` for non-matching columns.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/joins#full-join}\n\t *\n\t * @param table the table to join.\n\t * @param on the `on` clause.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all users and their pets\n\t * const usersWithPets: { user: User | null; pets: Pet | null; }[] = await db.select()\n\t * .from(users)\n\t * .fullJoin(pets, eq(users.id, pets.ownerId))\n\t *\n\t * // Select userId and petId\n\t * const usersIdsAndPetIds: { userId: number | null; petId: number | null; }[] = await db.select({\n\t * userId: users.id,\n\t * petId: pets.id,\n\t * })\n\t * .from(users)\n\t * .fullJoin(pets, eq(users.id, pets.ownerId))\n\t * ```\n\t */\n\tfullJoin = this.createJoin('full');\n\n\t/**\n\t * Executes a `cross join` operation by combining rows from two tables into a new table.\n\t *\n\t * Calling this method retrieves all rows from both main and joined tables, merging all rows from each table.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/joins#cross-join}\n\t *\n\t * @param table the table to join.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all users, each user with every pet\n\t * const usersWithPets: { user: User; pets: Pet; }[] = await db.select()\n\t * .from(users)\n\t * .crossJoin(pets)\n\t *\n\t * // Select userId and petId\n\t * const usersIdsAndPetIds: { userId: number; petId: number; }[] = await db.select({\n\t * userId: users.id,\n\t * petId: pets.id,\n\t * })\n\t * .from(users)\n\t * .crossJoin(pets)\n\t * ```\n\t */\n\tcrossJoin = this.createJoin('cross');\n\n\tprivate createSetOperator(\n\t\ttype: SetOperator,\n\t\tisAll: boolean,\n\t): <TValue extends SQLiteSetOperatorWithResult<TResult>>(\n\t\trightSelection:\n\t\t\t| ((setOperators: GetSQLiteSetOperators) => SetOperatorRightSelect<TValue, TResult>)\n\t\t\t| SetOperatorRightSelect<TValue, TResult>,\n\t) => SQLiteSelectWithout<\n\t\tthis,\n\t\tTDynamic,\n\t\tSQLiteSetOperatorExcludedMethods,\n\t\ttrue\n\t> {\n\t\treturn (rightSelection) => {\n\t\t\tconst rightSelect = (typeof rightSelection === 'function'\n\t\t\t\t? rightSelection(getSQLiteSetOperators())\n\t\t\t\t: rightSelection) as TypedQueryBuilder<\n\t\t\t\t\tany,\n\t\t\t\t\tTResult\n\t\t\t\t>;\n\n\t\t\tif (!haveSameKeys(this.getSelectedFields(), rightSelect.getSelectedFields())) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Set operator error (union / intersect / except): selected fields are not the same or are in a different order',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.config.setOperators.push({ type, isAll, rightSelect });\n\t\t\treturn this as any;\n\t\t};\n\t}\n\n\t/**\n\t * Adds `union` set operator to the query.\n\t *\n\t * Calling this method will combine the result sets of the `select` statements and remove any duplicate rows that appear across them.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/set-operations#union}\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all unique names from customers and users tables\n\t * await db.select({ name: users.name })\n\t * .from(users)\n\t * .union(\n\t * db.select({ name: customers.name }).from(customers)\n\t * );\n\t * // or\n\t * import { union } from 'drizzle-orm/sqlite-core'\n\t *\n\t * await union(\n\t * db.select({ name: users.name }).from(users),\n\t * db.select({ name: customers.name }).from(customers)\n\t * );\n\t * ```\n\t */\n\tunion = this.createSetOperator('union', false);\n\n\t/**\n\t * Adds `union all` set operator to the query.\n\t *\n\t * Calling this method will combine the result-set of the `select` statements and keep all duplicate rows that appear across them.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/set-operations#union-all}\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all transaction ids from both online and in-store sales\n\t * await db.select({ transaction: onlineSales.transactionId })\n\t * .from(onlineSales)\n\t * .unionAll(\n\t * db.select({ transaction: inStoreSales.transactionId }).from(inStoreSales)\n\t * );\n\t * // or\n\t * import { unionAll } from 'drizzle-orm/sqlite-core'\n\t *\n\t * await unionAll(\n\t * db.select({ transaction: onlineSales.transactionId }).from(onlineSales),\n\t * db.select({ transaction: inStoreSales.transactionId }).from(inStoreSales)\n\t * );\n\t * ```\n\t */\n\tunionAll = this.createSetOperator('union', true);\n\n\t/**\n\t * Adds `intersect` set operator to the query.\n\t *\n\t * Calling this method will retain only the rows that are present in both result sets and eliminate duplicates.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/set-operations#intersect}\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select course names that are offered in both departments A and B\n\t * await db.select({ courseName: depA.courseName })\n\t * .from(depA)\n\t * .intersect(\n\t * db.select({ courseName: depB.courseName }).from(depB)\n\t * );\n\t * // or\n\t * import { intersect } from 'drizzle-orm/sqlite-core'\n\t *\n\t * await intersect(\n\t * db.select({ courseName: depA.courseName }).from(depA),\n\t * db.select({ courseName: depB.courseName }).from(depB)\n\t * );\n\t * ```\n\t */\n\tintersect = this.createSetOperator('intersect', false);\n\n\t/**\n\t * Adds `except` set operator to the query.\n\t *\n\t * Calling this method will retrieve all unique rows from the left query, except for the rows that are present in the result set of the right query.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/set-operations#except}\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all courses offered in department A but not in department B\n\t * await db.select({ courseName: depA.courseName })\n\t * .from(depA)\n\t * .except(\n\t * db.select({ courseName: depB.courseName }).from(depB)\n\t * );\n\t * // or\n\t * import { except } from 'drizzle-orm/sqlite-core'\n\t *\n\t * await except(\n\t * db.select({ courseName: depA.courseName }).from(depA),\n\t * db.select({ courseName: depB.courseName }).from(depB)\n\t * );\n\t * ```\n\t */\n\texcept = this.createSetOperator('except', false);\n\n\t/** @internal */\n\taddSetOperators(setOperators: SQLiteSelectConfig['setOperators']): SQLiteSelectWithout<\n\t\tthis,\n\t\tTDynamic,\n\t\tSQLiteSetOperatorExcludedMethods,\n\t\ttrue\n\t> {\n\t\tthis.config.setOperators.push(...setOperators);\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Adds a `where` clause to the query.\n\t *\n\t * Calling this method will select only those rows that fulfill a specified condition.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#filtering}\n\t *\n\t * @param where the `where` clause.\n\t *\n\t * @example\n\t * You can use conditional operators and `sql function` to filter the rows to be selected.\n\t *\n\t * ```ts\n\t * // Select all cars with green color\n\t * await db.select().from(cars).where(eq(cars.color, 'green'));\n\t * // or\n\t * await db.select().from(cars).where(sql`${cars.color} = 'green'`)\n\t * ```\n\t *\n\t * You can logically combine conditional operators with `and()` and `or()` operators:\n\t *\n\t * ```ts\n\t * // Select all BMW cars with a green color\n\t * await db.select().from(cars).where(and(eq(cars.color, 'green'), eq(cars.brand, 'BMW')));\n\t *\n\t * // Select all cars with the green or blue color\n\t * await db.select().from(cars).where(or(eq(cars.color, 'green'), eq(cars.color, 'blue')));\n\t * ```\n\t */\n\twhere(\n\t\twhere: ((aliases: TSelection) => SQL | undefined) | SQL | undefined,\n\t): SQLiteSelectWithout<this, TDynamic, 'where'> {\n\t\tif (typeof where === 'function') {\n\t\t\twhere = where(\n\t\t\t\tnew Proxy(\n\t\t\t\t\tthis.config.fields,\n\t\t\t\t\tnew SelectionProxyHandler({ sqlAliasedBehavior: 'sql', sqlBehavior: 'sql' }),\n\t\t\t\t) as TSelection,\n\t\t\t);\n\t\t}\n\t\tthis.config.where = where;\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Adds a `having` clause to the query.\n\t *\n\t * Calling this method will select only those rows that fulfill a specified condition. It is typically used with aggregate functions to filter the aggregated data based on a specified condition.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#aggregations}\n\t *\n\t * @param having the `having` clause.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all brands with more than one car\n\t * await db.select({\n\t * \tbrand: cars.brand,\n\t * \tcount: sql<number>`cast(count(${cars.id}) as int)`,\n\t * })\n\t * .from(cars)\n\t * .groupBy(cars.brand)\n\t * .having(({ count }) => gt(count, 1));\n\t * ```\n\t */\n\thaving(\n\t\thaving: ((aliases: this['_']['selection']) => SQL | undefined) | SQL | undefined,\n\t): SQLiteSelectWithout<this, TDynamic, 'having'> {\n\t\tif (typeof having === 'function') {\n\t\t\thaving = having(\n\t\t\t\tnew Proxy(\n\t\t\t\t\tthis.config.fields,\n\t\t\t\t\tnew SelectionProxyHandler({ sqlAliasedBehavior: 'sql', sqlBehavior: 'sql' }),\n\t\t\t\t) as TSelection,\n\t\t\t);\n\t\t}\n\t\tthis.config.having = having;\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Adds a `group by` clause to the query.\n\t *\n\t * Calling this method will group rows that have the same values into summary rows, often used for aggregation purposes.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#aggregations}\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Group and count people by their last names\n\t * await db.select({\n\t * lastName: people.lastName,\n\t * count: sql<number>`cast(count(*) as int)`\n\t * })\n\t * .from(people)\n\t * .groupBy(people.lastName);\n\t * ```\n\t */\n\tgroupBy(\n\t\tbuilder: (aliases: this['_']['selection']) => ValueOrArray<SQLiteColumn | SQL | SQL.Aliased>,\n\t): SQLiteSelectWithout<this, TDynamic, 'groupBy'>;\n\tgroupBy(...columns: (SQLiteColumn | SQL | SQL.Aliased)[]): SQLiteSelectWithout<this, TDynamic, 'groupBy'>;\n\tgroupBy(\n\t\t...columns:\n\t\t\t| [(aliases: this['_']['selection']) => ValueOrArray<SQLiteColumn | SQL | SQL.Aliased>]\n\t\t\t| (SQLiteColumn | SQL | SQL.Aliased)[]\n\t): SQLiteSelectWithout<this, TDynamic, 'groupBy'> {\n\t\tif (typeof columns[0] === 'function') {\n\t\t\tconst groupBy = columns[0](\n\t\t\t\tnew Proxy(\n\t\t\t\t\tthis.config.fields,\n\t\t\t\t\tnew SelectionProxyHandler({ sqlAliasedBehavior: 'alias', sqlBehavior: 'sql' }),\n\t\t\t\t) as TSelection,\n\t\t\t);\n\t\t\tthis.config.groupBy = Array.isArray(groupBy) ? groupBy : [groupBy];\n\t\t} else {\n\t\t\tthis.config.groupBy = columns as (SQLiteColumn | SQL | SQL.Aliased)[];\n\t\t}\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Adds an `order by` clause to the query.\n\t *\n\t * Calling this method will sort the result-set in ascending or descending order. By default, the sort order is ascending.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#order-by}\n\t *\n\t * @example\n\t *\n\t * ```\n\t * // Select cars ordered by year\n\t * await db.select().from(cars).orderBy(cars.year);\n\t * ```\n\t *\n\t * You can specify whether results are in ascending or descending order with the `asc()` and `desc()` operators.\n\t *\n\t * ```ts\n\t * // Select cars ordered by year in descending order\n\t * await db.select().from(cars).orderBy(desc(cars.year));\n\t *\n\t * // Select cars ordered by year and price\n\t * await db.select().from(cars).orderBy(asc(cars.year), desc(cars.price));\n\t * ```\n\t */\n\torderBy(\n\t\tbuilder: (aliases: this['_']['selection']) => ValueOrArray<SQLiteColumn | SQL | SQL.Aliased>,\n\t): SQLiteSelectWithout<this, TDynamic, 'orderBy'>;\n\torderBy(...columns: (SQLiteColumn | SQL | SQL.Aliased)[]): SQLiteSelectWithout<this, TDynamic, 'orderBy'>;\n\torderBy(\n\t\t...columns:\n\t\t\t| [(aliases: this['_']['selection']) => ValueOrArray<SQLiteColumn | SQL | SQL.Aliased>]\n\t\t\t| (SQLiteColumn | SQL | SQL.Aliased)[]\n\t): SQLiteSelectWithout<this, TDynamic, 'orderBy'> {\n\t\tif (typeof columns[0] === 'function') {\n\t\t\tconst orderBy = columns[0](\n\t\t\t\tnew Proxy(\n\t\t\t\t\tthis.config.fields,\n\t\t\t\t\tnew SelectionProxyHandler({ sqlAliasedBehavior: 'alias', sqlBehavior: 'sql' }),\n\t\t\t\t) as TSelection,\n\t\t\t);\n\n\t\t\tconst orderByArray = Array.isArray(orderBy) ? orderBy : [orderBy];\n\n\t\t\tif (this.config.setOperators.length > 0) {\n\t\t\t\tthis.config.setOperators.at(-1)!.orderBy = orderByArray;\n\t\t\t} else {\n\t\t\t\tthis.config.orderBy = orderByArray;\n\t\t\t}\n\t\t} else {\n\t\t\tconst orderByArray = columns as (SQLiteColumn | SQL | SQL.Aliased)[];\n\n\t\t\tif (this.config.setOperators.length > 0) {\n\t\t\t\tthis.config.setOperators.at(-1)!.orderBy = orderByArray;\n\t\t\t} else {\n\t\t\t\tthis.config.orderBy = orderByArray;\n\t\t\t}\n\t\t}\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Adds a `limit` clause to the query.\n\t *\n\t * Calling this method will set the maximum number of rows that will be returned by this query.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#limit--offset}\n\t *\n\t * @param limit the `limit` clause.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Get the first 10 people from this query.\n\t * await db.select().from(people).limit(10);\n\t * ```\n\t */\n\tlimit(limit: number | Placeholder): SQLiteSelectWithout<this, TDynamic, 'limit'> {\n\t\tif (this.config.setOperators.length > 0) {\n\t\t\tthis.config.setOperators.at(-1)!.limit = limit;\n\t\t} else {\n\t\t\tthis.config.limit = limit;\n\t\t}\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Adds an `offset` clause to the query.\n\t *\n\t * Calling this method will skip a number of rows when returning results from this query.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#limit--offset}\n\t *\n\t * @param offset the `offset` clause.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Get the 10th-20th people from this query.\n\t * await db.select().from(people).offset(10).limit(10);\n\t * ```\n\t */\n\toffset(offset: number | Placeholder): SQLiteSelectWithout<this, TDynamic, 'offset'> {\n\t\tif (this.config.setOperators.length > 0) {\n\t\t\tthis.config.setOperators.at(-1)!.offset = offset;\n\t\t} else {\n\t\t\tthis.config.offset = offset;\n\t\t}\n\t\treturn this as any;\n\t}\n\n\t$withCache(config?: { config?: CacheConfig; tag?: string; autoInvalidate?: boolean } | false) {\n\t\tthis.cacheConfig = config === undefined\n\t\t\t? { config: {}, enabled: true, autoInvalidate: true }\n\t\t\t: config === false\n\t\t\t? { enabled: false }\n\t\t\t: { enabled: true, autoInvalidate: true, ...config };\n\t\treturn this;\n\t}\n\n\tgetSQL(): SQL {\n\t\tthis.config.fieldsFlat = orderSelectedFields<SQLiteColumn>(this.config.fields);\n\t\treturn this.dialect.buildSelectQuery(this.config);\n\t}\n\n\ttoSQL(): Query {\n\t\treturn this.dialect.sqlToQuery(this.getSQL());\n\t}\n\n\tas<TAlias extends string>(\n\t\talias: TAlias,\n\t): SubqueryWithSelection<this['_']['selectedFields'], TAlias> {\n\t\tconst usedTables: string[] = [];\n\t\tusedTables.push(...extractUsedTable(this.config.table));\n\t\tif (this.config.joins) { for (const it of this.config.joins) usedTables.push(...extractUsedTable(it.table)); }\n\n\t\treturn new Proxy(\n\t\t\tnew Subquery(this.getSQL(), this.config.fields, alias, false, [...new Set(usedTables)]),\n\t\t\tnew SelectionProxyHandler({ alias, sqlAliasedBehavior: 'alias', sqlBehavior: 'error' }),\n\t\t) as SubqueryWithSelection<this['_']['selectedFields'], TAlias>;\n\t}\n\n\t/** @internal */\n\toverride getSelectedFields(): this['_']['selectedFields'] {\n\t\treturn new Proxy(\n\t\t\tthis.config.fields,\n\t\t\tnew SelectionProxyHandler({ alias: this.tableName, sqlAliasedBehavior: 'alias', sqlBehavior: 'error' }),\n\t\t) as this['_']['selectedFields'];\n\t}\n\n\t/** @internal */\n\toverride withoutSelectionCastCodecs(): this {\n\t\treturn this;\n\t}\n\n\t$dynamic(): SQLiteSelectDynamic<this> {\n\t\treturn this;\n\t}\n}\n\nfunction createSetOperator(type: SetOperator, isAll: boolean): SQLiteCreateSetOperatorFn {\n\treturn (leftSelect, rightSelect, ...restSelects) => {\n\t\tconst setOperators = [rightSelect, ...restSelects].map((select) => ({\n\t\t\ttype,\n\t\t\tisAll,\n\t\t\trightSelect: select as AnySQLiteSelect,\n\t\t}));\n\n\t\tfor (const setOperator of setOperators) {\n\t\t\tif (!haveSameKeys((leftSelect as any).getSelectedFields(), setOperator.rightSelect.getSelectedFields())) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Set operator error (union / intersect / except): selected fields are not the same or are in a different order',\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn (leftSelect as AnySQLiteSelect).addSetOperators(setOperators) as any;\n\t};\n}\n\nconst getSQLiteSetOperators = () => ({\n\tunion,\n\tunionAll,\n\tintersect,\n\texcept,\n});\n\n/**\n * Adds `union` set operator to the query.\n *\n * Calling this method will combine the result sets of the `select` statements and remove any duplicate rows that appear across them.\n *\n * See docs: {@link https://orm.drizzle.team/docs/set-operations#union}\n *\n * @example\n *\n * ```ts\n * // Select all unique names from customers and users tables\n * import { union } from 'drizzle-orm/sqlite-core'\n *\n * await union(\n * db.select({ name: users.name }).from(users),\n * db.select({ name: customers.name }).from(customers)\n * );\n * // or\n * await db.select({ name: users.name })\n * .from(users)\n * .union(\n * db.select({ name: customers.name }).from(customers)\n * );\n * ```\n */\nexport const union = createSetOperator('union', false);\n\n/**\n * Adds `union all` set operator to the query.\n *\n * Calling this method will combine the result-set of the `select` statements and keep all duplicate rows that appear across them.\n *\n * See docs: {@link https://orm.drizzle.team/docs/set-operations#union-all}\n *\n * @example\n *\n * ```ts\n * // Select all transaction ids from both online and in-store sales\n * import { unionAll } from 'drizzle-orm/sqlite-core'\n *\n * await unionAll(\n * db.select({ transaction: onlineSales.transactionId }).from(onlineSales),\n * db.select({ transaction: inStoreSales.transactionId }).from(inStoreSales)\n * );\n * // or\n * await db.select({ transaction: onlineSales.transactionId })\n * .from(onlineSales)\n * .unionAll(\n * db.select({ transaction: inStoreSales.transactionId }).from(inStoreSales)\n * );\n * ```\n */\nexport const unionAll = createSetOperator('union', true);\n\n/**\n * Adds `intersect` set operator to the query.\n *\n * Calling this method will retain only the rows that are present in both result sets and eliminate duplicates.\n *\n * See docs: {@link https://orm.drizzle.team/docs/set-operations#intersect}\n *\n * @example\n *\n * ```ts\n * // Select course names that are offered in both departments A and B\n * import { intersect } from 'drizzle-orm/sqlite-core'\n *\n * await intersect(\n * db.select({ courseName: depA.courseName }).from(depA),\n * db.select({ courseName: depB.courseName }).from(depB)\n * );\n * // or\n * await db.select({ courseName: depA.courseName })\n * .from(depA)\n * .intersect(\n * db.select({ courseName: depB.courseName }).from(depB)\n * );\n * ```\n */\nexport const intersect = createSetOperator('intersect', false);\n\n/**\n * Adds `except` set operator to the query.\n *\n * Calling this method will retrieve all unique rows from the left query, except for the rows that are present in the result set of the right query.\n *\n * See docs: {@link https://orm.drizzle.team/docs/set-operations#except}\n *\n * @example\n *\n * ```ts\n * // Select all courses offered in department A but not in department B\n * import { except } from 'drizzle-orm/sqlite-core'\n *\n * await except(\n * db.select({ courseName: depA.courseName }).from(depA),\n * db.select({ courseName: depB.courseName }).from(depB)\n * );\n * // or\n * await db.select({ courseName: depA.courseName })\n * .from(depA)\n * .except(\n * db.select({ courseName: depB.courseName }).from(depB)\n * );\n * ```\n */\nexport const except = createSetOperator('except', false);\n", "import { aliasedTable, getOriginalColumnFromAlias } from '~/alias.ts';\nimport type { AnyColumn } from '~/column.ts';\nimport { Column } from '~/column.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport { DrizzleError } from '~/errors.ts';\nimport type { TypedQueryBuilder } from '~/query-builders/query-builder.ts';\nimport {\n\ttype AnyOne,\n\t// AggregatedField,\n\ttype BuildRelationalQueryResult,\n\ttype ColumnWithTSName,\n\ttype DBQueryConfig,\n\tgetTableAsAliasSQL,\n\tmakeDefaultRqbMapper,\n\tmakeJitRqbMapper,\n\tOne,\n\ttype Relation,\n\ttype RelationalRowsMapperGenerator,\n\trelationExtrasToSQL,\n\trelationsFilterToSQL,\n\trelationsOrderToSQL,\n\trelationToSQL,\n\ttype TableRelationalConfig,\n\ttype TablesRelationalConfig,\n\ttype WithContainer,\n} from '~/relations.ts';\nimport type { Name, Placeholder, SQLWrapper } from '~/sql/index.ts';\nimport { and, isSQLWrapper } from '~/sql/index.ts';\nimport { Param, type Query, SQL, sql, type SQLChunk, View } from '~/sql/sql.ts';\nimport { SQLiteColumn, type SQLiteCustomColumn } from '~/sqlite-core/columns/index.ts';\nimport type {\n\tAnySQLiteSelectQueryBuilder,\n\tSQLiteDeleteConfig,\n\tSQLiteInsertConfig,\n\tSQLiteUpdateConfig,\n} from '~/sqlite-core/query-builders/index.ts';\nimport { SQLiteTable } from '~/sqlite-core/table.ts';\nimport { Subquery } from '~/subquery.ts';\nimport { getTableName, Table, TableColumns } from '~/table.ts';\nimport {\n\tmakeDefaultQueryMapper,\n\tmakeJitQueryMapper,\n\torderSelectedFields,\n\ttype RowsMapperGenerator,\n\ttype UpdateSet,\n} from '~/utils.ts';\nimport { ViewBaseConfig } from '~/view-common.ts';\nimport type {\n\tSelectedFieldsOrdered,\n\tSQLiteSelectConfig,\n\tSQLiteSelectJoinConfig,\n} from './query-builders/select.types.ts';\nimport { SQLiteViewBase } from './view-base.ts';\nimport type { SQLiteView } from './view.ts';\n\n// Will add codecs here, do not remove\nexport interface SQLiteDialectConfig {\n\tuseJitMappers?: boolean;\n}\n\nexport class SQLiteDialect {\n\tstatic readonly [entityKind]: string = 'SQLiteDialect';\n\n\treadonly mapperGenerators: {\n\t\trows: RowsMapperGenerator;\n\t\trelationalRows: RelationalRowsMapperGenerator;\n\t};\n\n\tconstructor(config?: SQLiteDialectConfig) {\n\t\tthis.mapperGenerators = config?.useJitMappers\n\t\t\t? {\n\t\t\t\trows: makeJitQueryMapper,\n\t\t\t\trelationalRows: makeJitRqbMapper,\n\t\t\t}\n\t\t\t: {\n\t\t\t\trows: makeDefaultQueryMapper,\n\t\t\t\trelationalRows: makeDefaultRqbMapper,\n\t\t\t};\n\t}\n\n\tescapeName(name: string): string {\n\t\treturn `\"${name.replace(/\"/g, '\"\"')}\"`;\n\t}\n\n\tescapeParam(_num: number): string {\n\t\treturn '?';\n\t}\n\n\tescapeString(str: string): string {\n\t\treturn `'${str.replace(/'/g, \"''\")}'`;\n\t}\n\n\tprivate buildWithCTE(queries: Subquery[] | undefined): SQL | undefined {\n\t\tif (!queries?.length) return undefined;\n\n\t\tconst withSqlChunks = [sql`with `];\n\t\tfor (const [i, w] of queries.entries()) {\n\t\t\twithSqlChunks.push(sql`${sql.identifier(w._.alias)} as (${w._.sql})`);\n\t\t\tif (i < queries.length - 1) {\n\t\t\t\twithSqlChunks.push(sql`, `);\n\t\t\t}\n\t\t}\n\t\twithSqlChunks.push(sql` `);\n\t\treturn sql.join(withSqlChunks);\n\t}\n\n\tbuildDeleteQuery({\n\t\ttable,\n\t\twhere,\n\t\treturning,\n\t\twithList,\n\t\tlimit,\n\t\torderBy,\n\t}: SQLiteDeleteConfig): SQL {\n\t\tconst withSql = this.buildWithCTE(withList);\n\n\t\tconst returningSql = returning\n\t\t\t? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}`\n\t\t\t: undefined;\n\n\t\tconst whereSql = where ? sql` where ${where}` : undefined;\n\n\t\tconst orderBySql = this.buildOrderBy(orderBy);\n\n\t\tconst limitSql = this.buildLimit(limit);\n\n\t\treturn sql`${withSql}delete from ${table}${whereSql}${returningSql}${orderBySql}${limitSql}`;\n\t}\n\n\tbuildUpdateSet(table: SQLiteTable, set: UpdateSet): SQL {\n\t\tconst tableColumns = table[Table.Symbol.Columns];\n\n\t\tconst columnNames = Object.keys(tableColumns).filter(\n\t\t\t(colName) =>\n\t\t\t\tset[colName] !== undefined\n\t\t\t\t|| tableColumns[colName]?.onUpdateFn !== undefined,\n\t\t);\n\n\t\tconst setLength = columnNames.length;\n\t\treturn sql.join(\n\t\t\tcolumnNames.flatMap((colName, i) => {\n\t\t\t\tconst col = tableColumns[colName]!;\n\n\t\t\t\tconst onUpdateFnResult = col.onUpdateFn?.();\n\t\t\t\tconst value = set[colName]\n\t\t\t\t\t?? (is(onUpdateFnResult, SQL)\n\t\t\t\t\t\t? onUpdateFnResult\n\t\t\t\t\t\t: sql.param(onUpdateFnResult, col));\n\t\t\t\tconst res = sql`${sql.identifier(col.name)} = ${value}`;\n\n\t\t\t\tif (i < setLength - 1) {\n\t\t\t\t\treturn [res, sql.raw(', ')];\n\t\t\t\t}\n\t\t\t\treturn [res];\n\t\t\t}),\n\t\t);\n\t}\n\n\tbuildUpdateQuery({\n\t\ttable,\n\t\tset,\n\t\twhere,\n\t\treturning,\n\t\twithList,\n\t\tjoins,\n\t\tfrom,\n\t\tlimit,\n\t\torderBy,\n\t}: SQLiteUpdateConfig): SQL {\n\t\tconst withSql = this.buildWithCTE(withList);\n\n\t\tconst setSql = this.buildUpdateSet(table, set);\n\n\t\tconst fromSql = from && sql.join([sql.raw(' from '), this.buildFromTable(from)]);\n\n\t\tconst joinsSql = this.buildJoins(joins);\n\n\t\tconst returningSql = returning\n\t\t\t? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}`\n\t\t\t: undefined;\n\n\t\tconst whereSql = where ? sql` where ${where}` : undefined;\n\n\t\tconst orderBySql = this.buildOrderBy(orderBy);\n\n\t\tconst limitSql = this.buildLimit(limit);\n\n\t\treturn sql`${withSql}update ${table} set ${setSql}${fromSql}${joinsSql}${whereSql}${returningSql}${orderBySql}${limitSql}`;\n\t}\n\n\t/**\n\t * Builds selection SQL with provided fields/expressions\n\t *\n\t * Examples:\n\t *\n\t * `select <selection> from`\n\t *\n\t * `insert ... returning <selection>`\n\t *\n\t * If `isSingleTable` is true, then columns won't be prefixed with table name\n\t */\n\tprivate buildSelection(\n\t\tfields: SelectedFieldsOrdered,\n\t\t{ isSingleTable = false }: { isSingleTable?: boolean } = {},\n\t): SQL {\n\t\tconst columnsLen = fields.length;\n\n\t\tconst chunks = fields.flatMap(({ field }, i) => {\n\t\t\tconst chunk: SQLChunk[] = [];\n\n\t\t\tif (is(field, SQL.Aliased)) {\n\t\t\t\tif (field.isSelectionField) {\n\t\t\t\t\tif (!isSingleTable && field.origin !== undefined) {\n\t\t\t\t\t\tchunk.push(sql.identifier(field.origin), sql.raw('.'));\n\t\t\t\t\t}\n\t\t\t\t\tchunk.push(sql.identifier(field.fieldAlias));\n\t\t\t\t} else {\n\t\t\t\t\tconst query = field.sql;\n\n\t\t\t\t\tif (isSingleTable) {\n\t\t\t\t\t\tconst newSql = new SQL(\n\t\t\t\t\t\t\tquery.queryChunks.map((c) => {\n\t\t\t\t\t\t\t\tif (is(c, Column)) {\n\t\t\t\t\t\t\t\t\treturn sql.identifier(c.name);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn c;\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tchunk.push(query.shouldInlineParams ? newSql.inlineParams() : newSql);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchunk.push(query);\n\t\t\t\t\t}\n\n\t\t\t\t\tchunk.push(sql` as ${sql.identifier(field.fieldAlias)}`);\n\t\t\t\t}\n\t\t\t} else if (is(field, SQL)) {\n\t\t\t\tconst query = field;\n\n\t\t\t\tif (isSingleTable) {\n\t\t\t\t\tconst newSql = new SQL(\n\t\t\t\t\t\tquery.queryChunks.map((c) => {\n\t\t\t\t\t\t\tif (is(c, Column)) {\n\t\t\t\t\t\t\t\treturn sql.identifier(c.name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn c;\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\n\t\t\t\t\tchunk.push(query.shouldInlineParams ? newSql.inlineParams() : newSql);\n\t\t\t\t} else {\n\t\t\t\t\tchunk.push(query);\n\t\t\t\t}\n\t\t\t} else if (is(field, Column)) {\n\t\t\t\t// TODO: remove after implementing codecs\n\t\t\t\tif (field.columnType === 'SQLiteNumericBigInt' || field.columnType === 'SQLiteNumeric') {\n\t\t\t\t\tif (isSingleTable) {\n\t\t\t\t\t\tchunk.push(\n\t\t\t\t\t\t\tfield.isAlias\n\t\t\t\t\t\t\t\t? sql`cast(${sql.identifier(getOriginalColumnFromAlias(field).name)} as text) as ${field}`\n\t\t\t\t\t\t\t\t: sql`cast(${sql.identifier(field.name)} as text)`,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchunk.push(\n\t\t\t\t\t\t\tfield.isAlias\n\t\t\t\t\t\t\t\t? sql`cast(${getOriginalColumnFromAlias(field)} as text) as ${field}`\n\t\t\t\t\t\t\t\t: sql`cast(${field} as text)`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (isSingleTable) {\n\t\t\t\t\t\tchunk.push(\n\t\t\t\t\t\t\tfield.isAlias\n\t\t\t\t\t\t\t\t? sql`${sql.identifier(getOriginalColumnFromAlias(field).name)} as ${field}`\n\t\t\t\t\t\t\t\t: sql.identifier(field.name),\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchunk.push(\n\t\t\t\t\t\t\tfield.isAlias\n\t\t\t\t\t\t\t\t? sql`${getOriginalColumnFromAlias(field)} as ${field}`\n\t\t\t\t\t\t\t\t: field,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (is(field, Subquery)) {\n\t\t\t\tif (!field._.isWith) {\n\t\t\t\t\tchunk.push(sql`(${field._.sql}) ${sql.identifier(field._.alias)}`);\n\t\t\t\t} else {\n\t\t\t\t\tchunk.push(field);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (i < columnsLen - 1) {\n\t\t\t\tchunk.push(sql`, `);\n\t\t\t}\n\n\t\t\treturn chunk;\n\t\t});\n\n\t\treturn sql.join(chunks);\n\t}\n\n\tprivate buildJoins(\n\t\tjoins: SQLiteSelectJoinConfig[] | undefined,\n\t): SQL | undefined {\n\t\tif (!joins || joins.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst joinsArray: SQL[] = [];\n\n\t\tif (joins) {\n\t\t\tfor (const [index, joinMeta] of joins.entries()) {\n\t\t\t\tif (index === 0) {\n\t\t\t\t\tjoinsArray.push(sql` `);\n\t\t\t\t}\n\t\t\t\tconst table = joinMeta.table;\n\t\t\t\tconst onSql = joinMeta.on ? sql` on ${joinMeta.on}` : undefined;\n\n\t\t\t\tif (is(table, SQLiteTable)) {\n\t\t\t\t\tconst tableName = table[SQLiteTable.Symbol.Name];\n\t\t\t\t\tconst tableSchema = table[SQLiteTable.Symbol.Schema];\n\t\t\t\t\tconst origTableName = table[SQLiteTable.Symbol.OriginalName];\n\t\t\t\t\tconst alias = tableName === origTableName ? undefined : joinMeta.alias;\n\t\t\t\t\tjoinsArray.push(\n\t\t\t\t\t\tsql`${sql.raw(joinMeta.joinType)} join ${tableSchema ? sql`${sql.identifier(tableSchema)}.` : undefined}${\n\t\t\t\t\t\t\tsql.identifier(\n\t\t\t\t\t\t\t\torigTableName,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}${alias && sql` ${sql.identifier(alias)}`}${onSql}`,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tjoinsArray.push(\n\t\t\t\t\t\tsql`${sql.raw(joinMeta.joinType)} join ${table}${onSql}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (index < joins.length - 1) {\n\t\t\t\t\tjoinsArray.push(sql` `);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn sql.join(joinsArray);\n\t}\n\n\tprivate buildLimit(limit: number | Placeholder | undefined): SQL | undefined {\n\t\treturn typeof limit === 'object'\n\t\t\t\t|| (typeof limit === 'number' && limit >= 0)\n\t\t\t? sql` limit ${limit}`\n\t\t\t: undefined;\n\t}\n\n\tprivate buildOrderBy(\n\t\torderBy: (SQLiteColumn | SQL | SQL.Aliased)[] | undefined,\n\t): SQL | undefined {\n\t\tconst orderByList: (SQLiteColumn | SQL | SQL.Aliased)[] = [];\n\n\t\tif (orderBy) {\n\t\t\tfor (const [index, orderByValue] of orderBy.entries()) {\n\t\t\t\torderByList.push(orderByValue);\n\n\t\t\t\tif (index < orderBy.length - 1) {\n\t\t\t\t\torderByList.push(sql`, `);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn orderByList.length > 0\n\t\t\t? sql` order by ${sql.join(orderByList)}`\n\t\t\t: undefined;\n\t}\n\n\tprivate buildFromTable(\n\t\ttable: SQL | Subquery | SQLiteViewBase | SQLiteTable | undefined,\n\t): SQL | Subquery | SQLiteViewBase | SQLiteTable | undefined {\n\t\tif (is(table, Table) && table[Table.Symbol.IsAlias]) {\n\t\t\treturn sql`${sql`${sql.identifier(table[Table.Symbol.Schema] ?? '')}.`.if(table[Table.Symbol.Schema])}${\n\t\t\t\tsql.identifier(\n\t\t\t\t\ttable[Table.Symbol.OriginalName],\n\t\t\t\t)\n\t\t\t} ${sql.identifier(table[Table.Symbol.Name])}`;\n\t\t}\n\n\t\tif (is(table, View) && table[ViewBaseConfig].isAlias) {\n\t\t\tlet fullName = sql`${sql.identifier(table[ViewBaseConfig].originalName)}`;\n\t\t\tif (table[ViewBaseConfig].schema) {\n\t\t\t\tfullName = sql`${sql.identifier(table[ViewBaseConfig].schema)}.${fullName}`;\n\t\t\t}\n\t\t\treturn sql`${fullName} ${sql.identifier(table[ViewBaseConfig].name)}`;\n\t\t}\n\n\t\treturn table;\n\t}\n\n\tbuildSelectQuery({\n\t\twithList,\n\t\tfields,\n\t\tfieldsFlat,\n\t\twhere,\n\t\thaving,\n\t\ttable,\n\t\tjoins,\n\t\torderBy,\n\t\tgroupBy,\n\t\tlimit,\n\t\toffset,\n\t\tdistinct,\n\t\tsetOperators,\n\t}: SQLiteSelectConfig): SQL {\n\t\tconst fieldsList = fieldsFlat ?? orderSelectedFields<SQLiteColumn>(fields);\n\t\tfor (const f of fieldsList) {\n\t\t\tif (\n\t\t\t\tis(f.field, Column)\n\t\t\t\t&& getTableName(f.field.table)\n\t\t\t\t\t!== (is(table, Subquery)\n\t\t\t\t\t\t? table._.alias\n\t\t\t\t\t\t: is(table, SQLiteViewBase)\n\t\t\t\t\t\t? table[ViewBaseConfig].name\n\t\t\t\t\t\t: is(table, SQL)\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: getTableName(table))\n\t\t\t\t&& !((table) =>\n\t\t\t\t\tjoins?.some(\n\t\t\t\t\t\t({ alias }) =>\n\t\t\t\t\t\t\talias\n\t\t\t\t\t\t\t\t=== (table[Table.Symbol.IsAlias]\n\t\t\t\t\t\t\t\t\t? getTableName(table)\n\t\t\t\t\t\t\t\t\t: table[Table.Symbol.BaseName]),\n\t\t\t\t\t))(f.field.table)\n\t\t\t) {\n\t\t\t\tconst tableName = getTableName(f.field.table);\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Your \"${\n\t\t\t\t\t\tf.path.join(\n\t\t\t\t\t\t\t'->',\n\t\t\t\t\t\t)\n\t\t\t\t\t}\" 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\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst isSingleTable = !joins || joins.length === 0;\n\n\t\tconst withSql = this.buildWithCTE(withList);\n\n\t\tconst distinctSql = distinct ? sql` distinct` : undefined;\n\n\t\tconst selection = this.buildSelection(fieldsList, { isSingleTable });\n\n\t\tconst tableSql = this.buildFromTable(table);\n\n\t\tconst joinsSql = this.buildJoins(joins);\n\n\t\tconst whereSql = where ? sql` where ${where}` : undefined;\n\n\t\tconst havingSql = having ? sql` having ${having}` : undefined;\n\n\t\tconst groupByList: (SQL | AnyColumn | SQL.Aliased)[] = [];\n\t\tif (groupBy) {\n\t\t\tfor (const [index, groupByValue] of groupBy.entries()) {\n\t\t\t\tgroupByList.push(groupByValue);\n\n\t\t\t\tif (index < groupBy.length - 1) {\n\t\t\t\t\tgroupByList.push(sql`, `);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst groupBySql = groupByList.length > 0\n\t\t\t? sql` group by ${sql.join(groupByList)}`\n\t\t\t: undefined;\n\n\t\tconst orderBySql = this.buildOrderBy(orderBy);\n\n\t\tconst limitSql = this.buildLimit(limit);\n\n\t\tconst offsetSql = offset ? sql` offset ${offset}` : undefined;\n\n\t\tconst finalQuery =\n\t\t\tsql`${withSql}select${distinctSql} ${selection} from ${tableSql}${joinsSql}${whereSql}${groupBySql}${havingSql}${orderBySql}${limitSql}${offsetSql}`;\n\n\t\tif (setOperators.length > 0) {\n\t\t\treturn this.buildSetOperations(finalQuery, setOperators);\n\t\t}\n\n\t\treturn finalQuery;\n\t}\n\n\tbuildSetOperations(\n\t\tleftSelect: SQL,\n\t\tsetOperators: SQLiteSelectConfig['setOperators'],\n\t): SQL {\n\t\tconst [setOperator, ...rest] = setOperators;\n\n\t\tif (!setOperator) {\n\t\t\tthrow new Error('Cannot pass undefined values to any set operator');\n\t\t}\n\n\t\tif (rest.length === 0) {\n\t\t\treturn this.buildSetOperationQuery({ leftSelect, setOperator });\n\t\t}\n\n\t\t// Some recursive magic here\n\t\treturn this.buildSetOperations(\n\t\t\tthis.buildSetOperationQuery({ leftSelect, setOperator }),\n\t\t\trest,\n\t\t);\n\t}\n\n\tbuildSetOperationQuery({\n\t\tleftSelect,\n\t\tsetOperator: { type, isAll, rightSelect, limit, orderBy, offset },\n\t}: {\n\t\tleftSelect: SQL;\n\t\tsetOperator: SQLiteSelectConfig['setOperators'][number];\n\t}): SQL {\n\t\t// SQLite doesn't support parenthesis in set operations\n\t\tconst leftChunk = sql`${leftSelect.getSQL()} `;\n\t\tconst rightChunk = sql`${rightSelect.getSQL()}`;\n\n\t\tlet orderBySql;\n\t\tif (orderBy && orderBy.length > 0) {\n\t\t\tconst orderByValues: (SQL<unknown> | Name)[] = [];\n\n\t\t\t// The next bit is necessary because the sql operator replaces ${table.column} with `table`.`column`\n\t\t\t// which is invalid Sql syntax, Table from one of the SELECTs cannot be used in global ORDER clause\n\t\t\tfor (const singleOrderBy of orderBy) {\n\t\t\t\tif (is(singleOrderBy, SQLiteColumn)) {\n\t\t\t\t\torderByValues.push(sql.identifier(singleOrderBy.name));\n\t\t\t\t} else if (is(singleOrderBy, SQL)) {\n\t\t\t\t\tfor (let i = 0; i < singleOrderBy.queryChunks.length; i++) {\n\t\t\t\t\t\tconst chunk = singleOrderBy.queryChunks[i];\n\n\t\t\t\t\t\tif (is(chunk, SQLiteColumn)) {\n\t\t\t\t\t\t\tsingleOrderBy.queryChunks[i] = sql.identifier(chunk.name);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\torderByValues.push(sql`${singleOrderBy}`);\n\t\t\t\t} else {\n\t\t\t\t\torderByValues.push(sql`${singleOrderBy}`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\torderBySql = sql` order by ${sql.join(orderByValues, sql`, `)}`;\n\t\t}\n\n\t\tconst limitSql = typeof limit === 'object' || (typeof limit === 'number' && limit >= 0)\n\t\t\t? sql` limit ${limit}`\n\t\t\t: undefined;\n\n\t\tconst operatorChunk = sql.raw(`${type} ${isAll ? 'all ' : ''}`);\n\n\t\tconst offsetSql = offset ? sql` offset ${offset}` : undefined;\n\n\t\treturn sql`${leftChunk}${operatorChunk}${rightChunk}${orderBySql}${limitSql}${offsetSql}`;\n\t}\n\n\tbuildInsertQuery({\n\t\ttable,\n\t\tvalues: valuesOrSelect,\n\t\tonConflict,\n\t\treturning,\n\t\twithList,\n\t\tselect,\n\t}: SQLiteInsertConfig): SQL {\n\t\t// const isSingleValue = values.length === 1;\n\t\tconst valuesSqlList: ((SQLChunk | SQL)[] | SQL)[] = [];\n\t\tconst columns: Record<string, SQLiteColumn> = table[Table.Symbol.Columns];\n\n\t\tconst colEntries: [string, SQLiteColumn][] = Object.entries(columns);\n\t\tconst colEntriesFiltered: [string, SQLiteColumn][] = select && !is(valuesOrSelect, SQL)\n\t\t\t? Object\n\t\t\t\t.keys((valuesOrSelect as TypedQueryBuilder<any>).getSelectedFields())\n\t\t\t\t.map((key) => [key, columns[key]] as [string, SQLiteColumn])\n\t\t\t: colEntries.filter(([_, col]) => !col.shouldDisableInsert());\n\n\t\tconst insertOrder = colEntriesFiltered.map(([, column]) => sql.identifier(column.name));\n\n\t\tif (select) {\n\t\t\tconst select = valuesOrSelect as AnySQLiteSelectQueryBuilder | SQL;\n\n\t\t\tif (is(select, SQL)) {\n\t\t\t\tvaluesSqlList.push(select);\n\t\t\t} else {\n\t\t\t\tvaluesSqlList.push(select.getSQL());\n\t\t\t}\n\t\t} else {\n\t\t\tconst values = valuesOrSelect as Record<string, Param | SQL>[];\n\t\t\tvaluesSqlList.push(sql.raw('values '));\n\n\t\t\tfor (const [valueIndex, value] of values.entries()) {\n\t\t\t\tconst valueList: (SQLChunk | SQL)[] = [];\n\t\t\t\tfor (const [fieldName, col] of colEntriesFiltered) {\n\t\t\t\t\tconst colValue = value[fieldName];\n\t\t\t\t\tif (\n\t\t\t\t\t\tcolValue === undefined\n\t\t\t\t\t\t|| (is(colValue, Param) && colValue.value === undefined)\n\t\t\t\t\t) {\n\t\t\t\t\t\tlet defaultValue;\n\t\t\t\t\t\tif (col.default !== null && col.default !== undefined) {\n\t\t\t\t\t\t\tdefaultValue = is(col.default, SQL)\n\t\t\t\t\t\t\t\t? col.default\n\t\t\t\t\t\t\t\t: sql.param(col.default, col);\n\t\t\t\t\t\t\t// eslint-disable-next-line unicorn/no-negated-condition\n\t\t\t\t\t\t} else if (col.defaultFn !== undefined) {\n\t\t\t\t\t\t\tconst defaultFnResult = col.defaultFn();\n\t\t\t\t\t\t\tdefaultValue = is(defaultFnResult, SQL)\n\t\t\t\t\t\t\t\t? defaultFnResult\n\t\t\t\t\t\t\t\t: sql.param(defaultFnResult, col);\n\t\t\t\t\t\t\t// eslint-disable-next-line unicorn/no-negated-condition\n\t\t\t\t\t\t} else if (!col.default && col.onUpdateFn !== undefined) {\n\t\t\t\t\t\t\tconst onUpdateFnResult = col.onUpdateFn();\n\t\t\t\t\t\t\tdefaultValue = is(onUpdateFnResult, SQL)\n\t\t\t\t\t\t\t\t? onUpdateFnResult\n\t\t\t\t\t\t\t\t: sql.param(onUpdateFnResult, col);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdefaultValue = sql`null`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalueList.push(defaultValue);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalueList.push(colValue);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvaluesSqlList.push(valueList);\n\t\t\t\tif (valueIndex < values.length - 1) {\n\t\t\t\t\tvaluesSqlList.push(sql`, `);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst withSql = this.buildWithCTE(withList);\n\n\t\tconst valuesSql = sql.join(valuesSqlList);\n\n\t\tconst returningSql = returning\n\t\t\t? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}`\n\t\t\t: undefined;\n\n\t\tconst onConflictSql = onConflict?.length ? sql.join(onConflict) : undefined;\n\n\t\t// if (isSingleValue && valuesSqlList.length === 0){\n\t\t// \treturn sql`insert into ${table} default values ${onConflictSql}${returningSql}`;\n\t\t// }\n\n\t\treturn sql`${withSql}insert into ${table} ${insertOrder} ${valuesSql}${onConflictSql}${returningSql}`;\n\t}\n\n\tsqlToQuery(sql: SQL, invokeSource?: 'indexes' | undefined): Query {\n\t\treturn sql.toQuery({\n\t\t\tescapeName: this.escapeName,\n\t\t\tescapeParam: this.escapeParam,\n\t\t\tescapeString: this.escapeString,\n\t\t\tinvokeSource,\n\t\t});\n\t}\n\n\tprivate nestedSelectionerror() {\n\t\tthrow new DrizzleError({\n\t\t\tmessage: `Views with nested selections are not supported by the relational query builder`,\n\t\t});\n\t}\n\n\tprivate buildRqbColumn(table: Table | View, column: unknown, key: string, inJson: boolean) {\n\t\tif (is(column, Column)) {\n\t\t\tconst name = sql`${table}.${sql.identifier(column.name)}`;\n\n\t\t\tswitch (column.columnType) {\n\t\t\t\tcase 'SQLiteBigInt':\n\t\t\t\tcase 'SQLiteBlobJson':\n\t\t\t\tcase 'SQLiteBlobBuffer': {\n\t\t\t\t\tif (!inJson) return sql`${name} as ${sql.identifier(key)}`;\n\t\t\t\t\treturn sql`hex(${name}) as ${sql.identifier(key)}`;\n\t\t\t\t}\n\n\t\t\t\tcase 'SQLiteNumeric':\n\t\t\t\tcase 'SQLiteNumericNumber':\n\t\t\t\tcase 'SQLiteNumericBigInt': {\n\t\t\t\t\t// Special case - needs casting in root of query as well for drivers chop it down to number by default\n\t\t\t\t\t// TODO: handle with codecs\n\t\t\t\t\treturn sql`cast(${name} as text) as ${sql.identifier(key)}`;\n\t\t\t\t}\n\n\t\t\t\tcase 'SQLiteCustomColumn': {\n\t\t\t\t\tif (!inJson) return sql`${name} as ${sql.identifier(key)}`;\n\t\t\t\t\treturn sql`${(<SQLiteCustomColumn<any>> column).jsonSelectIdentifier(name, sql)} as ${sql.identifier(key)}`;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\treturn sql`${name} as ${sql.identifier(key)}`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn sql`${table}.${\n\t\t\tis(column, SQL.Aliased)\n\t\t\t\t? sql.identifier(column.fieldAlias)\n\t\t\t\t: isSQLWrapper(column)\n\t\t\t\t? sql.identifier(key)\n\t\t\t\t: this.nestedSelectionerror()\n\t\t} as ${sql.identifier(key)}`;\n\t}\n\n\tprivate unwrapAllColumns = (\n\t\ttable: Table | View,\n\t\tselection: BuildRelationalQueryResult['selection'],\n\t\tinJson: boolean,\n\t) => {\n\t\treturn sql.join(\n\t\t\tObject.entries(table[TableColumns]).map(([k, v]) => {\n\t\t\t\tselection.push({\n\t\t\t\t\tkey: k,\n\t\t\t\t\tfield: v as Column | SQL | SQLWrapper | SQL.Aliased,\n\t\t\t\t});\n\n\t\t\t\treturn this.buildRqbColumn(table, v, k, inJson);\n\t\t\t}),\n\t\t\tsql`, `,\n\t\t);\n\t};\n\n\tprivate getSelectedTableColumns = (\n\t\ttable: Table | View,\n\t\tcolumns: Record<string, boolean | undefined>,\n\t) => {\n\t\tconst selectedColumns: ColumnWithTSName[] = [];\n\t\tconst columnContainer = table[TableColumns];\n\t\tconst entries = Object.entries(columns);\n\n\t\tlet colSelectionMode: boolean | undefined;\n\t\tfor (const [k, v] of entries) {\n\t\t\tif (v === undefined) continue;\n\t\t\tcolSelectionMode = colSelectionMode || v;\n\n\t\t\tif (v) {\n\t\t\t\tconst column = columnContainer[k]!;\n\n\t\t\t\tselectedColumns.push({\n\t\t\t\t\tcolumn: column as Column | SQL | SQLWrapper | SQL.Aliased,\n\t\t\t\t\ttsName: k,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (colSelectionMode === false) {\n\t\t\tfor (const [k, v] of Object.entries(columnContainer)) {\n\t\t\t\tif (columns[k] === false) continue;\n\n\t\t\t\tselectedColumns.push({\n\t\t\t\t\tcolumn: v as Column | SQL | SQLWrapper | SQL.Aliased | Table,\n\t\t\t\t\ttsName: k,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn selectedColumns;\n\t};\n\n\tprivate buildColumns = (\n\t\ttable: SQLiteTable | SQLiteView,\n\t\tselection: BuildRelationalQueryResult['selection'],\n\t\tinJson: boolean,\n\t\tparams?: DBQueryConfig<'many'>,\n\t) =>\n\t\tparams?.columns\n\t\t\t? (() => {\n\t\t\t\tconst columnIdentifiers: SQL[] = [];\n\n\t\t\t\tconst selectedColumns = this.getSelectedTableColumns(\n\t\t\t\t\ttable,\n\t\t\t\t\tparams?.columns,\n\t\t\t\t);\n\n\t\t\t\tfor (const { column, tsName } of selectedColumns) {\n\t\t\t\t\tcolumnIdentifiers.push(this.buildRqbColumn(table, column, tsName, inJson));\n\t\t\t\t\tselection.push({\n\t\t\t\t\t\tkey: tsName,\n\t\t\t\t\t\tfield: column,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn columnIdentifiers.length\n\t\t\t\t\t? sql.join(columnIdentifiers, sql`, `)\n\t\t\t\t\t: undefined;\n\t\t\t})()\n\t\t\t: this.unwrapAllColumns(table, selection, inJson);\n\n\tbuildRelationalQuery({\n\t\tschema,\n\t\ttable,\n\t\ttableConfig,\n\t\tqueryConfig: config,\n\t\trelationWhere,\n\t\tmode,\n\t\tisNested,\n\t\terrorPath,\n\t\tdepth,\n\t\tthroughJoin,\n\t\tjsonb,\n\t}: {\n\t\tschema: TablesRelationalConfig;\n\t\ttable: SQLiteTable | SQLiteView;\n\t\ttableConfig: TableRelationalConfig;\n\t\tqueryConfig?: DBQueryConfig<'many'> | true;\n\t\trelationWhere?: SQL;\n\t\tmode: 'first' | 'many';\n\t\tisNested?: boolean;\n\t\terrorPath?: string;\n\t\tdepth?: number;\n\t\tthroughJoin?: SQL;\n\t\tjsonb: SQL;\n\t}): BuildRelationalQueryResult {\n\t\tconst selection: BuildRelationalQueryResult['selection'] = [];\n\t\tconst isSingle = mode === 'first';\n\t\tconst params = config === true ? undefined : config;\n\t\tconst currentPath = errorPath ?? '';\n\t\tconst currentDepth = depth ?? 0;\n\t\tif (!currentDepth) table = aliasedTable(table, `d${currentDepth}`);\n\n\t\tconst limit = isSingle ? 1 : params?.limit;\n\t\tconst offset = params?.offset;\n\n\t\tconst columns = this.buildColumns(table, selection, !!isNested, params);\n\n\t\tconst where: SQL | undefined = params?.where && relationWhere\n\t\t\t? and(\n\t\t\t\trelationsFilterToSQL(\n\t\t\t\t\ttable,\n\t\t\t\t\tparams.where,\n\t\t\t\t\ttableConfig.relations,\n\t\t\t\t\tschema,\n\t\t\t\t),\n\t\t\t\trelationWhere,\n\t\t\t)\n\t\t\t: params?.where\n\t\t\t? relationsFilterToSQL(\n\t\t\t\ttable,\n\t\t\t\tparams.where,\n\t\t\t\ttableConfig.relations,\n\t\t\t\tschema,\n\t\t\t)\n\t\t\t: relationWhere;\n\t\tconst order = params?.orderBy\n\t\t\t? relationsOrderToSQL(table, params.orderBy)\n\t\t\t: undefined;\n\t\tconst extras = params?.extras\n\t\t\t? relationExtrasToSQL(table, params.extras)\n\t\t\t: undefined;\n\t\tif (extras) selection.push(...extras.selection);\n\n\t\tconst joins = params\n\t\t\t? (() => {\n\t\t\t\tconst { with: joins } = params as WithContainer;\n\t\t\t\tif (!joins) return;\n\n\t\t\t\tconst withEntries = Object.entries(joins).filter(([_, v]) => v);\n\t\t\t\tif (!withEntries.length) return;\n\n\t\t\t\treturn sql.join(\n\t\t\t\t\twithEntries.map(([k, join]) => {\n\t\t\t\t\t\t// if (is(tableConfig.relations[k]!, AggregatedField)) {\n\t\t\t\t\t\t// \tconst relation = tableConfig.relations[k]!;\n\n\t\t\t\t\t\t// \trelation.onTable(table);\n\t\t\t\t\t\t// \tconst query = relation.getSQL();\n\n\t\t\t\t\t\t// \tselection.push({\n\t\t\t\t\t\t// \t\tkey: k,\n\t\t\t\t\t\t// \t\tfield: relation,\n\t\t\t\t\t\t// \t});\n\n\t\t\t\t\t\t// \treturn sql`(${query}) as ${sql.identifier(k)}`;\n\t\t\t\t\t\t// }\n\n\t\t\t\t\t\tconst relation = tableConfig.relations[k]! as Relation;\n\t\t\t\t\t\tconst isSingle = is(relation, One);\n\t\t\t\t\t\tconst targetTable = aliasedTable(\n\t\t\t\t\t\t\trelation.targetTable,\n\t\t\t\t\t\t\t`d${currentDepth + 1}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst throughTable = relation.throughTable\n\t\t\t\t\t\t\t? aliasedTable(relation.throughTable, `tr${currentDepth}`)\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t\tconst { filter, joinCondition } = relationToSQL(\n\t\t\t\t\t\t\trelation,\n\t\t\t\t\t\t\ttable,\n\t\t\t\t\t\t\ttargetTable,\n\t\t\t\t\t\t\tthroughTable,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst throughJoin = throughTable\n\t\t\t\t\t\t\t? sql` inner join ${getTableAsAliasSQL(throughTable)} on ${joinCondition!}`\n\t\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\t\tconst innerQuery = this.buildRelationalQuery({\n\t\t\t\t\t\t\ttable: targetTable as SQLiteTable | SQLiteView,\n\t\t\t\t\t\t\tmode: isSingle ? 'first' : 'many',\n\t\t\t\t\t\t\tschema,\n\t\t\t\t\t\t\tqueryConfig: join as DBQueryConfig,\n\t\t\t\t\t\t\ttableConfig: schema[relation.targetTableName]!,\n\t\t\t\t\t\t\trelationWhere: filter,\n\t\t\t\t\t\t\tisNested: true,\n\t\t\t\t\t\t\terrorPath: `${currentPath.length ? `${currentPath}.` : ''}${k}`,\n\t\t\t\t\t\t\tdepth: currentDepth + 1,\n\t\t\t\t\t\t\tthroughJoin,\n\t\t\t\t\t\t\tjsonb,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tselection.push({\n\t\t\t\t\t\t\tfield: targetTable,\n\t\t\t\t\t\t\tkey: k,\n\t\t\t\t\t\t\tselection: innerQuery.selection,\n\t\t\t\t\t\t\tisArray: !isSingle,\n\t\t\t\t\t\t\tisOptional: ((relation as AnyOne).optional ?? false)\n\t\t\t\t\t\t\t\t|| (join !== true\n\t\t\t\t\t\t\t\t\t&& !!(join as Exclude<typeof join, boolean | undefined>)\n\t\t\t\t\t\t\t\t\t\t.where),\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst jsonColumns = sql.join(\n\t\t\t\t\t\t\tinnerQuery.selection.map((s) => {\n\t\t\t\t\t\t\t\treturn sql`${sql.raw(this.escapeString(s.key))}, ${\n\t\t\t\t\t\t\t\t\ts.selection\n\t\t\t\t\t\t\t\t\t\t? sql`${jsonb}(${sql.identifier(s.key)})`\n\t\t\t\t\t\t\t\t\t\t: sql.identifier(s.key)\n\t\t\t\t\t\t\t\t}`;\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tsql`, `,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst json = isNested ? jsonb : sql`json`;\n\n\t\t\t\t\t\tconst joinQuery = isSingle\n\t\t\t\t\t\t\t? sql`(select ${json}_object(${jsonColumns}) as ${sql.identifier('r')} from (${innerQuery.sql}) as ${\n\t\t\t\t\t\t\t\tsql.identifier(\n\t\t\t\t\t\t\t\t\t't',\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}) as ${sql.identifier(k)}`\n\t\t\t\t\t\t\t: sql`coalesce((select ${json}_group_array(json_object(${jsonColumns})) as ${\n\t\t\t\t\t\t\t\tsql.identifier(\n\t\t\t\t\t\t\t\t\t'r',\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t} from (${innerQuery.sql}) as ${sql.identifier('t')}), ${jsonb}_array()) as ${sql.identifier(k)}`;\n\n\t\t\t\t\t\treturn joinQuery;\n\t\t\t\t\t}),\n\t\t\t\t\tsql`, `,\n\t\t\t\t);\n\t\t\t})()\n\t\t\t: undefined;\n\n\t\tconst selectionArr = [columns, extras?.sql, joins].filter(\n\t\t\t(e) => e !== undefined,\n\t\t);\n\t\tif (!selectionArr.length) {\n\t\t\tthrow new DrizzleError({\n\t\t\t\tmessage: `No fields selected for table \"${tableConfig.name}\"${currentPath ? ` (\"${currentPath}\")` : ''}`,\n\t\t\t});\n\t\t}\n\t\tconst selectionSet = sql.join(selectionArr, sql`, `);\n\n\t\tconst query = sql`select ${selectionSet} from ${getTableAsAliasSQL(table)}${throughJoin}${\n\t\t\tsql` where ${where}`.if(\n\t\t\t\twhere,\n\t\t\t)\n\t\t}${sql` order by ${order}`.if(order)}${sql` limit ${limit}`.if(limit !== undefined)}${\n\t\t\tsql` offset ${offset}`.if(\n\t\t\t\toffset !== undefined,\n\t\t\t)\n\t\t}`;\n\n\t\treturn {\n\t\t\tsql: query,\n\t\t\tselection,\n\t\t};\n\t}\n}\n", "import { entityKind, is } from '~/entity.ts';\nimport type { TypedQueryBuilder } from '~/query-builders/query-builder.ts';\nimport { SelectionProxyHandler } from '~/selection-proxy.ts';\nimport type { ColumnsSelection, SQL } from '~/sql/sql.ts';\nimport type { SQLiteDialectConfig } from '~/sqlite-core/dialect.ts';\nimport { SQLiteDialect } from '~/sqlite-core/dialect.ts';\nimport type { WithBuilder } from '~/sqlite-core/subquery.ts';\nimport { WithSubquery } from '~/subquery.ts';\nimport { SQLiteSelectBuilder } from './select.ts';\nimport type { SelectedFields } from './select.types.ts';\n\nexport class QueryBuilder {\n\tstatic readonly [entityKind]: string = 'SQLiteQueryBuilder';\n\n\tprivate dialect: SQLiteDialect | undefined;\n\tprivate dialectConfig: SQLiteDialectConfig | undefined;\n\n\tconstructor(dialect?: SQLiteDialect | SQLiteDialectConfig) {\n\t\tthis.dialect = is(dialect, SQLiteDialect) ? dialect : undefined;\n\t\tthis.dialectConfig = is(dialect, SQLiteDialect) ? undefined : dialect;\n\t}\n\n\t$with: WithBuilder = (alias: string, selection?: ColumnsSelection) => {\n\t\tconst queryBuilder = this;\n\t\tconst as = (\n\t\t\tqb:\n\t\t\t\t| TypedQueryBuilder<ColumnsSelection | undefined>\n\t\t\t\t| SQL\n\t\t\t\t| ((qb: QueryBuilder) => TypedQueryBuilder<ColumnsSelection | undefined> | SQL),\n\t\t) => {\n\t\t\tif (typeof qb === 'function') {\n\t\t\t\tqb = qb(queryBuilder);\n\t\t\t}\n\n\t\t\treturn new Proxy(\n\t\t\t\tnew WithSubquery(\n\t\t\t\t\tqb.getSQL(),\n\t\t\t\t\tselection ?? ('getSelectedFields' in qb ? qb.getSelectedFields() ?? {} : {}) as SelectedFields,\n\t\t\t\t\talias,\n\t\t\t\t\ttrue,\n\t\t\t\t),\n\t\t\t\tnew SelectionProxyHandler({ alias, sqlAliasedBehavior: 'alias', sqlBehavior: 'error' }),\n\t\t\t) as any;\n\t\t};\n\t\treturn { as };\n\t};\n\n\twith(...queries: WithSubquery[]) {\n\t\tconst self = this;\n\n\t\tfunction select(): SQLiteSelectBuilder<undefined, void>;\n\t\tfunction select<TSelection extends SelectedFields>(\n\t\t\tfields: TSelection,\n\t\t): SQLiteSelectBuilder<TSelection, void>;\n\t\tfunction select<TSelection extends SelectedFields>(\n\t\t\tfields?: TSelection,\n\t\t): SQLiteSelectBuilder<TSelection | undefined, void> {\n\t\t\treturn new SQLiteSelectBuilder({\n\t\t\t\tfields: fields ?? undefined,\n\t\t\t\tsession: undefined,\n\t\t\t\tdialect: self.getDialect(),\n\t\t\t\twithList: queries,\n\t\t\t});\n\t\t}\n\n\t\tfunction selectDistinct(): SQLiteSelectBuilder<undefined, void>;\n\t\tfunction selectDistinct<TSelection extends SelectedFields>(\n\t\t\tfields: TSelection,\n\t\t): SQLiteSelectBuilder<TSelection, void>;\n\t\tfunction selectDistinct<TSelection extends SelectedFields>(\n\t\t\tfields?: TSelection,\n\t\t): SQLiteSelectBuilder<TSelection | undefined, void> {\n\t\t\treturn new SQLiteSelectBuilder({\n\t\t\t\tfields: fields ?? undefined,\n\t\t\t\tsession: undefined,\n\t\t\t\tdialect: self.getDialect(),\n\t\t\t\twithList: queries,\n\t\t\t\tdistinct: true,\n\t\t\t});\n\t\t}\n\n\t\treturn { select, selectDistinct };\n\t}\n\n\tselect(): SQLiteSelectBuilder<undefined, void>;\n\tselect<TSelection extends SelectedFields>(\n\t\tfields: TSelection,\n\t): SQLiteSelectBuilder<TSelection, void>;\n\tselect<TSelection extends SelectedFields>(\n\t\tfields?: TSelection,\n\t): SQLiteSelectBuilder<TSelection | undefined, void> {\n\t\treturn new SQLiteSelectBuilder({ fields: fields ?? undefined, session: undefined, dialect: this.getDialect() });\n\t}\n\n\tselectDistinct(): SQLiteSelectBuilder<undefined, void>;\n\tselectDistinct<TSelection extends SelectedFields>(\n\t\tfields: TSelection,\n\t): SQLiteSelectBuilder<TSelection, void>;\n\tselectDistinct<TSelection extends SelectedFields>(\n\t\tfields?: TSelection,\n\t): SQLiteSelectBuilder<TSelection | undefined, void> {\n\t\treturn new SQLiteSelectBuilder({\n\t\t\tfields: fields ?? undefined,\n\t\t\tsession: undefined,\n\t\t\tdialect: this.getDialect(),\n\t\t\tdistinct: true,\n\t\t});\n\t}\n\n\t// Lazy load dialect to avoid circular dependency\n\tprivate getDialect() {\n\t\tif (!this.dialect) {\n\t\t\tthis.dialect = new SQLiteDialect(this.dialectConfig);\n\t\t}\n\n\t\treturn this.dialect;\n\t}\n}\n", "import { entityKind } from '~/entity.ts';\nimport type { Query } from '~/sql/sql.ts';\nimport { SQL, sql, type SQLWrapper } from '~/sql/sql.ts';\nimport type { SQLiteDialect } from '../dialect.ts';\nimport type { SQLiteSession } from '../session.ts';\nimport type { SQLiteTable } from '../table.ts';\nimport type { SQLiteViewBase } from '../view-base.ts';\n\nexport class SQLiteCountBuilder extends SQL<number> implements SQLWrapper<number> {\n\tstatic override readonly [entityKind]: string = 'SQLiteCountBuilder';\n\n\tprotected dialect: SQLiteDialect;\n\tprotected session: SQLiteSession<any, any>;\n\n\tprivate static buildCount(\n\t\tsource: SQLiteTable | SQLiteViewBase | SQL | SQLWrapper,\n\t\tfilters?: SQL<unknown>,\n\t\tparens?: boolean,\n\t): SQL<number> {\n\t\tconst where = sql` where ${filters}`.if(filters);\n\t\tconst query = sql<number>`select count(*) from ${source}${where}`;\n\n\t\treturn parens ? sql`(${query})` : query;\n\t}\n\n\tconstructor(\n\t\tprotected countConfig: {\n\t\t\tsource: SQLiteTable | SQLiteViewBase | SQL | SQLWrapper;\n\t\t\tfilters?: SQL<unknown>;\n\t\t\tdialect: SQLiteDialect;\n\t\t\tsession: SQLiteSession<any, any>;\n\t\t},\n\t) {\n\t\tsuper(SQLiteCountBuilder.buildCount(countConfig.source, countConfig.filters, true).queryChunks);\n\t\tthis.dialect = countConfig.dialect;\n\t\tthis.session = countConfig.session;\n\t\tthis.mapWith((e) => {\n\t\t\tif (typeof e === 'number') return e;\n\n\t\t\treturn Number(e ?? 0);\n\t\t});\n\t}\n\n\tprivate executableSql: SQL<number> | undefined;\n\tprotected build(): Query {\n\t\tif (!this.executableSql) {\n\t\t\tconst { source, filters } = this.countConfig;\n\t\t\tthis.executableSql = SQLiteCountBuilder.buildCount(source, filters);\n\t\t}\n\n\t\treturn this.dialect.sqlToQuery(this.executableSql);\n\t}\n}\n", "import { entityKind } from '~/entity.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport type { SQL, SQLWrapper } from '~/sql/sql.ts';\nimport type { ExecuteResultSync } from '~/sqlite-core/async/session.ts';\nimport type { SQLiteDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteCountBuilder } from '~/sqlite-core/query-builders/count.ts';\nimport type { SQLiteTable } from '~/sqlite-core/table.ts';\nimport type { SQLiteViewBase } from '~/sqlite-core/view-base.ts';\nimport { applyMixins } from '~/utils.ts';\nimport type { SQLiteAsyncSession } from './session.ts';\n\nexport type SQLiteAsyncCountBuilderKind<TMode extends 'sync' | 'async'> = TMode extends 'async'\n\t? SQLiteAsyncCountBuilder\n\t: SQLiteSyncCountBuilder;\n\n// oxlint-disable-next-line no-unused-vars\nexport interface SQLiteAsyncCountBuilder extends SQL<number>, SQLWrapper<number>, QueryPromise<number> {}\n\nexport class SQLiteAsyncCountBuilder extends SQLiteCountBuilder {\n\tstatic override readonly [entityKind]: string = 'SQLiteAsyncCountBuilder';\n\n\tdeclare protected session: SQLiteAsyncSession<any, any, any>;\n\n\tconstructor(\n\t\tcountConfig: {\n\t\t\tsource: SQLiteTable | SQLiteViewBase | SQL | SQLWrapper;\n\t\t\tfilters?: SQL<unknown>;\n\t\t\tdialect: SQLiteDialect;\n\t\t\tsession: SQLiteAsyncSession<any, any, any>;\n\t\t},\n\t) {\n\t\tsuper(countConfig);\n\t}\n\n\t/** @internal */\n\texecuteRaw(placeholderValues?: Record<string, unknown>): Promise<number> | ExecuteResultSync<number> {\n\t\treturn this.session.prepareQuery(\n\t\t\tthis.build(),\n\t\t\t'arrays',\n\t\t\tfalse,\n\t\t\t'all', // Do not use 'get' - mapper returns an item instead of an array, would break on session's destructuring; query itself is already aggregated into 1 item, so no performance overhead occurs.\n\t\t\t(rows) => {\n\t\t\t\tconst v = rows[0]?.[0];\n\t\t\t\tif (typeof v === 'number') return v;\n\t\t\t\treturn v ? Number(v) : 0;\n\t\t\t},\n\t\t).execute(placeholderValues) as any;\n\t}\n\n\t// async-await to avoid crashing when used on sync drivers with .then(), .catch() for compatibility\n\tasync execute(placeholderValues?: Record<string, unknown>): Promise<number> {\n\t\treturn await (this.executeRaw(placeholderValues));\n\t}\n}\n\napplyMixins(SQLiteAsyncCountBuilder, [QueryPromise]);\n\nexport class SQLiteSyncCountBuilder extends SQLiteAsyncCountBuilder {\n\tstatic override readonly [entityKind]: string = 'SQLiteSyncCountBuilder';\n\n\tsync(placeholderValues?: Record<string, unknown>): number {\n\t\treturn (this.executeRaw(placeholderValues) as ExecuteResultSync<number>).sync();\n\t}\n}\n", "import { entityKind } from '~/entity.ts';\nimport type {\n\tBuildQueryResult,\n\tBuildRelationalQueryResult,\n\tDBQueryConfig,\n\tTableRelationalConfig,\n\tTablesRelationalConfig,\n} from '~/relations.ts';\nimport { type Query, type SQL, sql, type SQLWrapper } from '~/sql/sql.ts';\nimport type { KnownKeysOnly } from '~/utils.ts';\nimport type { SQLiteDialect } from '../dialect.ts';\nimport type { SQLiteSession } from '../session.ts';\nimport type { SQLiteTable } from '../table.ts';\n\nexport interface SQLiteRelationalQueryHKTBase {\n\ttype: unknown;\n\tresult: unknown;\n\t_type: unknown;\n}\n\nexport interface SQLiteRelationalQueryHKT extends SQLiteRelationalQueryHKTBase {\n\t_type: SQLiteRelationalQuery<SQLiteRelationalQueryHKT, this['result']>;\n}\n\nexport type SQLiteRelationalQueryKind<\n\tT extends SQLiteRelationalQueryHKTBase,\n\tTType,\n\tTResult,\n> = (T & {\n\ttype: TType;\n\tresult: TResult;\n})['_type'];\n\nexport interface SQLiteRelationalQueryConstructor {\n\tnew(\n\t\tmode: unknown,\n\t\tschema: TablesRelationalConfig,\n\t\ttable: SQLiteTable,\n\t\ttableConfig: TableRelationalConfig,\n\t\tdialect: SQLiteDialect,\n\t\tsession: SQLiteSession<any, any>,\n\t\tconfig: DBQueryConfig<'many' | 'one'> | true,\n\t\tqueryMode: 'many' | 'first',\n\t\tforbidJsonb: boolean | undefined,\n\t): AnySQLiteRelationalQuery;\n}\n\nexport type AnySQLiteRelationalQuery = SQLiteRelationalQuery<any, any>;\n\nexport class RelationalQueryBuilder<\n\tTMode,\n\tTSchema extends TablesRelationalConfig,\n\tTFields extends TableRelationalConfig,\n\tTBuilderHKT extends SQLiteRelationalQueryHKTBase = SQLiteRelationalQueryHKT,\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteRelationalQueryBuilderV2';\n\n\tconstructor(\n\t\tprivate mode: TMode,\n\t\tprivate schema: TSchema,\n\t\tprivate table: SQLiteTable,\n\t\tprivate tableConfig: TableRelationalConfig,\n\t\tprivate dialect: SQLiteDialect,\n\t\tprivate session: SQLiteSession<any, any>,\n\t\tprivate forbidJsonb: boolean | undefined,\n\t\tprivate builder: SQLiteRelationalQueryConstructor = SQLiteRelationalQuery,\n\t) {}\n\n\tfindMany<TConfig extends DBQueryConfig<'many', TSchema, TFields>>(\n\t\tconfig?: KnownKeysOnly<TConfig, DBQueryConfig<'many', TSchema, TFields>>,\n\t): SQLiteRelationalQueryKind<TBuilderHKT, TMode, BuildQueryResult<TSchema, TFields, TConfig>[]> {\n\t\treturn new this.builder(\n\t\t\tthis.mode,\n\t\t\tthis.schema,\n\t\t\tthis.table,\n\t\t\tthis.tableConfig,\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tconfig as DBQueryConfig<'many'> | undefined ?? true,\n\t\t\t'many',\n\t\t\tthis.forbidJsonb,\n\t\t) as any;\n\t}\n\n\tfindFirst<TConfig extends DBQueryConfig<'one', TSchema, TFields>>(\n\t\tconfig?: KnownKeysOnly<TConfig, DBQueryConfig<'one', TSchema, TFields>>,\n\t): SQLiteRelationalQueryKind<TBuilderHKT, TMode, BuildQueryResult<TSchema, TFields, TConfig> | undefined> {\n\t\treturn new this.builder(\n\t\t\tthis.mode,\n\t\t\tthis.schema,\n\t\t\tthis.table,\n\t\t\tthis.tableConfig,\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tconfig as DBQueryConfig<'one'> | undefined ?? true,\n\t\t\t'first',\n\t\t\tthis.forbidJsonb,\n\t\t) as any;\n\t}\n}\n\nexport class SQLiteRelationalQuery<THKT extends SQLiteRelationalQueryHKTBase, TResult> implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'SQLiteRelationalQueryV2';\n\n\tdeclare readonly _: {\n\t\treadonly dialect: 'sqlite';\n\t\treadonly hkt: THKT;\n\t\treadonly result: TResult;\n\t};\n\n\t/** @internal */\n\tmode: 'many' | 'first';\n\t/** @internal */\n\ttable: SQLiteTable;\n\t/** @internal */\n\tresultKind: unknown;\n\n\tconstructor(\n\t\tresultKind: unknown,\n\t\tprotected schema: TablesRelationalConfig,\n\t\ttable: SQLiteTable,\n\t\tprotected tableConfig: TableRelationalConfig,\n\t\tprotected dialect: SQLiteDialect,\n\t\tprotected session: SQLiteSession<any, any>,\n\t\tprotected config: DBQueryConfig<'many' | 'one'> | true,\n\t\tmode: 'many' | 'first',\n\t\tprotected forbidJsonb?: boolean,\n\t) {\n\t\tthis.resultKind = resultKind;\n\t\tthis.mode = mode;\n\t\tthis.table = table;\n\t}\n\n\tgetSQL(): SQL {\n\t\treturn this._getQuery().sql;\n\t}\n\n\tprotected _getQuery() {\n\t\tconst jsonb = this.forbidJsonb ? sql`json` : sql`jsonb`;\n\n\t\treturn this.dialect.buildRelationalQuery({\n\t\t\tschema: this.schema,\n\t\t\ttable: this.table,\n\t\t\ttableConfig: this.tableConfig,\n\t\t\tqueryConfig: this.config,\n\t\t\tmode: this.mode,\n\t\t\tjsonb,\n\t\t});\n\t}\n\n\tprotected _toSQL(): { query: BuildRelationalQueryResult; builtQuery: Query } {\n\t\tconst query = this._getQuery();\n\n\t\tconst builtQuery = this.dialect.sqlToQuery(query.sql);\n\n\t\treturn { query, builtQuery };\n\t}\n\n\ttoSQL(): Query {\n\t\treturn this._toSQL().builtQuery;\n\t}\n}\n", "import { entityKind } from '~/entity.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport type { RunnableQuery } from '~/runnable-query.ts';\nimport { SQLiteRelationalQuery, type SQLiteRelationalQueryHKTBase } from '~/sqlite-core/query-builders/query.ts';\nimport { applyMixins, type Assume } from '~/utils.ts';\nimport type { PreparedQueryConfig } from '../session.ts';\nimport type { SQLiteAsyncPreparedQuery, SQLiteAsyncSession } from './session.ts';\n\nexport interface SQLiteAsyncRelationalQueryHKT extends SQLiteRelationalQueryHKTBase {\n\t_type: SQLiteAsyncRelationalQueryKind<Assume<this['type'], 'sync' | 'async'>, this['result']>;\n}\n\nexport type SQLiteAsyncRelationalQueryKind<TType extends 'sync' | 'async', TResult> = TType extends 'async'\n\t? SQLiteAsyncRelationalQuery<'async', TResult>\n\t: SQLiteSyncRelationalQuery<TResult>;\n\nexport type AnySQLiteAsyncRelationalQuery = SQLiteAsyncRelationalQuery<any, any>;\n\n// oxlint-disable-next-line no-unused-vars\nexport interface SQLiteAsyncRelationalQuery<TType extends 'sync' | 'async', TResult> extends QueryPromise<TResult> {}\n\nexport class SQLiteAsyncRelationalQuery<TType extends 'sync' | 'async', TResult>\n\textends SQLiteRelationalQuery<SQLiteAsyncRelationalQueryHKT, TResult>\n\timplements RunnableQuery<TResult, 'sqlite'>\n{\n\tstatic override readonly [entityKind]: string = 'SQLiteAsyncRelationalQueryV2';\n\n\tdeclare readonly _: {\n\t\treadonly dialect: 'sqlite';\n\t\treadonly hkt: SQLiteAsyncRelationalQueryHKT;\n\t\treadonly type: TType;\n\t\treadonly result: TResult;\n\t};\n\n\tdeclare protected session: SQLiteAsyncSession<TType, any, any>;\n\n\t/** @internal */\n\t_prepare(\n\t\tprepare = false,\n\t): SQLiteAsyncPreparedQuery<PreparedQueryConfig & { type: TType; all: TResult; get: TResult; execute: TResult }> {\n\t\tconst { query, builtQuery } = this._toSQL();\n\n\t\tconst mapper = this.dialect.mapperGenerators.relationalRows({\n\t\t\tisFirst: this.mode === 'first',\n\t\t\tparseJson: true,\n\t\t\tparseJsonIfString: false,\n\t\t\trootJsonMappers: false,\n\t\t\tselection: query.selection,\n\t\t\tarrayModeRoot: true,\n\t\t});\n\n\t\treturn this.session.prepareQuery(\n\t\t\tbuiltQuery,\n\t\t\t'arrays',\n\t\t\tprepare,\n\t\t\t// Do not use 'get' - mapper returns an item instead of an array, would break on session's destructuring; query itself is already limited to 1 item, so no performance overhead occurs.\n\t\t\t'all',\n\t\t\tmapper,\n\t\t) as SQLiteAsyncPreparedQuery<PreparedQueryConfig & { type: TType; all: TResult; get: TResult; execute: TResult }>;\n\t}\n\n\tprepare(): SQLiteAsyncPreparedQuery<\n\t\tPreparedQueryConfig & { type: TType; all: TResult; get: TResult; execute: TResult }\n\t> {\n\t\treturn this._prepare(true);\n\t}\n\n\tasync execute(placeholderValues?: Record<string, unknown>): Promise<TResult> {\n\t\treturn this._prepare().execute(placeholderValues) as Promise<TResult>;\n\t}\n}\n\nexport class SQLiteSyncRelationalQuery<TResult> extends SQLiteAsyncRelationalQuery<'sync', TResult> {\n\tstatic override readonly [entityKind]: string = 'SQLiteSyncRelationalQueryV2';\n\n\tsync(placeholderValues?: Record<string, unknown>): TResult {\n\t\treturn this._prepare().execute(placeholderValues).sync() as TResult;\n\t}\n}\n\napplyMixins(SQLiteAsyncRelationalQuery, [QueryPromise]);\n", "import { entityKind } from '~/entity.ts';\nimport type { SelectResultFields } from '~/query-builders/select.types.ts';\nimport { SelectionProxyHandler } from '~/selection-proxy.ts';\nimport type { Placeholder, Query, SQL, SQLWrapper } from '~/sql/sql.ts';\nimport type { SQLiteDialect } from '~/sqlite-core/dialect.ts';\nimport type { SQLiteSession } from '~/sqlite-core/session.ts';\nimport { SQLiteTable } from '~/sqlite-core/table.ts';\nimport type { Subquery } from '~/subquery.ts';\nimport { Table } from '~/table.ts';\nimport { type Assume, orderSelectedFields, type ValueOrArray } from '~/utils.ts';\nimport type { SQLiteColumn } from '../columns/common.ts';\nimport type { SelectedFieldsFlat, SelectedFieldsOrdered } from './select.types.ts';\n\nexport interface SQLiteDeleteConfig {\n\twhere?: SQL | undefined;\n\tlimit?: number | Placeholder;\n\torderBy?: (SQLiteColumn | SQL | SQL.Aliased)[];\n\ttable: SQLiteTable;\n\treturning?: SelectedFieldsOrdered;\n\twithList?: Subquery[];\n}\n\nexport interface SQLiteDeleteHKTBase {\n\ttable: unknown;\n\tresultType: unknown;\n\trunResult: unknown;\n\treturning: unknown;\n\tdynamic: boolean;\n\texcludedMethods: string;\n\tresult: unknown;\n\t_type: unknown;\n}\n\nexport interface SQLiteDeleteQueryBuilderHKT extends SQLiteDeleteHKTBase {\n\t_type: SQLiteDeleteBase<\n\t\tSQLiteDeleteQueryBuilderHKT,\n\t\tAssume<this['table'], SQLiteTable>,\n\t\tthis['runResult'],\n\t\tAssume<this['returning'], Record<string, unknown> | undefined>,\n\t\tthis['dynamic'],\n\t\tthis['excludedMethods']\n\t>;\n}\n\nexport type SQLiteDeleteKind<\n\tT extends SQLiteDeleteHKTBase,\n\tTTable extends SQLiteTable,\n\tTRunResult,\n\tTReturning extends Record<string, unknown> | undefined = undefined,\n\tTDynamic extends boolean = false,\n\tTExcludedMethods extends string = never,\n> = (T & {\n\ttable: TTable;\n\trunResult: TRunResult;\n\treturning: TReturning;\n\tdynamic: TDynamic;\n\texcludedMethods: TExcludedMethods;\n\tresult: TReturning extends undefined ? TRunResult : TReturning[];\n})['_type'];\n\nexport type SQLiteDeleteWithout<\n\tT extends AnySQLiteDeleteBase,\n\tTDynamic extends boolean,\n\tK extends keyof T & string,\n> = TDynamic extends true ? T\n\t: Omit<\n\t\tSQLiteDeleteKind<\n\t\t\tT['_']['hkt'],\n\t\t\tT['_']['table'],\n\t\t\tT['_']['runResult'],\n\t\t\tT['_']['returning'],\n\t\t\tTDynamic,\n\t\t\tT['_']['excludedMethods'] | K\n\t\t>,\n\t\tT['_']['excludedMethods'] | K\n\t>;\n\nexport type SQLiteDelete<\n\tTTable extends SQLiteTable = SQLiteTable,\n\tTRunResult = unknown,\n\tTReturning extends Record<string, unknown> | undefined = undefined,\n> = SQLiteDeleteBase<SQLiteDeleteQueryBuilderHKT, TTable, TRunResult, TReturning, true, never>;\n\nexport type SQLiteDeleteReturningAll<\n\tT extends AnySQLiteDeleteBase,\n\tTDynamic extends boolean,\n> = SQLiteDeleteWithout<\n\tSQLiteDeleteKind<\n\t\tT['_']['hkt'],\n\t\tT['_']['table'],\n\t\tT['_']['runResult'],\n\t\tT['_']['table']['$inferSelect'],\n\t\tT['_']['dynamic'],\n\t\tT['_']['excludedMethods']\n\t>,\n\tTDynamic,\n\t'returning'\n>;\n\nexport type SQLiteDeleteReturning<\n\tT extends AnySQLiteDeleteBase,\n\tTDynamic extends boolean,\n\tTSelectedFields extends SelectedFieldsFlat,\n> = SQLiteDeleteWithout<\n\tSQLiteDeleteKind<\n\t\tT['_']['hkt'],\n\t\tT['_']['table'],\n\t\tT['_']['runResult'],\n\t\tSelectResultFields<TSelectedFields>,\n\t\tT['_']['dynamic'],\n\t\tT['_']['excludedMethods']\n\t>,\n\tTDynamic,\n\t'returning'\n>;\n\nexport type SQLiteDeleteDynamic<T extends AnySQLiteDeleteBase> = SQLiteDeleteKind<\n\tT['_']['hkt'],\n\tT['_']['table'],\n\tT['_']['runResult'],\n\tT['_']['returning'],\n\ttrue,\n\tnever\n>;\n\nexport type AnySQLiteDeleteBase = SQLiteDeleteBase<any, any, any, any, any, any>;\n\nexport interface SQLiteDeleteBase<\n\tTHKT extends SQLiteDeleteHKTBase,\n\tTTable extends SQLiteTable,\n\tTRunResult,\n\tTReturning extends Record<string, unknown> | undefined = undefined,\n\tTDynamic extends boolean = false,\n\tTExcludedMethods extends string = never,\n> extends SQLWrapper {\n\treadonly _: {\n\t\treadonly dialect: 'sqlite';\n\t\treadonly hkt: THKT;\n\t\treadonly table: TTable;\n\t\treadonly runResult: TRunResult;\n\t\treadonly returning: TReturning;\n\t\treadonly dynamic: TDynamic;\n\t\treadonly excludedMethods: TExcludedMethods;\n\t\treadonly result: TReturning extends undefined ? TRunResult : TReturning[];\n\t};\n}\n\nexport class SQLiteDeleteBase<\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTHKT extends SQLiteDeleteHKTBase,\n\tTTable extends SQLiteTable,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTRunResult,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTReturning extends Record<string, unknown> | undefined = undefined,\n\tTDynamic extends boolean = false,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTExcludedMethods extends string = never,\n> implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'SQLiteDelete';\n\n\t/** @internal */\n\tconfig: SQLiteDeleteConfig;\n\n\tconstructor(\n\t\tprivate table: TTable,\n\t\tprotected session: SQLiteSession<any, any>,\n\t\tprotected dialect: SQLiteDialect,\n\t\twithList?: Subquery[],\n\t) {\n\t\tthis.config = { table, withList };\n\t}\n\n\t/**\n\t * Adds a `where` clause to the query.\n\t *\n\t * Calling this method will delete only those rows that fulfill a specified condition.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/delete}\n\t *\n\t * @param where the `where` clause.\n\t *\n\t * @example\n\t * You can use conditional operators and `sql function` to filter the rows to be deleted.\n\t *\n\t * ```ts\n\t * // Delete all cars with green color\n\t * db.delete(cars).where(eq(cars.color, 'green'));\n\t * // or\n\t * db.delete(cars).where(sql`${cars.color} = 'green'`)\n\t * ```\n\t *\n\t * You can logically combine conditional operators with `and()` and `or()` operators:\n\t *\n\t * ```ts\n\t * // Delete all BMW cars with a green color\n\t * db.delete(cars).where(and(eq(cars.color, 'green'), eq(cars.brand, 'BMW')));\n\t *\n\t * // Delete all cars with the green or blue color\n\t * db.delete(cars).where(or(eq(cars.color, 'green'), eq(cars.color, 'blue')));\n\t * ```\n\t */\n\twhere(where: SQL | undefined): SQLiteDeleteWithout<this, TDynamic, 'where'> {\n\t\tthis.config.where = where;\n\t\treturn this as any;\n\t}\n\n\torderBy(\n\t\tbuilder: (deleteTable: TTable) => ValueOrArray<SQLiteColumn | SQL | SQL.Aliased>,\n\t): SQLiteDeleteWithout<this, TDynamic, 'orderBy'>;\n\torderBy(...columns: (SQLiteColumn | SQL | SQL.Aliased)[]): SQLiteDeleteWithout<this, TDynamic, 'orderBy'>;\n\torderBy(\n\t\t...columns:\n\t\t\t| [(deleteTable: TTable) => ValueOrArray<SQLiteColumn | SQL | SQL.Aliased>]\n\t\t\t| (SQLiteColumn | SQL | SQL.Aliased)[]\n\t): SQLiteDeleteWithout<this, TDynamic, 'orderBy'> {\n\t\tif (typeof columns[0] === 'function') {\n\t\t\tconst orderBy = columns[0](\n\t\t\t\tnew Proxy(\n\t\t\t\t\tthis.config.table[Table.Symbol.Columns],\n\t\t\t\t\tnew SelectionProxyHandler({ sqlAliasedBehavior: 'alias', sqlBehavior: 'sql' }),\n\t\t\t\t) as any,\n\t\t\t);\n\n\t\t\tconst orderByArray = Array.isArray(orderBy) ? orderBy : [orderBy];\n\t\t\tthis.config.orderBy = orderByArray;\n\t\t} else {\n\t\t\tconst orderByArray = columns as (SQLiteColumn | SQL | SQL.Aliased)[];\n\t\t\tthis.config.orderBy = orderByArray;\n\t\t}\n\t\treturn this as any;\n\t}\n\n\tlimit(limit: number | Placeholder): SQLiteDeleteWithout<this, TDynamic, 'limit'> {\n\t\tthis.config.limit = limit;\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Adds a `returning` clause to the query.\n\t *\n\t * Calling this method will return the specified fields of the deleted rows. If no fields are specified, all fields will be returned.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/delete#delete-with-return}\n\t *\n\t * @example\n\t * ```ts\n\t * // Delete all cars with the green color and return all fields\n\t * const deletedCars: Car[] = await db.delete(cars)\n\t * .where(eq(cars.color, 'green'))\n\t * .returning();\n\t *\n\t * // Delete all cars with the green color and return only their id and brand fields\n\t * const deletedCarsIdsAndBrands: { id: number, brand: string }[] = await db.delete(cars)\n\t * .where(eq(cars.color, 'green'))\n\t * .returning({ id: cars.id, brand: cars.brand });\n\t * ```\n\t */\n\treturning(): SQLiteDeleteReturningAll<this, TDynamic>;\n\treturning<TSelectedFields extends SelectedFieldsFlat>(\n\t\tfields: TSelectedFields,\n\t): SQLiteDeleteReturning<this, TDynamic, TSelectedFields>;\n\treturning(\n\t\tfields: SelectedFieldsFlat = this.table[SQLiteTable.Symbol.Columns],\n\t): SQLiteDeleteReturning<this, TDynamic, any> | SQLiteDeleteReturningAll<this, TDynamic> {\n\t\tthis.config.returning = orderSelectedFields<SQLiteColumn>(fields);\n\t\treturn this as any;\n\t}\n\n\tgetSQL(): SQL {\n\t\treturn this.dialect.buildDeleteQuery(this.config);\n\t}\n\n\ttoSQL(): Query {\n\t\treturn this.dialect.sqlToQuery(this.getSQL());\n\t}\n\n\t$dynamic(): SQLiteDeleteDynamic<this> {\n\t\treturn this as any;\n\t}\n}\n", "import { entityKind } from '~/entity.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport type { RunnableQuery } from '~/runnable-query.ts';\nimport type { SQLWrapper } from '~/sql/sql.ts';\nimport type { SQLiteDeleteHKTBase } from '~/sqlite-core/query-builders/delete.ts';\nimport { SQLiteDeleteBase } from '~/sqlite-core/query-builders/delete.ts';\nimport type { SQLiteTable } from '~/sqlite-core/table.ts';\nimport { applyMixins, type Assume, type DrizzleTypeError } from '~/utils.ts';\nimport { extractUsedTable } from '../utils.ts';\nimport type { SQLiteAsyncPreparedQuery, SQLiteAsyncPreparedQueryConfig, SQLiteAsyncSession } from './session.ts';\n\nexport interface SQLiteAsyncDeleteHKT extends SQLiteDeleteHKTBase {\n\t_type: SQLiteAsyncDeleteBase<\n\t\tAssume<this['table'], SQLiteTable>,\n\t\tAssume<this['resultType'], 'sync' | 'async'>,\n\t\tthis['runResult'],\n\t\tAssume<this['returning'], Record<string, unknown> | undefined>,\n\t\tthis['dynamic'],\n\t\tthis['excludedMethods']\n\t>;\n}\n\nexport type AnySQLiteAsyncDelete = SQLiteAsyncDeleteBase<any, any, any, any, any, any>;\n\nexport type SQLiteAsyncDelete<\n\tTTable extends SQLiteTable = SQLiteTable,\n\tTResultType extends 'sync' | 'async' = 'sync' | 'async',\n\tTRunResult = unknown,\n\tTReturning extends Record<string, unknown> | undefined = undefined,\n> = SQLiteAsyncDeleteBase<TTable, TResultType, TRunResult, TReturning, true, never>;\n\nexport type SQLiteAsyncDeleteExecute<T extends AnySQLiteAsyncDelete> = T['_']['returning'] extends undefined\n\t? T['_']['runResult']\n\t: T['_']['returning'][];\n\nexport type SQLiteAsyncDeletePrepare<T extends AnySQLiteAsyncDelete> = SQLiteAsyncPreparedQuery<\n\tSQLiteAsyncPreparedQueryConfig & {\n\t\ttype: T['_']['resultType'];\n\t\trun: T['_']['runResult'];\n\t\tall: T['_']['returning'] extends undefined ? DrizzleTypeError<'.all() cannot be used without .returning()'>\n\t\t\t: T['_']['returning'][];\n\t\tget: T['_']['returning'] extends undefined ? DrizzleTypeError<'.get() cannot be used without .returning()'>\n\t\t\t: T['_']['returning'] | undefined;\n\t\tvalues: T['_']['returning'] extends undefined ? DrizzleTypeError<'.values() cannot be used without .returning()'>\n\t\t\t: any[][];\n\t\texecute: SQLiteAsyncDeleteExecute<T>;\n\t}\n>;\n\nexport interface SQLiteAsyncDeleteBase<\n\t// oxlint-disable-next-line no-unused-vars\n\tTTable extends SQLiteTable,\n\t// oxlint-disable-next-line no-unused-vars\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n\tTReturning extends Record<string, unknown> | undefined = undefined,\n\t// oxlint-disable-next-line no-unused-vars\n\tTDynamic extends boolean = false,\n\t// oxlint-disable-next-line no-unused-vars\n\tTExcludedMethods extends string = never,\n> extends\n\tSQLiteDeleteBase<\n\t\tSQLiteAsyncDeleteHKT & { resultType: TResultType },\n\t\tTTable,\n\t\tTRunResult,\n\t\tTReturning,\n\t\tTDynamic,\n\t\tTExcludedMethods\n\t>,\n\tQueryPromise<TReturning extends undefined ? TRunResult : TReturning[]>\n{\n\treadonly _:\n\t\t& SQLiteDeleteBase<\n\t\t\tSQLiteAsyncDeleteHKT & { resultType: TResultType },\n\t\t\tTTable,\n\t\t\tTRunResult,\n\t\t\tTReturning,\n\t\t\tTDynamic,\n\t\t\tTExcludedMethods\n\t\t>['_']\n\t\t& { readonly resultType: TResultType };\n}\n\nexport class SQLiteAsyncDeleteBase<\n\tTTable extends SQLiteTable,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n\tTReturning extends Record<string, unknown> | undefined = undefined,\n\tTDynamic extends boolean = false,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTExcludedMethods extends string = never,\n> extends SQLiteDeleteBase<\n\tSQLiteAsyncDeleteHKT & { resultType: TResultType },\n\tTTable,\n\tTRunResult,\n\tTReturning,\n\tTDynamic,\n\tTExcludedMethods\n> implements RunnableQuery<TReturning extends undefined ? TRunResult : TReturning[], 'sqlite'>, SQLWrapper {\n\tstatic override readonly [entityKind]: string = 'SQLiteAsyncDelete';\n\n\tdeclare protected session: SQLiteAsyncSession<TResultType, TRunResult, any>;\n\n\t/** @internal */\n\t_prepare(prepare = false): SQLiteAsyncDeletePrepare<this> {\n\t\treturn this.session.prepareQuery(\n\t\t\tthis.dialect.sqlToQuery(this.getSQL()),\n\t\t\t'arrays',\n\t\t\tprepare,\n\t\t\tthis.config.returning ? 'all' : 'run',\n\t\t\tthis.config.returning ? this.dialect.mapperGenerators.rows(this.config.returning, undefined) : undefined,\n\t\t\t{\n\t\t\t\ttype: 'delete',\n\t\t\t\ttables: extractUsedTable(this.config.table),\n\t\t\t},\n\t\t) as SQLiteAsyncDeletePrepare<this>;\n\t}\n\n\tprepare(): SQLiteAsyncDeletePrepare<this> {\n\t\treturn this._prepare(true);\n\t}\n\n\trun: ReturnType<this['prepare']>['run'] = (placeholderValues) => {\n\t\treturn this._prepare().run(placeholderValues);\n\t};\n\n\tall: ReturnType<this['prepare']>['all'] = (placeholderValues) => {\n\t\treturn this._prepare().all(placeholderValues);\n\t};\n\n\tget: ReturnType<this['prepare']>['get'] = (placeholderValues) => {\n\t\treturn this._prepare().get(placeholderValues);\n\t};\n\n\tvalues: ReturnType<this['prepare']>['values'] = (placeholderValues) => {\n\t\treturn this._prepare().values(placeholderValues);\n\t};\n\n\tasync execute(placeholderValues?: Record<string, unknown>): Promise<SQLiteAsyncDeleteExecute<this>> {\n\t\treturn this._prepare().execute(placeholderValues) as SQLiteAsyncDeleteExecute<this>;\n\t}\n}\n\napplyMixins(SQLiteAsyncDeleteBase, [QueryPromise]);\n", "import { entityKind, is } from '~/entity.ts';\nimport type { TypedQueryBuilder } from '~/query-builders/query-builder.ts';\nimport type { SelectResultFields } from '~/query-builders/select.types.ts';\nimport type { Placeholder, Query, SQLWrapper } from '~/sql/sql.ts';\nimport { Param, SQL, sql } from '~/sql/sql.ts';\nimport type { SQLiteDialect } from '~/sqlite-core/dialect.ts';\nimport type { IndexColumn } from '~/sqlite-core/indexes.ts';\nimport type { SQLiteSession } from '~/sqlite-core/session.ts';\nimport { SQLiteTable } from '~/sqlite-core/table.ts';\nimport type { Subquery } from '~/subquery.ts';\nimport { type InferInsertModel, Table } from '~/table.ts';\nimport { type Assume, type DrizzleTypeError, mapUpdateSet, orderSelectedFields } from '~/utils.ts';\nimport type { AnySQLiteColumn, SQLiteColumn } from '../columns/common.ts';\nimport { QueryBuilder } from './query-builder.ts';\nimport type { SelectedFieldsFlat, SelectedFieldsOrdered } from './select.types.ts';\nimport type { SQLiteUpdateSetSource } from './update.ts';\n\nexport interface SQLiteInsertConfig<TTable extends SQLiteTable = SQLiteTable> {\n\ttable: TTable;\n\tvalues: Record<string, Param | SQL>[] | TypedQueryBuilder<SQLiteInsertSelection<TTable>> | SQL;\n\twithList?: Subquery[];\n\tonConflict?: SQL[];\n\treturning?: SelectedFieldsOrdered;\n\tselect?: boolean;\n}\n\nexport type SQLiteInsertValue<\n\tTTable extends SQLiteTable,\n\tTModel extends Record<string, any> = InferInsertModel<TTable>,\n> =\n\t& {\n\t\t[Key in keyof TModel]: TModel[Key] | SQL | Placeholder;\n\t}\n\t& {};\n\nexport type SQLiteInsertSelection<\n\tTTable extends SQLiteTable,\n\tTModel extends Record<string, unknown> = InferInsertModel<TTable>,\n> =\n\t& {\n\t\t[K in keyof TModel]:\n\t\t\t| AnySQLiteColumn\n\t\t\t| SQL\n\t\t\t| SQL.Aliased\n\t\t\t| TModel[K];\n\t}\n\t& {};\n\nexport type NoUnknownKeysInInsertSelection<\n\tTTable extends SQLiteTable,\n\tTSelection extends SQLiteInsertSelection<any>,\n> = {\n\t[K in keyof TSelection]: K extends keyof InferInsertModel<TTable> ? TSelection[K]\n\t\t: K extends keyof InferInsertModel<TTable, { override: true }> ? DrizzleTypeError<\n\t\t\t\t`Column \"${\n\t\t\t\t\t& K\n\t\t\t\t\t& string}\" in table \"${TTable['_'][\n\t\t\t\t\t'name'\n\t\t\t\t]}\" is a generated column - manual value insertion restricted`\n\t\t\t>\n\t\t: DrizzleTypeError<`Column \"${K & string}\" does not exist in table \"${TTable['_']['name']}\"`>;\n};\n\nexport interface SQLiteInsertBuilderConstructor {\n\tnew(\n\t\ttable: SQLiteTable,\n\t\tvalues: SQLiteInsertConfig['values'],\n\t\tsession: SQLiteSession<any, any>,\n\t\tdialect: SQLiteDialect,\n\t\twithList?: Subquery[],\n\t\tselect?: boolean,\n\t): AnySQLiteInsert;\n}\n\nexport class SQLiteInsertBuilder<\n\tTTable extends SQLiteTable,\n\tTRunResult,\n\tTHKT extends SQLiteInsertHKTBase = SQLiteInsertQueryBuilderHKT,\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteInsertBuilder';\n\n\tconstructor(\n\t\tprotected table: TTable,\n\t\tprotected session: SQLiteSession<any, any>,\n\t\tprotected dialect: SQLiteDialect,\n\t\tprivate withList?: Subquery[],\n\t\tprivate builder: SQLiteInsertBuilderConstructor = SQLiteInsertBase,\n\t) {}\n\n\tvalues(value: SQLiteInsertValue<TTable>): SQLiteInsertKind<THKT, TTable, TRunResult>;\n\tvalues(values: SQLiteInsertValue<TTable>[]): SQLiteInsertKind<THKT, TTable, TRunResult>;\n\tvalues(\n\t\tvalues: SQLiteInsertValue<TTable> | SQLiteInsertValue<TTable>[],\n\t): SQLiteInsertKind<THKT, TTable, TRunResult> {\n\t\tvalues = Array.isArray(values) ? values : [values];\n\t\tif (values.length === 0) {\n\t\t\tthrow new Error('values() must be called with at least one value');\n\t\t}\n\t\tconst mappedValues = values.map((entry) => {\n\t\t\tconst result: Record<string, Param | SQL> = {};\n\t\t\tconst cols = this.table[Table.Symbol.Columns];\n\t\t\tfor (const colKey of Object.keys(entry)) {\n\t\t\t\tconst colValue = entry[colKey as keyof typeof entry];\n\t\t\t\tresult[colKey] = is(colValue, SQL) ? colValue : new Param(colValue as any, cols[colKey]);\n\t\t\t}\n\t\t\treturn result;\n\t\t});\n\n\t\t// if (mappedValues.length > 1 && mappedValues.some((t) => Object.keys(t).length === 0)) {\n\t\t// \tthrow new Error(\n\t\t// \t\t`One of the values you want to insert is empty. In SQLite you can insert only one empty object per statement. For this case Drizzle with use \"INSERT INTO ... DEFAULT VALUES\" syntax`,\n\t\t// \t);\n\t\t// }\n\n\t\treturn new this.builder(this.table, mappedValues, this.session, this.dialect, this.withList) as any;\n\t}\n\n\tselect<TSelection extends SQLiteInsertSelection<TTable>>(\n\t\tselectQuery: (qb: QueryBuilder) => TypedQueryBuilder<NoUnknownKeysInInsertSelection<TTable, TSelection>>,\n\t): SQLiteInsertKind<THKT, TTable, TRunResult>;\n\tselect(selectQuery: (qb: QueryBuilder) => SQL): SQLiteInsertKind<THKT, TTable, TRunResult>;\n\tselect(selectQuery: SQL): SQLiteInsertKind<THKT, TTable, TRunResult>;\n\tselect<TSelection extends SQLiteInsertSelection<TTable>>(\n\t\tselectQuery: TypedQueryBuilder<NoUnknownKeysInInsertSelection<TTable, TSelection>>,\n\t): SQLiteInsertKind<THKT, TTable, TRunResult>;\n\tselect(\n\t\tselectQuery:\n\t\t\t| SQL\n\t\t\t| TypedQueryBuilder<NoUnknownKeysInInsertSelection<TTable, SQLiteInsertSelection<TTable>>>\n\t\t\t| ((qb: QueryBuilder) =>\n\t\t\t\t| TypedQueryBuilder<NoUnknownKeysInInsertSelection<TTable, SQLiteInsertSelection<TTable>>>\n\t\t\t\t| SQL),\n\t): SQLiteInsertKind<THKT, TTable, TRunResult> {\n\t\tconst select = typeof selectQuery === 'function' ? selectQuery(new QueryBuilder()) : selectQuery;\n\n\t\tif (!is(select, SQL)) {\n\t\t\tconst insertCols = Object.keys(this.table[Table.Symbol.Columns]);\n\t\t\tconst selected = Object.keys(select._.selectedFields);\n\n\t\t\tfor (const col of selected) {\n\t\t\t\tif (!insertCols.includes(col)) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Insert select error: column \"${col}\" does not exist in table \"${this.table[Table.Symbol.Name]}\"`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn new this.builder(this.table, select, this.session, this.dialect, this.withList, true) as any;\n\t}\n}\n\nexport interface SQLiteInsertHKTBase {\n\ttable: unknown;\n\tresultType: unknown;\n\trunResult: unknown;\n\treturning: unknown;\n\tdynamic: boolean;\n\texcludedMethods: string;\n\tresult: unknown;\n\t_type: unknown;\n}\n\nexport interface SQLiteInsertQueryBuilderHKT extends SQLiteInsertHKTBase {\n\t_type: SQLiteInsertBase<\n\t\tSQLiteInsertQueryBuilderHKT,\n\t\tAssume<this['table'], SQLiteTable>,\n\t\tthis['runResult'],\n\t\tthis['returning'],\n\t\tthis['dynamic'],\n\t\tthis['excludedMethods']\n\t>;\n}\n\nexport type SQLiteInsertKind<\n\tT extends SQLiteInsertHKTBase,\n\tTTable extends SQLiteTable,\n\tTRunResult,\n\tTReturning = undefined,\n\tTDynamic extends boolean = false,\n\tTExcludedMethods extends string = never,\n> = (T & {\n\ttable: TTable;\n\trunResult: TRunResult;\n\treturning: TReturning;\n\tdynamic: TDynamic;\n\texcludedMethods: TExcludedMethods;\n})['_type'];\n\nexport type SQLiteInsertWithout<T extends AnySQLiteInsert, TDynamic extends boolean, K extends keyof T & string> =\n\tTDynamic extends true ? T\n\t\t: Omit<\n\t\t\tSQLiteInsertKind<\n\t\t\t\tT['_']['hkt'],\n\t\t\t\tT['_']['table'],\n\t\t\t\tT['_']['runResult'],\n\t\t\t\tT['_']['returning'],\n\t\t\t\tTDynamic,\n\t\t\t\tT['_']['excludedMethods'] | K\n\t\t\t>,\n\t\t\tT['_']['excludedMethods'] | K\n\t\t>;\n\nexport type SQLiteInsertReturning<\n\tT extends AnySQLiteInsert,\n\tTDynamic extends boolean,\n\tTSelectedFields extends SelectedFieldsFlat,\n> = SQLiteInsertWithout<\n\tSQLiteInsertKind<\n\t\tT['_']['hkt'],\n\t\tT['_']['table'],\n\t\tT['_']['runResult'],\n\t\tSelectResultFields<TSelectedFields>,\n\t\tTDynamic,\n\t\tT['_']['excludedMethods']\n\t>,\n\tTDynamic,\n\t'returning'\n>;\n\nexport type SQLiteInsertReturningAll<\n\tT extends AnySQLiteInsert,\n\tTDynamic extends boolean,\n> = SQLiteInsertWithout<\n\tSQLiteInsertKind<\n\t\tT['_']['hkt'],\n\t\tT['_']['table'],\n\t\tT['_']['runResult'],\n\t\tT['_']['table']['$inferSelect'],\n\t\tTDynamic,\n\t\tT['_']['excludedMethods']\n\t>,\n\tTDynamic,\n\t'returning'\n>;\n\nexport type SQLiteInsertOnConflictDoUpdateConfig<T extends AnySQLiteInsert> = {\n\ttarget: IndexColumn | IndexColumn[];\n\t/** @deprecated - use either `targetWhere` or `setWhere` */\n\twhere?: SQL;\n\t// TODO: add tests for targetWhere and setWhere\n\ttargetWhere?: SQL;\n\tsetWhere?: SQL;\n\tset: SQLiteUpdateSetSource<T['_']['table']>;\n};\n\nexport type SQLiteInsertDynamic<T extends AnySQLiteInsert> = SQLiteInsertKind<\n\tT['_']['hkt'],\n\tT['_']['table'],\n\tT['_']['runResult'],\n\tT['_']['returning'],\n\ttrue,\n\tnever\n>;\n\nexport type AnySQLiteInsert = SQLiteInsertBase<any, any, any, any, any, any>;\n\nexport type SQLiteInsert<\n\tTTable extends SQLiteTable = SQLiteTable,\n\tTRunResult = unknown,\n\tTReturning = any,\n> = SQLiteInsertBase<SQLiteInsertQueryBuilderHKT, TTable, TRunResult, TReturning, true, never>;\n\nexport interface SQLiteInsertBase<\n\tTHKT extends SQLiteInsertHKTBase,\n\tTTable extends SQLiteTable,\n\tTRunResult,\n\tTReturning = undefined,\n\tTDynamic extends boolean = false,\n\tTExcludedMethods extends string = never,\n> extends SQLWrapper {\n\treadonly _: {\n\t\treadonly dialect: 'sqlite';\n\t\treadonly hkt: THKT;\n\t\treadonly table: TTable;\n\t\treadonly runResult: TRunResult;\n\t\treadonly returning: TReturning;\n\t\treadonly dynamic: TDynamic;\n\t\treadonly excludedMethods: TExcludedMethods;\n\t\treadonly result: TReturning extends undefined ? TRunResult : TReturning[];\n\t};\n}\n\nexport class SQLiteInsertBase<\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTHKT extends SQLiteInsertHKTBase,\n\tTTable extends SQLiteTable,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTRunResult,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTReturning = undefined,\n\tTDynamic extends boolean = false,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTExcludedMethods extends string = never,\n> implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'SQLiteInsert';\n\n\t/** @internal */\n\tconfig: SQLiteInsertConfig<TTable>;\n\n\tconstructor(\n\t\ttable: TTable,\n\t\tvalues: SQLiteInsertConfig['values'],\n\t\tprotected session: SQLiteSession<any, any>,\n\t\tprotected dialect: SQLiteDialect,\n\t\twithList?: Subquery[],\n\t\tselect?: boolean,\n\t) {\n\t\tthis.config = { table, values: values as any, withList, select };\n\t}\n\n\t/**\n\t * Adds a `returning` clause to the query.\n\t *\n\t * Calling this method will return the specified fields of the inserted rows. If no fields are specified, all fields will be returned.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/insert#insert-returning}\n\t *\n\t * @example\n\t * ```ts\n\t * // Insert one row and return all fields\n\t * const insertedCar: Car[] = await db.insert(cars)\n\t * .values({ brand: 'BMW' })\n\t * .returning();\n\t *\n\t * // Insert one row and return only the id\n\t * const insertedCarId: { id: number }[] = await db.insert(cars)\n\t * .values({ brand: 'BMW' })\n\t * .returning({ id: cars.id });\n\t * ```\n\t */\n\treturning(): SQLiteInsertReturningAll<this, TDynamic>;\n\treturning<TSelectedFields extends SelectedFieldsFlat>(\n\t\tfields: TSelectedFields,\n\t): SQLiteInsertReturning<this, TDynamic, TSelectedFields>;\n\treturning(\n\t\tfields: SelectedFieldsFlat = this.config.table[SQLiteTable.Symbol.Columns],\n\t): SQLiteInsertWithout<AnySQLiteInsert, TDynamic, 'returning'> {\n\t\tthis.config.returning = orderSelectedFields<SQLiteColumn>(fields);\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Adds an `on conflict do nothing` clause to the query.\n\t *\n\t * Calling this method simply avoids inserting a row as its alternative action.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/insert#on-conflict-do-nothing}\n\t *\n\t * @param config The `target` and `where` clauses.\n\t *\n\t * @example\n\t * ```ts\n\t * // Insert one row and cancel the insert if there's a conflict\n\t * await db.insert(cars)\n\t * .values({ id: 1, brand: 'BMW' })\n\t * .onConflictDoNothing();\n\t *\n\t * // Explicitly specify conflict target\n\t * await db.insert(cars)\n\t * .values({ id: 1, brand: 'BMW' })\n\t * .onConflictDoNothing({ target: cars.id });\n\t * ```\n\t */\n\tonConflictDoNothing(config: { target?: IndexColumn | IndexColumn[]; where?: SQL } = {}): this {\n\t\tif (!this.config.onConflict) this.config.onConflict = [];\n\n\t\tif (config.target === undefined) {\n\t\t\tthis.config.onConflict.push(sql` on conflict do nothing`);\n\t\t} else {\n\t\t\tconst targetSql = Array.isArray(config.target) ? sql`${config.target}` : sql`${[config.target]}`;\n\t\t\tconst whereSql = config.where ? sql` where ${config.where}` : sql``;\n\t\t\tthis.config.onConflict.push(sql` on conflict ${targetSql} do nothing${whereSql}`);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Adds an `on conflict do update` clause to the query.\n\t *\n\t * Calling this method will update the existing row that conflicts with the row proposed for insertion as its alternative action.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/insert#upserts-and-conflicts}\n\t *\n\t * @param config The `target`, `set` and `where` clauses.\n\t *\n\t * @example\n\t * ```ts\n\t * // Update the row if there's a conflict\n\t * await db.insert(cars)\n\t * .values({ id: 1, brand: 'BMW' })\n\t * .onConflictDoUpdate({\n\t * target: cars.id,\n\t * set: { brand: 'Porsche' }\n\t * });\n\t *\n\t * // Upsert with 'where' clause\n\t * await db.insert(cars)\n\t * .values({ id: 1, brand: 'BMW' })\n\t * .onConflictDoUpdate({\n\t * target: cars.id,\n\t * set: { brand: 'newBMW' },\n\t * where: sql`${cars.createdAt} > '2023-01-01'::date`,\n\t * });\n\t * ```\n\t */\n\tonConflictDoUpdate(config: SQLiteInsertOnConflictDoUpdateConfig<this>): this {\n\t\tif (config.where && (config.targetWhere || config.setWhere)) {\n\t\t\tthrow new Error(\n\t\t\t\t'You cannot use both \"where\" and \"targetWhere\"/\"setWhere\" at the same time - \"where\" is deprecated, use \"targetWhere\" or \"setWhere\" instead.',\n\t\t\t);\n\t\t}\n\n\t\tif (!this.config.onConflict) this.config.onConflict = [];\n\n\t\tconst whereSql = config.where ? sql` where ${config.where}` : undefined;\n\t\tconst targetWhereSql = config.targetWhere ? sql` where ${config.targetWhere}` : undefined;\n\t\tconst setWhereSql = config.setWhere ? sql` where ${config.setWhere}` : undefined;\n\t\tconst targetSql = Array.isArray(config.target) ? sql`${config.target}` : sql`${[config.target]}`;\n\t\tconst setSql = this.dialect.buildUpdateSet(this.config.table, mapUpdateSet(this.config.table, config.set));\n\t\tthis.config.onConflict.push(\n\t\t\tsql` on conflict ${targetSql}${targetWhereSql} do update set ${setSql}${whereSql}${setWhereSql}`,\n\t\t);\n\t\treturn this;\n\t}\n\n\tgetSQL(): SQL {\n\t\treturn this.dialect.buildInsertQuery(this.config);\n\t}\n\n\ttoSQL(): Query {\n\t\treturn this.dialect.sqlToQuery(this.getSQL());\n\t}\n\n\t$dynamic(): SQLiteInsertDynamic<this> {\n\t\treturn this as any;\n\t}\n}\n", "import { entityKind } from '~/entity.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport type { RunnableQuery } from '~/runnable-query.ts';\nimport type { SQLWrapper } from '~/sql/sql.ts';\nimport type { SQLiteInsertBuilder, SQLiteInsertHKTBase } from '~/sqlite-core/query-builders/insert.ts';\nimport { SQLiteInsertBase } from '~/sqlite-core/query-builders/insert.ts';\nimport type { SQLiteTable } from '~/sqlite-core/table.ts';\nimport type { DrizzleTypeError } from '~/utils.ts';\nimport { applyMixins, type Assume } from '~/utils.ts';\nimport { extractUsedTable } from '../utils.ts';\nimport type { SQLiteAsyncPreparedQuery, SQLiteAsyncPreparedQueryConfig, SQLiteAsyncSession } from './session.ts';\n\nexport interface SQLiteAsyncInsertHKT extends SQLiteInsertHKTBase {\n\t_type: SQLiteAsyncInsertBase<\n\t\tAssume<this['table'], SQLiteTable>,\n\t\tAssume<this['resultType'], 'sync' | 'async'>,\n\t\tthis['runResult'],\n\t\tthis['returning'],\n\t\tthis['dynamic'],\n\t\tthis['excludedMethods']\n\t>;\n}\n\nexport type AnySQLiteAsyncInsert = SQLiteAsyncInsertBase<any, any, any, any, any, any>;\n\nexport type SQLiteAsyncInsert<\n\tTTable extends SQLiteTable = SQLiteTable,\n\tTResultType extends 'sync' | 'async' = 'sync' | 'async',\n\tTRunResult = unknown,\n\tTReturning = any,\n> = SQLiteAsyncInsertBase<TTable, TResultType, TRunResult, TReturning, true, never>;\n\nexport type SQLiteAsyncInsertBuilder<\n\tTTable extends SQLiteTable,\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n> = SQLiteInsertBuilder<TTable, TRunResult, SQLiteAsyncInsertHKT & { resultType: TResultType }>;\n\nexport type SQLiteAsyncInsertExecute<T extends AnySQLiteAsyncInsert> = T['_']['returning'] extends undefined\n\t? T['_']['runResult']\n\t: T['_']['returning'][];\n\nexport type SQLiteAsyncInsertPrepare<T extends AnySQLiteAsyncInsert> = SQLiteAsyncPreparedQuery<\n\tSQLiteAsyncPreparedQueryConfig & {\n\t\ttype: T['_']['resultType'];\n\t\trun: T['_']['runResult'];\n\t\tall: T['_']['returning'] extends undefined ? DrizzleTypeError<'.all() cannot be used without .returning()'>\n\t\t\t: T['_']['returning'][];\n\t\tget: T['_']['returning'] extends undefined ? DrizzleTypeError<'.get() cannot be used without .returning()'>\n\t\t\t: T['_']['returning'];\n\t\tvalues: T['_']['returning'] extends undefined ? DrizzleTypeError<'.values() cannot be used without .returning()'>\n\t\t\t: any[][];\n\t\texecute: SQLiteAsyncInsertExecute<T>;\n\t}\n>;\n\nexport interface SQLiteAsyncInsertBase<\n\t// oxlint-disable-next-line no-unused-vars\n\tTTable extends SQLiteTable,\n\t// oxlint-disable-next-line no-unused-vars\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n\tTReturning = undefined,\n\t// oxlint-disable-next-line no-unused-vars\n\tTDynamic extends boolean = false,\n\t// oxlint-disable-next-line no-unused-vars\n\tTExcludedMethods extends string = never,\n> extends\n\tSQLiteInsertBase<\n\t\tSQLiteAsyncInsertHKT & { resultType: TResultType },\n\t\tTTable,\n\t\tTRunResult,\n\t\tTReturning,\n\t\tTDynamic,\n\t\tTExcludedMethods\n\t>,\n\tQueryPromise<TReturning extends undefined ? TRunResult : TReturning[]>\n{\n\treadonly _:\n\t\t& SQLiteInsertBase<\n\t\t\tSQLiteAsyncInsertHKT & { resultType: TResultType },\n\t\t\tTTable,\n\t\t\tTRunResult,\n\t\t\tTReturning,\n\t\t\tTDynamic,\n\t\t\tTExcludedMethods\n\t\t>['_']\n\t\t& { readonly resultType: TResultType };\n}\n\nexport class SQLiteAsyncInsertBase<\n\tTTable extends SQLiteTable,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n\tTReturning = undefined,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTDynamic extends boolean = false,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTExcludedMethods extends string = never,\n> extends SQLiteInsertBase<\n\tSQLiteAsyncInsertHKT & { resultType: TResultType },\n\tTTable,\n\tTRunResult,\n\tTReturning,\n\tTDynamic,\n\tTExcludedMethods\n> implements RunnableQuery<TReturning extends undefined ? TRunResult : TReturning[], 'sqlite'>, SQLWrapper {\n\tstatic override readonly [entityKind]: string = 'SQLiteAsyncInsert';\n\n\tdeclare protected session: SQLiteAsyncSession<TResultType, TRunResult, any>;\n\n\t/** @internal */\n\t_prepare(prepare = false): SQLiteAsyncInsertPrepare<this> {\n\t\treturn this.session.prepareQuery(\n\t\t\tthis.dialect.sqlToQuery(this.getSQL()),\n\t\t\t'arrays',\n\t\t\tprepare,\n\t\t\tthis.config.returning ? 'all' : 'run',\n\t\t\tthis.config.returning ? this.dialect.mapperGenerators.rows(this.config.returning, undefined) : undefined,\n\t\t\t{\n\t\t\t\ttype: 'insert',\n\t\t\t\ttables: extractUsedTable(this.config.table),\n\t\t\t},\n\t\t) as SQLiteAsyncInsertPrepare<this>;\n\t}\n\n\tprepare(): SQLiteAsyncInsertPrepare<this> {\n\t\treturn this._prepare(true);\n\t}\n\n\trun: ReturnType<this['prepare']>['run'] = (placeholderValues) => {\n\t\treturn this._prepare().run(placeholderValues);\n\t};\n\n\tall: ReturnType<this['prepare']>['all'] = (placeholderValues) => {\n\t\treturn this._prepare().all(placeholderValues);\n\t};\n\n\tget: ReturnType<this['prepare']>['get'] = (placeholderValues) => {\n\t\treturn this._prepare().get(placeholderValues);\n\t};\n\n\tvalues: ReturnType<this['prepare']>['values'] = (placeholderValues) => {\n\t\treturn this._prepare().values(placeholderValues);\n\t};\n\n\tasync execute(): Promise<SQLiteAsyncInsertExecute<this>> {\n\t\treturn this._prepare().execute() as SQLiteAsyncInsertExecute<this>;\n\t}\n}\n\napplyMixins(SQLiteAsyncInsertBase, [QueryPromise]);\n", "import { entityKind } from '~/entity.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport type { Query, SQL, SQLWrapper } from '~/sql/sql.ts';\nimport type { SQLitePreparedQuery } from '../session.ts';\n\n// TODO: remove Raw builders & replace them with preparedQuery instances directly\n// oxlint-disable-next-line no-unused-vars\nexport interface SQLiteRaw<TResult> extends SQLWrapper {}\nexport class SQLiteRaw<TResult> implements SQLWrapper, PreparedQuery {\n\tstatic readonly [entityKind]: string = 'SQLiteRaw';\n\n\tdeclare readonly _: {\n\t\treadonly dialect: 'sqlite';\n\t\treadonly result: TResult;\n\t};\n\n\tconstructor(\n\t\tprotected prepared: SQLitePreparedQuery,\n\t\tprotected sql: SQL,\n\t\tprotected query: Query,\n\t) {\n\t}\n\n\tgetSQL() {\n\t\treturn this.sql;\n\t}\n\n\tgetQuery() {\n\t\treturn this.query;\n\t}\n\n\t_prepare(): PreparedQuery {\n\t\treturn this.prepared;\n\t}\n}\n", "import { entityKind } from '~/entity.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport type { RunnableQuery } from '~/runnable-query.ts';\nimport type { Query, SQL, SQLWrapper } from '~/sql/sql.ts';\nimport { SQLiteRaw } from '~/sqlite-core/query-builders/raw.ts';\nimport { applyMixins } from '~/utils.ts';\nimport type { SQLiteAsyncPreparedQuery, SQLiteAsyncPreparedQueryConfig } from './session.ts';\n\nexport interface SQLiteAsyncRaw<TResult>\n\textends SQLiteRaw<TResult>, QueryPromise<TResult>, RunnableQuery<TResult, 'sqlite'>, SQLWrapper\n{}\n\nexport class SQLiteAsyncRaw<TResult> extends SQLiteRaw<TResult>\n\timplements RunnableQuery<TResult, 'sqlite'>, SQLWrapper\n{\n\tstatic override readonly [entityKind]: string = 'SQLiteAsyncRaw';\n\n\tdeclare protected prepared: SQLiteAsyncPreparedQuery<\n\t\tSQLiteAsyncPreparedQueryConfig & {\n\t\t\texecute: TResult;\n\t\t}\n\t>;\n\n\tconstructor(\n\t\tprepared: SQLiteAsyncPreparedQuery<\n\t\t\tSQLiteAsyncPreparedQueryConfig & {\n\t\t\t\texecute: TResult;\n\t\t\t}\n\t\t>,\n\t\tsql: SQL,\n\t\tquery: Query,\n\t) {\n\t\tsuper(prepared, sql, query);\n\t}\n\n\texecute(placeholderValues?: Record<string, undefined>): Promise<TResult> {\n\t\treturn this.prepared.execute(placeholderValues) as Promise<TResult>;\n\t}\n}\n\napplyMixins(SQLiteAsyncRaw, [QueryPromise]);\n\nexport type DBResult<TKind extends 'sync' | 'async', TResult> = TKind extends 'async' ? SQLiteAsyncRaw<TResult>\n\t: TResult;\n", "import { entityKind } from '~/entity.ts';\nimport type {\n\tBuildSubquerySelection,\n\tJoinNullability,\n\tSelectMode,\n\tSelectResult,\n} from '~/query-builders/select.types.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport type { RunnableQuery } from '~/runnable-query.ts';\nimport type { ColumnsSelection, SQLWrapper } from '~/sql/sql.ts';\nimport { SQLiteSelectBase, type SQLiteSelectBuilder } from '~/sqlite-core/query-builders/select.ts';\nimport type { SelectedFields, SQLiteSelectHKTBase } from '~/sqlite-core/query-builders/select.types.ts';\nimport { applyMixins, type Assume } from '~/utils.ts';\nimport type { SQLiteAsyncPreparedQuery, SQLiteAsyncPreparedQueryConfig, SQLiteAsyncSession } from './session.ts';\n\nexport type SQLiteAsyncSelectExecute<T extends AnySQLiteAsyncSelect> = T['_']['result'];\n\nexport type SQLiteAsyncSelectPrepare<T extends AnySQLiteAsyncSelect> = SQLiteAsyncPreparedQuery<\n\tSQLiteAsyncPreparedQueryConfig & {\n\t\ttype: T['_']['resultType'];\n\t\trun: T['_']['runResult'];\n\t\tall: T['_']['result'];\n\t\tget: T['_']['result'][number] | undefined;\n\t\tvalues: any[][];\n\t\texecute: SQLiteAsyncSelectExecute<T>;\n\t}\n>;\n\nexport type SQLiteAsyncSelectBuilder<\n\tTSelection extends SelectedFields | undefined,\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n> = SQLiteSelectBuilder<TSelection, TRunResult, SQLiteAsyncSelectHKT & { resultType: TResultType }>;\n\nexport type SQLiteAsyncSelect<\n\tTTableName extends string | undefined = string | undefined,\n\tTResultType extends 'sync' | 'async' = 'sync' | 'async',\n\tTRunResult = unknown,\n\tTSelection extends ColumnsSelection = Record<string, any>,\n\tTSelectMode extends SelectMode = SelectMode,\n\tTNullabilityMap extends Record<string, JoinNullability> = Record<string, JoinNullability>,\n> = SQLiteAsyncSelectBase<TTableName, TResultType, TRunResult, TSelection, TSelectMode, TNullabilityMap, true, never>;\n\nexport interface SQLiteAsyncSelectHKT extends SQLiteSelectHKTBase {\n\t_type: SQLiteAsyncSelectBase<\n\t\tthis['tableName'],\n\t\tAssume<this['resultType'], 'sync' | 'async'>,\n\t\tthis['runResult'],\n\t\tAssume<this['selection'], ColumnsSelection>,\n\t\tthis['selectMode'],\n\t\tAssume<this['nullabilityMap'], Record<string, JoinNullability>>,\n\t\tthis['dynamic'],\n\t\tthis['excludedMethods'],\n\t\tAssume<this['result'], any[]>,\n\t\tAssume<this['selectedFields'], ColumnsSelection>\n\t>;\n}\n\nexport interface SQLiteAsyncSelectBase<\n\tTTableName extends string | undefined,\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n\tTSelection extends ColumnsSelection,\n\tTSelectMode extends SelectMode = 'single',\n\tTNullabilityMap extends Record<string, JoinNullability> = TTableName extends string ? Record<TTableName, 'not-null'>\n\t\t: {},\n\t// oxlint-disable-next-line no-unused-vars\n\tTDynamic extends boolean = false,\n\t// oxlint-disable-next-line no-unused-vars\n\tTExcludedMethods extends string = never,\n\tTResult extends any[] = SelectResult<TSelection, TSelectMode, TNullabilityMap>[],\n\t// oxlint-disable-next-line no-unused-vars\n\tTSelectedFields extends ColumnsSelection = BuildSubquerySelection<TSelection, TNullabilityMap>,\n> extends\n\tSQLiteSelectBase<\n\t\tSQLiteAsyncSelectHKT & { resultType: TResultType },\n\t\tTTableName,\n\t\tTRunResult,\n\t\tTSelection,\n\t\tTSelectMode,\n\t\tTNullabilityMap,\n\t\tTDynamic,\n\t\tTExcludedMethods,\n\t\tTResult,\n\t\tTSelectedFields\n\t>,\n\tQueryPromise<TResult>\n{\n\treadonly _:\n\t\t& SQLiteSelectBase<\n\t\t\tSQLiteAsyncSelectHKT & { resultType: TResultType },\n\t\t\tTTableName,\n\t\t\tTRunResult,\n\t\t\tTSelection,\n\t\t\tTSelectMode,\n\t\t\tTNullabilityMap,\n\t\t\tTDynamic,\n\t\t\tTExcludedMethods,\n\t\t\tTResult,\n\t\t\tTSelectedFields\n\t\t>['_']\n\t\t& { readonly resultType: TResultType };\n}\n\nexport class SQLiteAsyncSelectBase<\n\tTTableName extends string | undefined,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n\tTSelection,\n\tTSelectMode extends SelectMode = 'single',\n\tTNullabilityMap extends Record<string, JoinNullability> = TTableName extends string ? Record<TTableName, 'not-null'>\n\t\t: {},\n\tTDynamic extends boolean = false,\n\tTExcludedMethods extends string = never,\n\tTResult = SelectResult<TSelection, TSelectMode, TNullabilityMap>[],\n\tTSelectedFields extends ColumnsSelection = BuildSubquerySelection<TSelection, TNullabilityMap>,\n> extends SQLiteSelectBase<\n\tSQLiteAsyncSelectHKT & { resultType: TResultType },\n\tTTableName,\n\tTRunResult,\n\tTSelection,\n\tTSelectMode,\n\tTNullabilityMap,\n\tTDynamic,\n\tTExcludedMethods,\n\tTResult,\n\tTSelectedFields\n> implements RunnableQuery<TResult, 'sqlite'>, SQLWrapper {\n\tstatic override readonly [entityKind]: string = 'SQLiteAsyncSelect';\n\n\tdeclare protected session: SQLiteAsyncSession<TResultType, TRunResult, any>;\n\n\t/** @internal */\n\t_prepare(prepare = false): SQLiteAsyncSelectPrepare<this> {\n\t\t// Build query before accessing `fieldsFlat` - build mutates it\n\t\tconst query = this.dialect.sqlToQuery(this.getSQL());\n\t\tconst fieldsList = this.config.fieldsFlat!;\n\t\tconst mapper = this.dialect.mapperGenerators.rows(fieldsList, this.joinsNotNullableMap);\n\n\t\tconst preparedQuery = this.session.prepareQuery(\n\t\t\tquery,\n\t\t\t'arrays',\n\t\t\tprepare,\n\t\t\t'all',\n\t\t\tmapper,\n\t\t\t{\n\t\t\t\ttype: 'select',\n\t\t\t\ttables: [...this.usedTables],\n\t\t\t},\n\t\t\tthis.cacheConfig,\n\t\t);\n\t\treturn preparedQuery as ReturnType<this['prepare']>;\n\t}\n\n\tprepare(): SQLiteAsyncSelectPrepare<this> {\n\t\treturn this._prepare(true);\n\t}\n\n\trun: ReturnType<this['prepare']>['run'] = (placeholderValues) => {\n\t\treturn this._prepare().run(placeholderValues);\n\t};\n\n\tall: ReturnType<this['prepare']>['all'] = (placeholderValues) => {\n\t\treturn this._prepare().all(placeholderValues);\n\t};\n\n\tget: ReturnType<this['prepare']>['get'] = (placeholderValues) => {\n\t\treturn this._prepare().get(placeholderValues);\n\t};\n\n\tvalues: ReturnType<this['prepare']>['values'] = (placeholderValues) => {\n\t\treturn this._prepare().values(placeholderValues);\n\t};\n\n\tasync execute(): Promise<SQLiteAsyncSelectExecute<this>> {\n\t\treturn this._prepare().execute() as Promise<SQLiteAsyncSelectExecute<this>>;\n\t}\n}\n\napplyMixins(SQLiteAsyncSelectBase, [QueryPromise]);\n\nexport type AnySQLiteAsyncSelect = SQLiteAsyncSelectBase<any, any, any, any, any, any, any, any, any, any>;\n", "import type { GetColumnData } from '~/column.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { JoinType, SelectResultFields } from '~/query-builders/select.types.ts';\nimport { SelectionProxyHandler } from '~/selection-proxy.ts';\nimport type { Placeholder, Query, SQL, SQLWrapper } from '~/sql/sql.ts';\nimport type { SQLiteDialect } from '~/sqlite-core/dialect.ts';\nimport type { SQLiteSession } from '~/sqlite-core/session.ts';\nimport { SQLiteTable } from '~/sqlite-core/table.ts';\nimport { Subquery } from '~/subquery.ts';\nimport { type InferInsertModel, Table } from '~/table.ts';\nimport {\n\ttype Assume,\n\tgetTableLikeName,\n\tmapUpdateSet,\n\torderSelectedFields,\n\ttype UpdateSet,\n\ttype ValueOrArray,\n} from '~/utils.ts';\nimport { ViewBaseConfig } from '~/view-common.ts';\nimport type { SQLiteColumn } from '../columns/common.ts';\nimport { SQLiteViewBase } from '../view-base.ts';\nimport type { SelectedFields, SelectedFieldsOrdered, SQLiteSelectJoinConfig } from './select.types.ts';\n\nexport interface SQLiteUpdateConfig {\n\twhere?: SQL | undefined;\n\tlimit?: number | Placeholder;\n\torderBy?: (SQLiteColumn | SQL | SQL.Aliased)[];\n\tset: UpdateSet;\n\ttable: SQLiteTable;\n\tfrom?: SQLiteTable | Subquery | SQLiteViewBase | SQL;\n\tjoins: SQLiteSelectJoinConfig[];\n\treturning?: SelectedFieldsOrdered;\n\twithList?: Subquery[];\n}\n\nexport type SQLiteUpdateSetSource<\n\tTTable extends SQLiteTable,\n\tTModel extends Record<string, any> = InferInsertModel<TTable>,\n> =\n\t& {\n\t\t[Key in keyof TModel & string]?:\n\t\t\t| GetColumnData<TTable['_']['columns'][Key], 'query'>\n\t\t\t| SQL\n\t\t\t| SQLiteColumn\n\t\t\t| Placeholder\n\t\t\t| undefined;\n\t}\n\t& {};\n\nexport interface SQLiteUpdateBuilderConstructor {\n\tnew(\n\t\ttable: SQLiteTable,\n\t\tset: UpdateSet,\n\t\tsession: SQLiteSession<any, any>,\n\t\tdialect: SQLiteDialect,\n\t\twithList?: Subquery[],\n\t): AnySQLiteUpdate;\n}\n\nexport class SQLiteUpdateBuilder<\n\tTTable extends SQLiteTable,\n\tTRunResult,\n\tTHKT extends SQLiteUpdateHKTBase = SQLiteUpdateQueryBuilderHKT,\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteUpdateBuilder';\n\n\tdeclare readonly _: {\n\t\treadonly table: TTable;\n\t};\n\n\tconstructor(\n\t\tprotected table: TTable,\n\t\tprotected session: SQLiteSession<any, any>,\n\t\tprotected dialect: SQLiteDialect,\n\t\tprivate withList?: Subquery[],\n\t\tprivate builder: SQLiteUpdateBuilderConstructor = SQLiteUpdateBase,\n\t) {}\n\n\tset(\n\t\tvalues: SQLiteUpdateSetSource<TTable>,\n\t): SQLiteUpdateWithout<\n\t\tAssume<SQLiteUpdateKind<THKT, TTable, TRunResult>, AnySQLiteUpdate>,\n\t\tfalse,\n\t\t'leftJoin' | 'rightJoin' | 'innerJoin' | 'fullJoin'\n\t> {\n\t\treturn new this.builder(\n\t\t\tthis.table,\n\t\t\tmapUpdateSet(this.table, values),\n\t\t\tthis.session,\n\t\t\tthis.dialect,\n\t\t\tthis.withList,\n\t\t) as any;\n\t}\n}\n\nexport interface SQLiteUpdateHKTBase {\n\ttable: unknown;\n\tresultType: unknown;\n\trunResult: unknown;\n\tfrom: unknown;\n\treturning: unknown;\n\tdynamic: boolean;\n\texcludedMethods: string;\n\tresult: unknown;\n\t_type: unknown;\n}\n\nexport interface SQLiteUpdateQueryBuilderHKT extends SQLiteUpdateHKTBase {\n\t_type: SQLiteUpdateBase<\n\t\tSQLiteUpdateQueryBuilderHKT,\n\t\tAssume<this['table'], SQLiteTable>,\n\t\tthis['runResult'],\n\t\tAssume<this['from'], SQLiteTable | Subquery | SQLiteViewBase | SQL | undefined>,\n\t\tthis['returning'],\n\t\tthis['dynamic'],\n\t\tthis['excludedMethods']\n\t>;\n}\n\nexport type SQLiteUpdateKind<\n\tT extends SQLiteUpdateHKTBase,\n\tTTable extends SQLiteTable,\n\tTRunResult,\n\tTFrom extends SQLiteTable | Subquery | SQLiteViewBase | SQL | undefined = undefined,\n\tTReturning = undefined,\n\tTDynamic extends boolean = false,\n\tTExcludedMethods extends string = never,\n> = (T & {\n\ttable: TTable;\n\trunResult: TRunResult;\n\tfrom: TFrom;\n\treturning: TReturning;\n\tdynamic: TDynamic;\n\texcludedMethods: TExcludedMethods;\n\tresult: TReturning extends undefined ? TRunResult : TReturning[];\n})['_type'];\n\nexport type SQLiteUpdateWithout<\n\tT extends AnySQLiteUpdate,\n\tTDynamic extends boolean,\n\tK extends keyof T & string,\n> = TDynamic extends true ? T : Omit<\n\tSQLiteUpdateKind<\n\t\tT['_']['hkt'],\n\t\tT['_']['table'],\n\t\tT['_']['runResult'],\n\t\tT['_']['from'],\n\t\tT['_']['returning'],\n\t\tTDynamic,\n\t\tT['_']['excludedMethods'] | K\n\t>,\n\tT['_']['excludedMethods'] | K\n>;\n\nexport type SQLiteUpdateWithJoins<\n\tT extends AnySQLiteUpdate,\n\tTDynamic extends boolean,\n\tTFrom extends SQLiteTable | Subquery | SQLiteViewBase | SQL,\n> = TDynamic extends true ? T : Omit<\n\tSQLiteUpdateKind<\n\t\tT['_']['hkt'],\n\t\tT['_']['table'],\n\t\tT['_']['runResult'],\n\t\tTFrom,\n\t\tT['_']['returning'],\n\t\tTDynamic,\n\t\tExclude<T['_']['excludedMethods'] | 'from', 'leftJoin' | 'rightJoin' | 'innerJoin' | 'fullJoin'>\n\t>,\n\tExclude<T['_']['excludedMethods'] | 'from', 'leftJoin' | 'rightJoin' | 'innerJoin' | 'fullJoin'>\n>;\n\nexport type SQLiteUpdateReturningAll<T extends AnySQLiteUpdate, TDynamic extends boolean> = SQLiteUpdateWithout<\n\tSQLiteUpdateKind<\n\t\tT['_']['hkt'],\n\t\tT['_']['table'],\n\t\tT['_']['runResult'],\n\t\tT['_']['from'],\n\t\tT['_']['table']['$inferSelect'],\n\t\tTDynamic,\n\t\tT['_']['excludedMethods']\n\t>,\n\tTDynamic,\n\t'returning'\n>;\n\nexport type SQLiteUpdateReturning<\n\tT extends AnySQLiteUpdate,\n\tTDynamic extends boolean,\n\tTSelectedFields extends SelectedFields,\n> = SQLiteUpdateWithout<\n\tSQLiteUpdateKind<\n\t\tT['_']['hkt'],\n\t\tT['_']['table'],\n\t\tT['_']['runResult'],\n\t\tT['_']['from'],\n\t\tSelectResultFields<TSelectedFields>,\n\t\tTDynamic,\n\t\tT['_']['excludedMethods']\n\t>,\n\tTDynamic,\n\t'returning'\n>;\n\nexport type SQLiteUpdateJoinFn<\n\tT extends AnySQLiteUpdate,\n> = <\n\tTJoinedTable extends SQLiteTable | Subquery | SQLiteViewBase | SQL,\n>(\n\ttable: TJoinedTable,\n\ton:\n\t\t| (\n\t\t\t(\n\t\t\t\tupdateTable: T['_']['table']['_']['columns'],\n\t\t\t\tfrom: T['_']['from'] extends SQLiteTable ? T['_']['from']['_']['columns']\n\t\t\t\t\t: T['_']['from'] extends Subquery | SQLiteViewBase ? T['_']['from']['_']['selectedFields']\n\t\t\t\t\t: never,\n\t\t\t) => SQL | undefined\n\t\t)\n\t\t| SQL\n\t\t| undefined,\n) => T;\n\nexport type SQLiteUpdateDynamic<T extends AnySQLiteUpdate> = SQLiteUpdateKind<\n\tT['_']['hkt'],\n\tT['_']['table'],\n\tT['_']['runResult'],\n\tT['_']['from'],\n\tT['_']['returning'],\n\ttrue,\n\tnever\n>;\n\nexport type SQLiteUpdate<\n\tTTable extends SQLiteTable = SQLiteTable,\n\tTRunResult = any,\n\tTFrom extends SQLiteTable | Subquery | SQLiteViewBase | SQL | undefined = undefined,\n\tTReturning extends Record<string, unknown> | undefined = Record<string, unknown> | undefined,\n> = SQLiteUpdateBase<SQLiteUpdateQueryBuilderHKT, TTable, TRunResult, TFrom, TReturning, true, never>;\n\nexport type AnySQLiteUpdate = SQLiteUpdateBase<any, any, any, any, any, any, any>;\n\nexport interface SQLiteUpdateBase<\n\tTHKT extends SQLiteUpdateHKTBase,\n\tTTable extends SQLiteTable = SQLiteTable,\n\tTRunResult = unknown,\n\tTFrom extends SQLiteTable | Subquery | SQLiteViewBase | SQL | undefined = undefined,\n\tTReturning = undefined,\n\tTDynamic extends boolean = false,\n\tTExcludedMethods extends string = never,\n> extends SQLWrapper {\n\treadonly _: {\n\t\treadonly dialect: 'sqlite';\n\t\treadonly hkt: THKT;\n\t\treadonly table: TTable;\n\t\treadonly runResult: TRunResult;\n\t\treadonly from: TFrom;\n\t\treadonly returning: TReturning;\n\t\treadonly dynamic: TDynamic;\n\t\treadonly excludedMethods: TExcludedMethods;\n\t\treadonly result: TReturning extends undefined ? TRunResult : TReturning[];\n\t};\n}\n\nexport class SQLiteUpdateBase<\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTHKT extends SQLiteUpdateHKTBase,\n\tTTable extends SQLiteTable = SQLiteTable,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTRunResult = unknown,\n\tTFrom extends SQLiteTable | Subquery | SQLiteViewBase | SQL | undefined = undefined,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTReturning = undefined,\n\tTDynamic extends boolean = false,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTExcludedMethods extends string = never,\n> implements SQLWrapper {\n\tstatic readonly [entityKind]: string = 'SQLiteUpdate';\n\n\t/** @internal */\n\tconfig: SQLiteUpdateConfig;\n\n\tconstructor(\n\t\ttable: TTable,\n\t\tset: UpdateSet,\n\t\tprotected session: SQLiteSession<any, any>,\n\t\tprotected dialect: SQLiteDialect,\n\t\twithList?: Subquery[],\n\t) {\n\t\tthis.config = { set, table, withList, joins: [] };\n\t}\n\n\tfrom<TFrom extends SQLiteTable | Subquery | SQLiteViewBase | SQL>(\n\t\tsource: TFrom,\n\t): SQLiteUpdateWithJoins<this, TDynamic, TFrom> {\n\t\tthis.config.from = source;\n\t\treturn this as any;\n\t}\n\n\tprivate createJoin<TJoinType extends JoinType>(\n\t\tjoinType: TJoinType,\n\t): SQLiteUpdateJoinFn<this> {\n\t\treturn ((\n\t\t\ttable: SQLiteTable | Subquery | SQLiteViewBase | SQL,\n\t\t\ton: ((updateTable: TTable, from: TFrom) => SQL | undefined) | SQL | undefined,\n\t\t) => {\n\t\t\tconst tableName = getTableLikeName(table);\n\n\t\t\tif (typeof tableName === 'string' && this.config.joins.some((join) => join.alias === tableName)) {\n\t\t\t\tthrow new Error(`Alias \"${tableName}\" is already used in this query`);\n\t\t\t}\n\n\t\t\tif (typeof on === 'function') {\n\t\t\t\tconst from = this.config.from\n\t\t\t\t\t? is(table, SQLiteTable)\n\t\t\t\t\t\t? table[Table.Symbol.Columns]\n\t\t\t\t\t\t: is(table, Subquery)\n\t\t\t\t\t\t? table._.selectedFields\n\t\t\t\t\t\t: is(table, SQLiteViewBase)\n\t\t\t\t\t\t? table[ViewBaseConfig].selectedFields\n\t\t\t\t\t\t: undefined\n\t\t\t\t\t: undefined;\n\t\t\t\ton = on(\n\t\t\t\t\tnew Proxy(\n\t\t\t\t\t\tthis.config.table[Table.Symbol.Columns],\n\t\t\t\t\t\tnew SelectionProxyHandler({ sqlAliasedBehavior: 'sql', sqlBehavior: 'sql' }),\n\t\t\t\t\t) as any,\n\t\t\t\t\tfrom && new Proxy(\n\t\t\t\t\t\tfrom,\n\t\t\t\t\t\tnew SelectionProxyHandler({ sqlAliasedBehavior: 'sql', sqlBehavior: 'sql' }),\n\t\t\t\t\t) as any,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.config.joins.push({ on, table, joinType, alias: tableName });\n\n\t\t\treturn this as any;\n\t\t}) as any;\n\t}\n\n\tleftJoin = this.createJoin('left');\n\n\trightJoin = this.createJoin('right');\n\n\tinnerJoin = this.createJoin('inner');\n\n\tfullJoin = this.createJoin('full');\n\n\t/**\n\t * Adds a 'where' clause to the query.\n\t *\n\t * Calling this method will update only those rows that fulfill a specified condition.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/update}\n\t *\n\t * @param where the 'where' clause.\n\t *\n\t * @example\n\t * You can use conditional operators and `sql function` to filter the rows to be updated.\n\t *\n\t * ```ts\n\t * // Update all cars with green color\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(eq(cars.color, 'green'));\n\t * // or\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(sql`${cars.color} = 'green'`)\n\t * ```\n\t *\n\t * You can logically combine conditional operators with `and()` and `or()` operators:\n\t *\n\t * ```ts\n\t * // Update all BMW cars with a green color\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(and(eq(cars.color, 'green'), eq(cars.brand, 'BMW')));\n\t *\n\t * // Update all cars with the green or blue color\n\t * db.update(cars).set({ color: 'red' })\n\t * .where(or(eq(cars.color, 'green'), eq(cars.color, 'blue')));\n\t * ```\n\t */\n\twhere(where: SQL | undefined): SQLiteUpdateWithout<this, TDynamic, 'where'> {\n\t\tthis.config.where = where;\n\t\treturn this as any;\n\t}\n\n\torderBy(\n\t\tbuilder: (updateTable: TTable) => ValueOrArray<SQLiteColumn | SQL | SQL.Aliased>,\n\t): SQLiteUpdateWithout<this, TDynamic, 'orderBy'>;\n\torderBy(...columns: (SQLiteColumn | SQL | SQL.Aliased)[]): SQLiteUpdateWithout<this, TDynamic, 'orderBy'>;\n\torderBy(\n\t\t...columns:\n\t\t\t| [(updateTable: TTable) => ValueOrArray<SQLiteColumn | SQL | SQL.Aliased>]\n\t\t\t| (SQLiteColumn | SQL | SQL.Aliased)[]\n\t): SQLiteUpdateWithout<this, TDynamic, 'orderBy'> {\n\t\tif (typeof columns[0] === 'function') {\n\t\t\tconst orderBy = columns[0](\n\t\t\t\tnew Proxy(\n\t\t\t\t\tthis.config.table[Table.Symbol.Columns],\n\t\t\t\t\tnew SelectionProxyHandler({ sqlAliasedBehavior: 'alias', sqlBehavior: 'sql' }),\n\t\t\t\t) as any,\n\t\t\t);\n\n\t\t\tconst orderByArray = Array.isArray(orderBy) ? orderBy : [orderBy];\n\t\t\tthis.config.orderBy = orderByArray;\n\t\t} else {\n\t\t\tconst orderByArray = columns as (SQLiteColumn | SQL | SQL.Aliased)[];\n\t\t\tthis.config.orderBy = orderByArray;\n\t\t}\n\t\treturn this as any;\n\t}\n\n\tlimit(limit: number | Placeholder): SQLiteUpdateWithout<this, TDynamic, 'limit'> {\n\t\tthis.config.limit = limit;\n\t\treturn this as any;\n\t}\n\n\t/**\n\t * Adds a `returning` clause to the query.\n\t *\n\t * Calling this method will return the specified fields of the updated rows. If no fields are specified, all fields will be returned.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/update#update-with-returning}\n\t *\n\t * @example\n\t * ```ts\n\t * // Update all cars with the green color and return all fields\n\t * const updatedCars: Car[] = await db.update(cars)\n\t * .set({ color: 'red' })\n\t * .where(eq(cars.color, 'green'))\n\t * .returning();\n\t *\n\t * // Update all cars with the green color and return only their id and brand fields\n\t * const updatedCarsIdsAndBrands: { id: number, brand: string }[] = await db.update(cars)\n\t * .set({ color: 'red' })\n\t * .where(eq(cars.color, 'green'))\n\t * .returning({ id: cars.id, brand: cars.brand });\n\t * ```\n\t */\n\treturning(): SQLiteUpdateReturningAll<this, TDynamic>;\n\treturning<TSelectedFields extends SelectedFields>(\n\t\tfields: TSelectedFields,\n\t): SQLiteUpdateReturning<this, TDynamic, TSelectedFields>;\n\treturning(\n\t\tfields: SelectedFields = this.config.table[SQLiteTable.Symbol.Columns],\n\t): SQLiteUpdateWithout<AnySQLiteUpdate, TDynamic, 'returning'> {\n\t\tthis.config.returning = orderSelectedFields<SQLiteColumn>(fields);\n\t\treturn this as any;\n\t}\n\n\tgetSQL(): SQL {\n\t\treturn this.dialect.buildUpdateQuery(this.config);\n\t}\n\n\ttoSQL(): Query {\n\t\treturn this.dialect.sqlToQuery(this.getSQL());\n\t}\n\n\t$dynamic(): SQLiteUpdateDynamic<this> {\n\t\treturn this as any;\n\t}\n}\n", "import { entityKind } from '~/entity.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport type { RunnableQuery } from '~/runnable-query.ts';\nimport type { SQL, SQLWrapper } from '~/sql/sql.ts';\nimport type { SQLiteUpdateBuilder, SQLiteUpdateHKTBase } from '~/sqlite-core/query-builders/update.ts';\nimport { SQLiteUpdateBase } from '~/sqlite-core/query-builders/update.ts';\nimport type { SQLiteTable } from '~/sqlite-core/table.ts';\nimport type { Subquery } from '~/subquery.ts';\nimport { applyMixins, type Assume, type DrizzleTypeError } from '~/utils.ts';\nimport { extractUsedTable } from '../utils.ts';\nimport type { SQLiteViewBase } from '../view-base.ts';\nimport type { SQLiteAsyncPreparedQuery, SQLiteAsyncPreparedQueryConfig, SQLiteAsyncSession } from './session.ts';\n\nexport interface SQLiteAsyncUpdateHKT extends SQLiteUpdateHKTBase {\n\t_type: SQLiteAsyncUpdateBase<\n\t\tAssume<this['table'], SQLiteTable>,\n\t\tAssume<this['resultType'], 'sync' | 'async'>,\n\t\tthis['runResult'],\n\t\tAssume<this['from'], SQLiteTable | Subquery | SQLiteViewBase | SQL | undefined>,\n\t\tthis['returning'],\n\t\tthis['dynamic'],\n\t\tthis['excludedMethods']\n\t>;\n}\n\nexport type AnySQLiteAsyncUpdate = SQLiteAsyncUpdateBase<any, any, any, any, any, any, any>;\n\nexport type SQLiteAsyncUpdate<\n\tTTable extends SQLiteTable = SQLiteTable,\n\tTResultType extends 'sync' | 'async' = 'sync' | 'async',\n\tTRunResult = any,\n\tTFrom extends SQLiteTable | Subquery | SQLiteViewBase | SQL | undefined = undefined,\n\tTReturning extends Record<string, unknown> | undefined = Record<string, unknown> | undefined,\n> = SQLiteAsyncUpdateBase<TTable, TResultType, TRunResult, TFrom, TReturning, true, never>;\n\nexport type SQLiteAsyncUpdateBuilder<\n\tTTable extends SQLiteTable,\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n> = SQLiteUpdateBuilder<TTable, TRunResult, SQLiteAsyncUpdateHKT & { resultType: TResultType }>;\n\nexport type SQLiteAsyncUpdateExecute<T extends AnySQLiteAsyncUpdate> = T['_']['returning'] extends undefined\n\t? T['_']['runResult']\n\t: T['_']['returning'][];\n\nexport type SQLiteAsyncUpdatePrepare<T extends AnySQLiteAsyncUpdate> = SQLiteAsyncPreparedQuery<\n\tSQLiteAsyncPreparedQueryConfig & {\n\t\ttype: T['_']['resultType'];\n\t\trun: T['_']['runResult'];\n\t\tall: T['_']['returning'] extends undefined ? DrizzleTypeError<'.all() cannot be used without .returning()'>\n\t\t\t: T['_']['returning'][];\n\t\tget: T['_']['returning'] extends undefined ? DrizzleTypeError<'.get() cannot be used without .returning()'>\n\t\t\t: T['_']['returning'];\n\t\tvalues: T['_']['returning'] extends undefined ? DrizzleTypeError<'.values() cannot be used without .returning()'>\n\t\t\t: any[][];\n\t\texecute: SQLiteAsyncUpdateExecute<T>;\n\t}\n>;\n\nexport interface SQLiteAsyncUpdateBase<\n\t// oxlint-disable-next-line no-unused-vars\n\tTTable extends SQLiteTable = SQLiteTable,\n\t// oxlint-disable-next-line no-unused-vars\n\tTResultType extends 'sync' | 'async' = 'sync' | 'async',\n\tTRunResult = unknown,\n\t// oxlint-disable-next-line no-unused-vars\n\tTFrom extends SQLiteTable | Subquery | SQLiteViewBase | SQL | undefined = undefined,\n\tTReturning = undefined,\n\t// oxlint-disable-next-line no-unused-vars\n\tTDynamic extends boolean = false,\n\t// oxlint-disable-next-line no-unused-vars\n\tTExcludedMethods extends string = never,\n> extends\n\tSQLiteUpdateBase<\n\t\tSQLiteAsyncUpdateHKT & { resultType: TResultType },\n\t\tTTable,\n\t\tTRunResult,\n\t\tTFrom,\n\t\tTReturning,\n\t\tTDynamic,\n\t\tTExcludedMethods\n\t>,\n\tQueryPromise<TReturning extends undefined ? TRunResult : TReturning[]>\n{\n\treadonly _:\n\t\t& SQLiteUpdateBase<\n\t\t\tSQLiteAsyncUpdateHKT & { resultType: TResultType },\n\t\t\tTTable,\n\t\t\tTRunResult,\n\t\t\tTFrom,\n\t\t\tTReturning,\n\t\t\tTDynamic,\n\t\t\tTExcludedMethods\n\t\t>['_']\n\t\t& { readonly resultType: TResultType };\n}\n\nexport class SQLiteAsyncUpdateBase<\n\tTTable extends SQLiteTable = SQLiteTable,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTResultType extends 'sync' | 'async' = 'sync' | 'async',\n\tTRunResult = unknown,\n\tTFrom extends SQLiteTable | Subquery | SQLiteViewBase | SQL | undefined = undefined,\n\tTReturning = undefined,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTDynamic extends boolean = false,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTExcludedMethods extends string = never,\n> extends SQLiteUpdateBase<\n\tSQLiteAsyncUpdateHKT & { resultType: TResultType },\n\tTTable,\n\tTRunResult,\n\tTFrom,\n\tTReturning,\n\tTDynamic,\n\tTExcludedMethods\n> implements RunnableQuery<TReturning extends undefined ? TRunResult : TReturning[], 'sqlite'>, SQLWrapper {\n\tstatic override readonly [entityKind]: string = 'SQLiteAsyncUpdate';\n\n\tdeclare protected session: SQLiteAsyncSession<TResultType, TRunResult, any>;\n\n\t/** @internal */\n\t_prepare(prepare = false): SQLiteAsyncUpdatePrepare<this> {\n\t\treturn this.session.prepareQuery(\n\t\t\tthis.dialect.sqlToQuery(this.getSQL()),\n\t\t\t'arrays',\n\t\t\tprepare,\n\t\t\tthis.config.returning ? 'all' : 'run',\n\t\t\tthis.config.returning ? this.dialect.mapperGenerators.rows(this.config.returning, undefined) : undefined,\n\t\t\t{\n\t\t\t\ttype: 'update',\n\t\t\t\ttables: extractUsedTable(this.config.table),\n\t\t\t},\n\t\t) as SQLiteAsyncUpdatePrepare<this>;\n\t}\n\n\tprepare(): SQLiteAsyncUpdatePrepare<this> {\n\t\treturn this._prepare(true);\n\t}\n\n\trun: ReturnType<this['prepare']>['run'] = (placeholderValues) => {\n\t\treturn this._prepare().run(placeholderValues);\n\t};\n\n\tall: ReturnType<this['prepare']>['all'] = (placeholderValues) => {\n\t\treturn this._prepare().all(placeholderValues);\n\t};\n\n\tget: ReturnType<this['prepare']>['get'] = (placeholderValues) => {\n\t\treturn this._prepare().get(placeholderValues);\n\t};\n\n\tvalues: ReturnType<this['prepare']>['values'] = (placeholderValues) => {\n\t\treturn this._prepare().values(placeholderValues);\n\t};\n\n\tasync execute(): Promise<SQLiteAsyncUpdateExecute<this>> {\n\t\treturn (this.config.returning ? this.all() : this.run()) as SQLiteAsyncUpdateExecute<this>;\n\t}\n}\n\napplyMixins(SQLiteAsyncUpdateBase, [QueryPromise]);\n", "import type { Cache } from '~/cache/core/cache.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { TypedQueryBuilder } from '~/query-builders/query-builder.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { SelectionProxyHandler } from '~/selection-proxy.ts';\nimport { type ColumnsSelection, type SQL, sql, type SQLWrapper } from '~/sql/sql.ts';\nimport { SQLiteAsyncDeleteBase } from '~/sqlite-core/async/delete.ts';\nimport { SQLiteAsyncInsertBase, type SQLiteAsyncInsertBuilder } from '~/sqlite-core/async/insert.ts';\nimport { type DBResult, SQLiteAsyncRaw } from '~/sqlite-core/async/raw.ts';\nimport { SQLiteAsyncSelectBase, type SQLiteAsyncSelectBuilder } from '~/sqlite-core/async/select.ts';\nimport type { Result, SQLiteAsyncSession, SQLiteAsyncTransaction } from '~/sqlite-core/async/session.ts';\nimport { SQLiteAsyncUpdateBase, type SQLiteAsyncUpdateBuilder } from '~/sqlite-core/async/update.ts';\nimport type { SQLiteDialect } from '~/sqlite-core/dialect.ts';\nimport {\n\tQueryBuilder,\n\tSQLiteInsertBuilder,\n\tSQLiteSelectBuilder,\n\tSQLiteUpdateBuilder,\n} from '~/sqlite-core/query-builders/index.ts';\nimport type { SQLiteTransactionConfig } from '~/sqlite-core/session.ts';\nimport type { SQLiteTable } from '~/sqlite-core/table.ts';\nimport { WithSubquery } from '~/subquery.ts';\nimport type { DrizzleTypeError } from '~/utils.ts';\nimport { RelationalQueryBuilder } from '../query-builders/query.ts';\nimport type { SelectedFields } from '../query-builders/select.types.ts';\nimport type { WithBuilder } from '../subquery.ts';\nimport type { SQLiteViewBase } from '../view-base.ts';\nimport { SQLiteAsyncCountBuilder, type SQLiteAsyncCountBuilderKind, SQLiteSyncCountBuilder } from './count.ts';\nimport { SQLiteAsyncRelationalQuery, type SQLiteAsyncRelationalQueryHKT, SQLiteSyncRelationalQuery } from './query.ts';\n\nexport class SQLiteAsyncDatabase<\n\tTResultKind extends 'sync' | 'async',\n\tTRunResult,\n\tTRelations extends AnyRelations = EmptyRelations,\n> {\n\tstatic readonly [entityKind]: string = 'BaseSQLiteDatabase';\n\n\tdeclare readonly _: {\n\t\treadonly relations: TRelations;\n\t\treadonly session: SQLiteAsyncSession<TResultKind, TRunResult, TRelations>;\n\t\treadonly resultKind: TResultKind;\n\t};\n\n\t// TO-DO: Figure out how to pass DrizzleTypeError without breaking withReplicas\n\tquery: {\n\t\t[K in keyof TRelations]: RelationalQueryBuilder<\n\t\t\tTResultKind,\n\t\t\tTRelations,\n\t\t\tTRelations[K],\n\t\t\tSQLiteAsyncRelationalQueryHKT\n\t\t>;\n\t};\n\n\tconstructor(\n\t\tprivate resultKind: TResultKind,\n\t\t/** @internal */\n\t\treadonly dialect: SQLiteDialect,\n\t\t/** @internal */\n\t\treadonly session: SQLiteAsyncSession<TResultKind, TRunResult, TRelations>,\n\t\trelations: TRelations,\n\t\treadonly forbidJsonb?: boolean,\n\t) {\n\t\tthis._ = {\n\t\t\trelations,\n\t\t\tsession,\n\t\t\tresultKind,\n\t\t};\n\t\tthis.query = {} as typeof this['query'];\n\t\tfor (const [tableName, relation] of Object.entries(relations)) {\n\t\t\t(this.query as SQLiteAsyncDatabase<\n\t\t\t\tTResultKind,\n\t\t\t\tTRunResult,\n\t\t\t\tAnyRelations\n\t\t\t>['query'])[tableName] = new RelationalQueryBuilder(\n\t\t\t\tresultKind,\n\t\t\t\trelations,\n\t\t\t\trelations[relation.name]!.table as SQLiteTable,\n\t\t\t\trelation,\n\t\t\t\tdialect,\n\t\t\t\tsession as SQLiteAsyncSession<any, any, any>,\n\t\t\t\tforbidJsonb,\n\t\t\t\tresultKind === 'sync' ? SQLiteSyncRelationalQuery : SQLiteAsyncRelationalQuery,\n\t\t\t);\n\t\t}\n\t\tthis.$cache = { invalidate: async (_params: any) => {} };\n\t}\n\n\t/**\n\t * Creates a subquery that defines a temporary named result set as a CTE.\n\t *\n\t * It is useful for breaking down complex queries into simpler parts and for reusing the result set in subsequent parts of the query.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#with-clause}\n\t *\n\t * @param alias The alias for the subquery.\n\t *\n\t * Failure to provide an alias will result in a DrizzleTypeError, preventing the subquery from being referenced in other queries.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Create a subquery with alias 'sq' and use it in the select query\n\t * const sq = db.$with('sq').as(db.select().from(users).where(eq(users.id, 42)));\n\t *\n\t * const result = await db.with(sq).select().from(sq);\n\t * ```\n\t *\n\t * To select arbitrary SQL values as fields in a CTE and reference them in other CTEs or in the main query, you need to add aliases to them:\n\t *\n\t * ```ts\n\t * // Select an arbitrary SQL value as a field in a CTE and reference it in the main query\n\t * const sq = db.$with('sq').as(db.select({\n\t * name: sql<string>`upper(${users.name})`.as('name'),\n\t * })\n\t * .from(users));\n\t *\n\t * const result = await db.with(sq).select({ name: sq.name }).from(sq);\n\t * ```\n\t */\n\t$with: WithBuilder = (alias: string, selection?: ColumnsSelection) => {\n\t\tconst self = this;\n\t\tconst as = (\n\t\t\tqb:\n\t\t\t\t| TypedQueryBuilder<ColumnsSelection | undefined>\n\t\t\t\t| SQL\n\t\t\t\t| ((qb: QueryBuilder) => TypedQueryBuilder<ColumnsSelection | undefined> | SQL),\n\t\t) => {\n\t\t\tif (typeof qb === 'function') {\n\t\t\t\tqb = qb(new QueryBuilder(self.dialect));\n\t\t\t}\n\n\t\t\treturn new Proxy(\n\t\t\t\tnew WithSubquery(\n\t\t\t\t\tqb.getSQL(),\n\t\t\t\t\tselection ?? ('getSelectedFields' in qb ? qb.getSelectedFields() ?? {} : {}) as SelectedFields,\n\t\t\t\t\talias,\n\t\t\t\t\ttrue,\n\t\t\t\t),\n\t\t\t\tnew SelectionProxyHandler({ alias, sqlAliasedBehavior: 'alias', sqlBehavior: 'error' }),\n\t\t\t);\n\t\t};\n\t\treturn { as };\n\t};\n\n\t$count(\n\t\tsource: SQLiteTable | SQLiteViewBase | SQL | SQLWrapper,\n\t\tfilters?: SQL<unknown>,\n\t): SQLiteAsyncCountBuilderKind<TResultKind> {\n\t\treturn this.resultKind === 'async'\n\t\t\t? new SQLiteAsyncCountBuilder({\n\t\t\t\tsource,\n\t\t\t\tfilters,\n\t\t\t\tsession: this.session,\n\t\t\t\tdialect: this.dialect,\n\t\t\t}) as SQLiteAsyncCountBuilderKind<TResultKind>\n\t\t\t: new SQLiteSyncCountBuilder({\n\t\t\t\tsource,\n\t\t\t\tfilters,\n\t\t\t\tsession: this.session,\n\t\t\t\tdialect: this.dialect,\n\t\t\t});\n\t}\n\n\t/**\n\t * Incorporates a previously defined CTE (using `$with`) into the main query.\n\t *\n\t * This method allows the main query to reference a temporary named result set.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#with-clause}\n\t *\n\t * @param queries The CTEs to incorporate into the main query.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Define a subquery 'sq' as a CTE using $with\n\t * const sq = db.$with('sq').as(db.select().from(users).where(eq(users.id, 42)));\n\t *\n\t * // Incorporate the CTE 'sq' into the main query and select from it\n\t * const result = await db.with(sq).select().from(sq);\n\t * ```\n\t */\n\twith(...queries: WithSubquery[]) {\n\t\tconst self = this;\n\n\t\t/**\n\t\t * Creates a select query.\n\t\t *\n\t\t * Calling this method with no arguments will select all columns from the table. Pass a selection object to specify the columns you want to select.\n\t\t *\n\t\t * Use `.from()` method to specify which table to select from.\n\t\t *\n\t\t * See docs: {@link https://orm.drizzle.team/docs/select}\n\t\t *\n\t\t * @param fields The selection object.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * ```ts\n\t\t * // Select all columns and all rows from the 'cars' table\n\t\t * const allCars: Car[] = await db.select().from(cars);\n\t\t *\n\t\t * // Select specific columns and all rows from the 'cars' table\n\t\t * const carsIdsAndBrands: { id: number; brand: string }[] = await db.select({\n\t\t * id: cars.id,\n\t\t * brand: cars.brand\n\t\t * })\n\t\t * .from(cars);\n\t\t * ```\n\t\t *\n\t\t * Like in SQL, you can use arbitrary expressions as selection fields, not just table columns:\n\t\t *\n\t\t * ```ts\n\t\t * // Select specific columns along with expression and all rows from the 'cars' table\n\t\t * const carsIdsAndLowerNames: { id: number; lowerBrand: string }[] = await db.select({\n\t\t * id: cars.id,\n\t\t * lowerBrand: sql<string>`lower(${cars.brand})`,\n\t\t * })\n\t\t * .from(cars);\n\t\t * ```\n\t\t */\n\t\tfunction select(): SQLiteAsyncSelectBuilder<undefined, TResultKind, TRunResult>;\n\t\tfunction select<TSelection extends SelectedFields>(\n\t\t\tfields: TSelection,\n\t\t): SQLiteAsyncSelectBuilder<TSelection, TResultKind, TRunResult>;\n\t\tfunction select(\n\t\t\tfields?: SelectedFields,\n\t\t): SQLiteAsyncSelectBuilder<SelectedFields | undefined, TResultKind, TRunResult> {\n\t\t\treturn new SQLiteSelectBuilder({\n\t\t\t\tfields: fields ?? undefined,\n\t\t\t\tsession: self.session,\n\t\t\t\tdialect: self.dialect,\n\t\t\t\twithList: queries,\n\t\t\t}, SQLiteAsyncSelectBase);\n\t\t}\n\n\t\t/**\n\t\t * Adds `distinct` expression to the select query.\n\t\t *\n\t\t * Calling this method will return only unique values. When multiple columns are selected, it returns rows with unique combinations of values in these columns.\n\t\t *\n\t\t * Use `.from()` method to specify which table to select from.\n\t\t *\n\t\t * See docs: {@link https://orm.drizzle.team/docs/select#distinct}\n\t\t *\n\t\t * @param fields The selection object.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * ```ts\n\t\t * // Select all unique rows from the 'cars' table\n\t\t * await db.selectDistinct()\n\t\t * .from(cars)\n\t\t * .orderBy(cars.id, cars.brand, cars.color);\n\t\t *\n\t\t * // Select all unique brands from the 'cars' table\n\t\t * await db.selectDistinct({ brand: cars.brand })\n\t\t * .from(cars)\n\t\t * .orderBy(cars.brand);\n\t\t * ```\n\t\t */\n\t\tfunction selectDistinct(): SQLiteAsyncSelectBuilder<undefined, TResultKind, TRunResult>;\n\t\tfunction selectDistinct<TSelection extends SelectedFields>(\n\t\t\tfields: TSelection,\n\t\t): SQLiteAsyncSelectBuilder<TSelection, TResultKind, TRunResult>;\n\t\tfunction selectDistinct(\n\t\t\tfields?: SelectedFields,\n\t\t): SQLiteAsyncSelectBuilder<SelectedFields | undefined, TResultKind, TRunResult> {\n\t\t\treturn new SQLiteSelectBuilder({\n\t\t\t\tfields: fields ?? undefined,\n\t\t\t\tsession: self.session,\n\t\t\t\tdialect: self.dialect,\n\t\t\t\twithList: queries,\n\t\t\t\tdistinct: true,\n\t\t\t}, SQLiteAsyncSelectBase);\n\t\t}\n\n\t\t/**\n\t\t * Creates an update query.\n\t\t *\n\t\t * Calling this method without `.where()` clause will update all rows in a table. The `.where()` clause specifies which rows should be updated.\n\t\t *\n\t\t * Use `.set()` method to specify which values to update.\n\t\t *\n\t\t * See docs: {@link https://orm.drizzle.team/docs/update}\n\t\t *\n\t\t * @param table The table to update.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * ```ts\n\t\t * // Update all rows in the 'cars' table\n\t\t * await db.update(cars).set({ color: 'red' });\n\t\t *\n\t\t * // Update rows with filters and conditions\n\t\t * await db.update(cars).set({ color: 'red' }).where(eq(cars.brand, 'BMW'));\n\t\t *\n\t\t * // Update with returning clause\n\t\t * const updatedCar: Car[] = await db.update(cars)\n\t\t * .set({ color: 'red' })\n\t\t * .where(eq(cars.id, 1))\n\t\t * .returning();\n\t\t * ```\n\t\t */\n\t\tfunction update<TTable extends SQLiteTable>(\n\t\t\ttable: TTable,\n\t\t): SQLiteAsyncUpdateBuilder<TTable, TResultKind, TRunResult> {\n\t\t\treturn new SQLiteUpdateBuilder(table, self.session, self.dialect, queries, SQLiteAsyncUpdateBase);\n\t\t}\n\n\t\t/**\n\t\t * Creates an insert query.\n\t\t *\n\t\t * Calling this method will create new rows in a table. Use `.values()` method to specify which values to insert.\n\t\t *\n\t\t * See docs: {@link https://orm.drizzle.team/docs/insert}\n\t\t *\n\t\t * @param table The table to insert into.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * ```ts\n\t\t * // Insert one row\n\t\t * await db.insert(cars).values({ brand: 'BMW' });\n\t\t *\n\t\t * // Insert multiple rows\n\t\t * await db.insert(cars).values([{ brand: 'BMW' }, { brand: 'Porsche' }]);\n\t\t *\n\t\t * // Insert with returning clause\n\t\t * const insertedCar: Car[] = await db.insert(cars)\n\t\t * .values({ brand: 'BMW' })\n\t\t * .returning();\n\t\t * ```\n\t\t */\n\t\tfunction insert<TTable extends SQLiteTable>(\n\t\t\tinto: TTable,\n\t\t): SQLiteAsyncInsertBuilder<TTable, TResultKind, TRunResult> {\n\t\t\treturn new SQLiteInsertBuilder(into, self.session, self.dialect, queries, SQLiteAsyncInsertBase);\n\t\t}\n\n\t\t/**\n\t\t * Creates a delete query.\n\t\t *\n\t\t * Calling this method without `.where()` clause will delete all rows in a table. The `.where()` clause specifies which rows should be deleted.\n\t\t *\n\t\t * See docs: {@link https://orm.drizzle.team/docs/delete}\n\t\t *\n\t\t * @param table The table to delete from.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * ```ts\n\t\t * // Delete all rows in the 'cars' table\n\t\t * await db.delete(cars);\n\t\t *\n\t\t * // Delete rows with filters and conditions\n\t\t * await db.delete(cars).where(eq(cars.color, 'green'));\n\t\t *\n\t\t * // Delete with returning clause\n\t\t * const deletedCar: Car[] = await db.delete(cars)\n\t\t * .where(eq(cars.id, 1))\n\t\t * .returning();\n\t\t * ```\n\t\t */\n\t\tfunction delete_<TTable extends SQLiteTable>(from: TTable): SQLiteAsyncDeleteBase<TTable, TResultKind, TRunResult> {\n\t\t\treturn new SQLiteAsyncDeleteBase(from, self.session, self.dialect, queries);\n\t\t}\n\n\t\treturn { select, selectDistinct, update, insert, delete: delete_ };\n\t}\n\n\t/**\n\t * Creates a select query.\n\t *\n\t * Calling this method with no arguments will select all columns from the table. Pass a selection object to specify the columns you want to select.\n\t *\n\t * Use `.from()` method to specify which table to select from.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select}\n\t *\n\t * @param fields The selection object.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all columns and all rows from the 'cars' table\n\t * const allCars: Car[] = await db.select().from(cars);\n\t *\n\t * // Select specific columns and all rows from the 'cars' table\n\t * const carsIdsAndBrands: { id: number; brand: string }[] = await db.select({\n\t * id: cars.id,\n\t * brand: cars.brand\n\t * })\n\t * .from(cars);\n\t * ```\n\t *\n\t * Like in SQL, you can use arbitrary expressions as selection fields, not just table columns:\n\t *\n\t * ```ts\n\t * // Select specific columns along with expression and all rows from the 'cars' table\n\t * const carsIdsAndLowerNames: { id: number; lowerBrand: string }[] = await db.select({\n\t * id: cars.id,\n\t * lowerBrand: sql<string>`lower(${cars.brand})`,\n\t * })\n\t * .from(cars);\n\t * ```\n\t */\n\tselect(): SQLiteAsyncSelectBuilder<undefined, TResultKind, TRunResult>;\n\tselect<TSelection extends SelectedFields>(\n\t\tfields: TSelection,\n\t): SQLiteAsyncSelectBuilder<TSelection, TResultKind, TRunResult>;\n\tselect(fields?: SelectedFields): SQLiteAsyncSelectBuilder<SelectedFields | undefined, TResultKind, TRunResult> {\n\t\treturn new SQLiteSelectBuilder(\n\t\t\t{ fields: fields ?? undefined, session: this.session, dialect: this.dialect },\n\t\t\tSQLiteAsyncSelectBase,\n\t\t);\n\t}\n\n\t/**\n\t * Adds `distinct` expression to the select query.\n\t *\n\t * Calling this method will return only unique values. When multiple columns are selected, it returns rows with unique combinations of values in these columns.\n\t *\n\t * Use `.from()` method to specify which table to select from.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/select#distinct}\n\t *\n\t * @param fields The selection object.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Select all unique rows from the 'cars' table\n\t * await db.selectDistinct()\n\t * .from(cars)\n\t * .orderBy(cars.id, cars.brand, cars.color);\n\t *\n\t * // Select all unique brands from the 'cars' table\n\t * await db.selectDistinct({ brand: cars.brand })\n\t * .from(cars)\n\t * .orderBy(cars.brand);\n\t * ```\n\t */\n\tselectDistinct(): SQLiteAsyncSelectBuilder<undefined, TResultKind, TRunResult>;\n\tselectDistinct<TSelection extends SelectedFields>(\n\t\tfields: TSelection,\n\t): SQLiteAsyncSelectBuilder<TSelection, TResultKind, TRunResult>;\n\tselectDistinct(\n\t\tfields?: SelectedFields,\n\t): SQLiteAsyncSelectBuilder<SelectedFields | undefined, TResultKind, TRunResult> {\n\t\treturn new SQLiteSelectBuilder({\n\t\t\tfields: fields ?? undefined,\n\t\t\tsession: this.session,\n\t\t\tdialect: this.dialect,\n\t\t\tdistinct: true,\n\t\t}, SQLiteAsyncSelectBase);\n\t}\n\n\t/**\n\t * Creates an update query.\n\t *\n\t * Calling this method without `.where()` clause will update all rows in a table. The `.where()` clause specifies which rows should be updated.\n\t *\n\t * Use `.set()` method to specify which values to update.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/update}\n\t *\n\t * @param table The table to update.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Update all rows in the 'cars' table\n\t * await db.update(cars).set({ color: 'red' });\n\t *\n\t * // Update rows with filters and conditions\n\t * await db.update(cars).set({ color: 'red' }).where(eq(cars.brand, 'BMW'));\n\t *\n\t * // Update with returning clause\n\t * const updatedCar: Car[] = await db.update(cars)\n\t * .set({ color: 'red' })\n\t * .where(eq(cars.id, 1))\n\t * .returning();\n\t * ```\n\t */\n\tupdate<TTable extends SQLiteTable>(table: TTable): SQLiteAsyncUpdateBuilder<TTable, TResultKind, TRunResult> {\n\t\treturn new SQLiteUpdateBuilder(table, this.session, this.dialect, undefined, SQLiteAsyncUpdateBase);\n\t}\n\n\t$cache: { invalidate: Cache['onMutate'] };\n\n\t/**\n\t * Creates an insert query.\n\t *\n\t * Calling this method will create new rows in a table. Use `.values()` method to specify which values to insert.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/insert}\n\t *\n\t * @param table The table to insert into.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Insert one row\n\t * await db.insert(cars).values({ brand: 'BMW' });\n\t *\n\t * // Insert multiple rows\n\t * await db.insert(cars).values([{ brand: 'BMW' }, { brand: 'Porsche' }]);\n\t *\n\t * // Insert with returning clause\n\t * const insertedCar: Car[] = await db.insert(cars)\n\t * .values({ brand: 'BMW' })\n\t * .returning();\n\t * ```\n\t */\n\tinsert<TTable extends SQLiteTable>(into: TTable): SQLiteAsyncInsertBuilder<TTable, TResultKind, TRunResult> {\n\t\treturn new SQLiteInsertBuilder(into, this.session, this.dialect, undefined, SQLiteAsyncInsertBase);\n\t}\n\n\t/**\n\t * Creates a delete query.\n\t *\n\t * Calling this method without `.where()` clause will delete all rows in a table. The `.where()` clause specifies which rows should be deleted.\n\t *\n\t * See docs: {@link https://orm.drizzle.team/docs/delete}\n\t *\n\t * @param table The table to delete from.\n\t *\n\t * @example\n\t *\n\t * ```ts\n\t * // Delete all rows in the 'cars' table\n\t * await db.delete(cars);\n\t *\n\t * // Delete rows with filters and conditions\n\t * await db.delete(cars).where(eq(cars.color, 'green'));\n\t *\n\t * // Delete with returning clause\n\t * const deletedCar: Car[] = await db.delete(cars)\n\t * .where(eq(cars.id, 1))\n\t * .returning();\n\t * ```\n\t */\n\tdelete<TTable extends SQLiteTable>(from: TTable): SQLiteAsyncDeleteBase<TTable, TResultKind, TRunResult> {\n\t\treturn new SQLiteAsyncDeleteBase(from, this.session, this.dialect);\n\t}\n\n\trun(query: SQLWrapper | string): DBResult<TResultKind, TRunResult> {\n\t\tconst sequel = typeof query === 'string' ? sql.raw(query) : query.getSQL();\n\t\tconst builtQuery = this.dialect.sqlToQuery(sequel);\n\t\tconst prepared = this.session.prepareQuery(builtQuery, 'raw', false, 'run');\n\t\tif (this.resultKind === 'async') {\n\t\t\treturn new SQLiteAsyncRaw(prepared, sequel, builtQuery) as DBResult<TResultKind, TRunResult>;\n\t\t}\n\t\treturn this.session.run(sequel) as DBResult<TResultKind, TRunResult>;\n\t}\n\n\tall<T = unknown>(query: SQLWrapper | string): DBResult<TResultKind, T[]> {\n\t\tconst sequel = typeof query === 'string' ? sql.raw(query) : query.getSQL();\n\t\tconst builtQuery = this.dialect.sqlToQuery(sequel);\n\t\tconst prepared = this.session.prepareQuery(builtQuery, 'objects', false, 'all');\n\t\tif (this.resultKind === 'async') {\n\t\t\treturn new SQLiteAsyncRaw(prepared, sequel, builtQuery) as DBResult<TResultKind, T[]>;\n\t\t}\n\t\treturn this.session.objects(sequel) as DBResult<TResultKind, T[]>;\n\t}\n\n\tget<T = unknown>(query: SQLWrapper | string): DBResult<TResultKind, T> {\n\t\tconst sequel = typeof query === 'string' ? sql.raw(query) : query.getSQL();\n\t\tconst builtQuery = this.dialect.sqlToQuery(sequel);\n\t\tconst prepared = this.session.prepareQuery(builtQuery, 'objects', false, 'get');\n\t\tif (this.resultKind === 'async') {\n\t\t\treturn new SQLiteAsyncRaw(prepared, sequel, builtQuery) as DBResult<TResultKind, T>;\n\t\t}\n\t\treturn this.session.object(sequel) as DBResult<TResultKind, T>;\n\t}\n\n\tvalues<T extends unknown[] = unknown[]>(query: SQLWrapper | string): DBResult<TResultKind, T[]> {\n\t\tconst sequel = typeof query === 'string' ? sql.raw(query) : query.getSQL();\n\t\tconst builtQuery = this.dialect.sqlToQuery(sequel);\n\t\tconst prepared = this.session.prepareQuery(builtQuery, 'objects', false, 'values');\n\t\tif (this.resultKind === 'async') {\n\t\t\treturn new SQLiteAsyncRaw(prepared, sequel, builtQuery) as DBResult<TResultKind, T[]>;\n\t\t}\n\t\treturn this.session.arrays(sequel) as DBResult<TResultKind, T[]>;\n\t}\n\n\ttransaction<T>(\n\t\ttransaction: (\n\t\t\ttx: SQLiteAsyncTransaction<TResultKind, TRunResult, TRelations>,\n\t\t) => TResultKind extends 'sync'\n\t\t\t? T extends Promise<any> ? DrizzleTypeError<\"Sync drivers can't use async functions in transactions!\"> : T\n\t\t\t: Result<TResultKind, T>,\n\t\tconfig?: SQLiteTransactionConfig,\n\t): Result<TResultKind, T> {\n\t\treturn this.session.transaction(\n\t\t\ttransaction as (\n\t\t\t\ttx: SQLiteAsyncTransaction<TResultKind, TRunResult, TRelations>,\n\t\t\t) => Result<TResultKind, T>,\n\t\t\tconfig,\n\t\t);\n\t}\n}\n\nexport type SQLiteWithReplicas<Q> = Q & { $primary: Q; $replicas: Q[] };\n\nexport const withReplicas = <\n\tTResultKind extends 'sync' | 'async',\n\tTRunResult,\n\tTRelations extends AnyRelations,\n\tQ extends SQLiteAsyncDatabase<\n\t\tTResultKind,\n\t\tTRunResult,\n\t\tTRelations\n\t>,\n>(\n\tprimary: Q,\n\treplicas: [Q, ...Q[]],\n\tgetReplica: (replicas: Q[]) => Q = () => replicas[Math.floor(Math.random() * replicas.length)]!,\n): SQLiteWithReplicas<Q> => {\n\tconst select: Q['select'] = (...args: []) => getReplica(replicas).select(...args);\n\tconst selectDistinct: Q['selectDistinct'] = (...args: []) => getReplica(replicas).selectDistinct(...args);\n\tconst $count: Q['$count'] = (...args: [any]) => getReplica(replicas).$count(...args);\n\tconst $with: Q['with'] = (...args: []) => getReplica(replicas).with(...args);\n\n\tconst update: Q['update'] = (...args: [any]) => primary.update(...args);\n\tconst insert: Q['insert'] = (...args: [any]) => primary.insert(...args);\n\tconst $delete: Q['delete'] = (...args: [any]) => primary.delete(...args);\n\tconst run: Q['run'] = (...args: [any]) => primary.run(...args);\n\tconst all: Q['all'] = (...args: [any]) => primary.all(...args);\n\tconst get: Q['get'] = (...args: [any]) => primary.get(...args);\n\tconst values: Q['values'] = (...args: [any]) => primary.values(...args);\n\tconst transaction: Q['transaction'] = (...args: [any]) => primary.transaction(...args);\n\n\treturn {\n\t\t...primary,\n\t\tupdate,\n\t\tinsert,\n\t\tdelete: $delete,\n\t\trun,\n\t\tall,\n\t\tget,\n\t\tvalues,\n\t\ttransaction,\n\t\t$primary: primary,\n\t\t$replicas: replicas,\n\t\tselect,\n\t\tselectDistinct,\n\t\t$count,\n\t\twith: $with,\n\t\tget query() {\n\t\t\treturn getReplica(replicas).query;\n\t\t},\n\t};\n};\n", "import type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport type { Query } from '~/sql/sql.ts';\nimport type { SQLiteDialect } from '~/sqlite-core/dialect.ts';\n\nexport interface PreparedQueryConfig {\n\trun: unknown;\n\tall: unknown;\n\tget: unknown;\n\tvalues: unknown;\n\texecute: unknown;\n}\n\nexport interface SQLiteTransactionConfig {\n\tbehavior?: 'deferred' | 'immediate' | 'exclusive';\n}\n\nexport type SQLiteExecuteMethod = 'run' | 'all' | 'get' | 'values';\n\nexport abstract class SQLitePreparedQuery implements PreparedQuery {\n\tstatic readonly [entityKind]: string = 'SQLiteBasePreparedQuery';\n\n\t/** @internal */\n\treadonly mapper: {\n\t\t(rows: any[]): any;\n\t\tbody?: string;\n\t} | undefined;\n\t/** @internal */\n\treadonly executeMethod: SQLiteExecuteMethod;\n\n\tconstructor(\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprotected query: Query,\n\t\tmapper: ((rows: any[]) => any) | undefined,\n\t\treadonly mode: 'arrays' | 'objects' | 'raw',\n\t) {\n\t\tthis.mapper = mapper;\n\t\tthis.executeMethod = executeMethod;\n\t}\n\n\tgetQuery(): Query {\n\t\treturn this.query;\n\t}\n\n\tabstract run(placeholderValues?: Record<string, unknown>): unknown;\n\tabstract all(placeholderValues?: Record<string, unknown>): unknown;\n\tabstract get(placeholderValues?: Record<string, unknown>): unknown;\n\tabstract values(placeholderValues?: Record<string, unknown>): unknown;\n\tabstract execute(placeholderValues?: Record<string, unknown>): unknown;\n}\n\nexport abstract class SQLiteSession<TRunResult = unknown, TRelations extends AnyRelations = EmptyRelations> {\n\tstatic readonly [entityKind]: string = 'SQLiteSession';\n\n\tdeclare readonly _: {\n\t\treadonly runResult: TRunResult;\n\t\treadonly relations: TRelations;\n\t};\n\n\tconstructor(\n\t\t/** @internal */\n\t\treadonly dialect: SQLiteDialect,\n\t) {}\n\n\tabstract prepareQuery(\n\t\tquery: Query,\n\t\tmode: 'arrays' | 'objects' | 'raw',\n\t\tprepare: boolean,\n\t\texecuteMethod?: SQLiteExecuteMethod,\n\t\tmapper?: (rows: any[]) => any,\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): SQLitePreparedQuery;\n}\n", "import { entityKind } from '~/entity.ts';\nimport type { Table } from '~/table.ts';\nimport type { CacheConfig, WithCacheConfig } from './types.ts';\n\nexport abstract class Cache {\n\tstatic readonly [entityKind]: string = 'Cache';\n\n\tabstract strategy(): 'explicit' | 'all';\n\n\t/**\n\t * Invoked if we should check cache for cached response\n\t * @param sql\n\t * @param tables\n\t */\n\tabstract get(\n\t\tkey: string,\n\t\ttables: string[],\n\t\tisTag: boolean,\n\t\tisAutoInvalidate?: boolean,\n\t): Promise<any[] | undefined>;\n\n\t/**\n\t * Invoked if new query should be inserted to cache\n\t * @param sql\n\t * @param tables\n\t */\n\tabstract put(\n\t\thashedQuery: string,\n\t\tresponse: any,\n\t\ttables: string[],\n\t\tisTag: boolean,\n\t\tconfig?: CacheConfig,\n\t): Promise<void>;\n\n\t/**\n\t * Invoked if insert, update, delete was invoked\n\t * @param tables\n\t */\n\tabstract onMutate(\n\t\tparams: MutationOption,\n\t): Promise<void>;\n}\n\nexport class NoopCache extends Cache {\n\tstatic override readonly [entityKind]: string = 'NoopCache';\n\n\toverride strategy() {\n\t\treturn 'all' as const;\n\t}\n\n\toverride async get(_key: string): Promise<any[] | undefined> {\n\t\treturn undefined;\n\t}\n\toverride async put(\n\t\t_hashedQuery: string,\n\t\t_response: any,\n\t\t_tables: string[],\n\t\t_config?: any,\n\t): Promise<void> {\n\t\t// noop\n\t}\n\toverride async onMutate(_params: MutationOption): Promise<void> {\n\t\t// noop\n\t}\n}\n\n// TODO: one place for all dialects\nexport const strategyFor = async (\n\tquery: string,\n\tparams: any[] | undefined,\n\tqueryMetadata: {\n\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\ttables: string[];\n\t} | undefined,\n\twithCacheConfig?: WithCacheConfig,\n) => {\n\tif (!queryMetadata) return { type: 'skip' as const };\n\n\tconst { type, tables } = queryMetadata;\n\n\tif ((type === 'insert' || type === 'update' || type === 'delete') && tables.length > 0) {\n\t\treturn { type: 'invalidate' as const, tables };\n\t}\n\n\tif (!withCacheConfig) return { type: 'skip' as const };\n\tif (!withCacheConfig.enabled) return { type: 'skip' as const };\n\n\tif (type === 'select') {\n\t\tconst tag = withCacheConfig.tag ?? await hashQuery(query, params);\n\n\t\treturn {\n\t\t\ttype: 'try' as const,\n\t\t\tkey: tag,\n\t\t\tisTag: typeof withCacheConfig.tag !== 'undefined',\n\t\t\tautoInvalidate: withCacheConfig.autoInvalidate,\n\t\t\ttables: queryMetadata.tables,\n\t\t\tconfig: withCacheConfig.config,\n\t\t};\n\t}\n\treturn { type: 'skip' as const };\n};\n\nexport type MutationOption = { tags?: string | string[]; tables?: Table<any> | Table<any>[] | string | string[] };\n\nexport async function hashQuery(sql: string, params?: any[]) {\n\tconst dataToHash = `${sql}-${JSON.stringify(params, (_, v) => typeof v === 'bigint' ? `${v}n` : v)}`;\n\tconst encoder = new TextEncoder();\n\tconst data = encoder.encode(dataToHash);\n\tconst hashBuffer = await crypto.subtle.digest('SHA-256', data);\n\tconst hashArray = [...new Uint8Array(hashBuffer)];\n\tconst hashHex = hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');\n\n\treturn hashHex;\n}\n", "import { type Cache, NoopCache, strategyFor } from '~/cache/core/cache.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport { DrizzleQueryError, TransactionRollbackError } from '~/errors.ts';\nimport type { Logger } from '~/logger.ts';\nimport type { MigrationConfig, MigrationMeta, MigratorInitFailResponse } from '~/migrator.ts';\nimport { getMigrationsToRun } from '~/migrator.utils.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { fillPlaceholders, type Query, type SQL, sql } from '~/sql/sql.ts';\nimport type { SQLiteDialect } from '~/sqlite-core/dialect.ts';\nimport {\n\ttype PreparedQueryConfig as BasePreparedQueryConfig,\n\ttype SQLiteExecuteMethod,\n\tSQLitePreparedQuery,\n\tSQLiteSession,\n\ttype SQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { upgradeAsyncIfNeeded, upgradeSyncIfNeeded } from '~/up-migrations/sqlite.ts';\nimport { assertUnreachable } from '~/utils.ts';\nimport { SQLiteAsyncDatabase } from './db.ts';\n\nexport interface SQLiteAsyncPreparedQueryConfig extends BasePreparedQueryConfig {\n\ttype: 'sync' | 'async';\n}\n\nexport type ExecuteResult<TType extends 'sync' | 'async', TResult> = TType extends 'async' ? Promise<TResult>\n\t: ExecuteResultSync<TResult>;\n\nexport class ExecuteResultSync<T> extends QueryPromise<T> {\n\tstatic override readonly [entityKind]: string = 'ExecuteResultSync';\n\n\tconstructor(private resultCb: () => T) {\n\t\tsuper();\n\t}\n\n\toverride async execute(): Promise<T> {\n\t\treturn this.resultCb();\n\t}\n\n\tsync(): T {\n\t\treturn this.resultCb();\n\t}\n}\n\nexport type SQLiteQueryExecutors<TType extends 'sync' | 'async'> = Record<\n\tSQLiteExecuteMethod,\n\t(params: unknown[]) => Result<TType, any>\n>;\n\nexport type Result<TKind extends 'sync' | 'async', TResult> = TKind extends 'async' ? Promise<TResult> : TResult;\n\nexport class SQLiteAsyncPreparedQuery<T extends SQLiteAsyncPreparedQueryConfig> extends SQLitePreparedQuery {\n\tstatic override readonly [entityKind]: string = 'SQLiteAsyncPreparedQuery';\n\n\tprivate fastPath: boolean;\n\n\tconstructor(\n\t\tprivate resultKind: 'sync' | 'async',\n\t\texecuteMethod: SQLiteExecuteMethod = 'all',\n\t\tprotected executors: SQLiteQueryExecutors<T['type']>,\n\t\tquery: Query,\n\t\tmapper: ((rows: any[]) => any) | undefined,\n\t\tmode: 'arrays' | 'objects' | 'raw',\n\t\tprotected logger: Logger,\n\t\t// cache instance\n\t\tprotected cache: Cache | undefined,\n\t\t// per query related metadata\n\t\tprotected queryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\t// config that was passed through $withCache\n\t\tprotected cacheConfig: WithCacheConfig | undefined,\n\t) {\n\t\tsuper(executeMethod, query, mapper, mode);\n\n\t\t// it means that no $withCache options were passed and it should be just enabled\n\t\tif (cache && cache.strategy() === 'all' && cacheConfig === undefined) {\n\t\t\tthis.cacheConfig = { enabled: true, autoInvalidate: true };\n\t\t}\n\t\tif (!this.cacheConfig?.enabled) {\n\t\t\tthis.cacheConfig = undefined;\n\t\t}\n\n\t\tthis.fastPath = cacheConfig === undefined && (cache === undefined || is(cache, NoopCache));\n\t}\n\n\t/** @internal */\n\tprotected async queryWithCache<T>(\n\t\tqueryString: string,\n\t\tparams: any[],\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tquery: () => Promise<T>,\n\t): Promise<T> {\n\t\tconst cacheStrat = this.cache !== undefined && !is(this.cache, NoopCache)\n\t\t\t? await strategyFor(queryString, params, this.queryMetadata, this.cacheConfig)\n\t\t\t: { type: 'skip' as const };\n\n\t\tif (cacheStrat.type === 'skip') {\n\t\t\treturn query().catch((e) => {\n\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t});\n\t\t}\n\n\t\tconst cache = this.cache!;\n\n\t\t// For mutate queries, we should query the database, wait for a response, and then perform invalidation\n\t\tif (cacheStrat.type === 'invalidate') {\n\t\t\treturn Promise.all([\n\t\t\t\tquery(),\n\t\t\t\tcache.onMutate({ tables: cacheStrat.tables }),\n\t\t\t]).then((res) => res[0]).catch((e) => {\n\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t});\n\t\t}\n\n\t\tif (cacheStrat.type === 'try') {\n\t\t\tconst { tables, key: _key, isTag, autoInvalidate, config } = cacheStrat;\n\t\t\tconst key = `${executeMethod}_${_key}`;\n\n\t\t\tconst fromCache = await cache.get(\n\t\t\t\tkey,\n\t\t\t\ttables,\n\t\t\t\tisTag,\n\t\t\t\tautoInvalidate,\n\t\t\t);\n\n\t\t\tif (fromCache === undefined) {\n\t\t\t\tconst result = await query().catch((e) => {\n\t\t\t\t\tthrow new DrizzleQueryError(queryString, params, e as Error);\n\t\t\t\t});\n\t\t\t\t// put actual key\n\t\t\t\tawait cache.put(\n\t\t\t\t\tkey,\n\t\t\t\t\tresult,\n\t\t\t\t\t// make sure we send tables that were used in a query only if user wants to invalidate it on each write\n\t\t\t\t\tautoInvalidate ? tables : [],\n\t\t\t\t\tisTag,\n\t\t\t\t\tconfig,\n\t\t\t\t);\n\t\t\t\t// put flag if we should invalidate or not\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\treturn fromCache as unknown as T;\n\t\t}\n\n\t\tassertUnreachable(cacheStrat);\n\t}\n\n\toverride run(placeholderValues: Record<string, unknown> = {}): Result<T['type'], T['run']> {\n\t\tconst { query, logger, executors, fastPath, resultKind } = this;\n\t\tconst sql = query._sql ? query._sql.join(' ') : query.sql;\n\t\tconst params = query.params.length === 0\n\t\t\t? query.params\n\t\t\t: fillPlaceholders(query.params, placeholderValues);\n\t\tlogger.logQuery(sql, params);\n\n\t\tif (resultKind === 'sync') {\n\t\t\ttry {\n\t\t\t\treturn (<SQLiteQueryExecutors<'sync'>> executors).run(params);\n\t\t\t} catch (e) {\n\t\t\t\tthrow new DrizzleQueryError(sql, params, e as Error);\n\t\t\t}\n\t\t}\n\n\t\treturn fastPath\n\t\t\t? (<SQLiteQueryExecutors<'async'>> executors).run(params).catch((e) => {\n\t\t\t\tthrow new DrizzleQueryError(sql, params, e as Error);\n\t\t\t})\n\t\t\t: this.queryWithCache(sql, params, 'run', () => (<SQLiteQueryExecutors<'async'>> executors).run(params));\n\t}\n\n\toverride all(placeholderValues: Record<string, unknown> = {}): Result<T['type'], T['all']> {\n\t\tconst { query, logger, executors, mapper, fastPath, resultKind } = this;\n\t\tconst sql = query._sql ? query._sql.join(' ') : query.sql;\n\t\tconst params = query.params.length === 0\n\t\t\t? query.params\n\t\t\t: fillPlaceholders(query.params, placeholderValues);\n\t\tlogger.logQuery(sql, params);\n\n\t\tif (resultKind === 'sync') {\n\t\t\tlet res: any;\n\t\t\ttry {\n\t\t\t\tres = (<SQLiteQueryExecutors<'sync'>> executors).all(params);\n\t\t\t} catch (e) {\n\t\t\t\tthrow new DrizzleQueryError(sql, params, e as Error);\n\t\t\t}\n\n\t\t\tif (!mapper) return res;\n\t\t\treturn mapper(res);\n\t\t}\n\n\t\tconst res = fastPath\n\t\t\t? (<SQLiteQueryExecutors<'async'>> executors).all(params).catch((e) => {\n\t\t\t\tthrow new DrizzleQueryError(sql, params, e as Error);\n\t\t\t})\n\t\t\t: this.queryWithCache(sql, params, 'all', () => (<SQLiteQueryExecutors<'async'>> executors).all(params));\n\t\tif (!mapper) return res;\n\n\t\treturn res.then((rows) => mapper(rows)) as Result<T['type'], T['all']>;\n\t}\n\n\toverride get(placeholderValues: Record<string, unknown> = {}): Result<T['type'], T['get']> {\n\t\tconst { query, logger, executors, mapper, fastPath, resultKind } = this;\n\t\tconst sql = query._sql ? query._sql.join(' ') : query.sql;\n\t\tconst params = query.params.length === 0\n\t\t\t? query.params\n\t\t\t: fillPlaceholders(query.params, placeholderValues);\n\t\tlogger.logQuery(sql, params);\n\n\t\tif (resultKind === 'sync') {\n\t\t\tlet res: any;\n\t\t\ttry {\n\t\t\t\tres = (<SQLiteQueryExecutors<'sync'>> executors).get(params);\n\t\t\t} catch (e) {\n\t\t\t\tthrow new DrizzleQueryError(sql, params, e as Error);\n\t\t\t}\n\n\t\t\tif (!res) return undefined as Result<T['type'], T['get']>;\n\t\t\tif (!mapper) return res;\n\n\t\t\treturn mapper([res])[0];\n\t\t}\n\n\t\tconst res = fastPath\n\t\t\t? (<SQLiteQueryExecutors<'async'>> executors).get(params).catch((e) => {\n\t\t\t\tthrow new DrizzleQueryError(sql, params, e as Error);\n\t\t\t})\n\t\t\t: this.queryWithCache(sql, params, 'get', () => (<SQLiteQueryExecutors<'async'>> executors).get(params));\n\n\t\t// Convert potential nulls from drivers to undefined\n\t\tif (!mapper) return res.then((row) => row ? row : undefined);\n\n\t\treturn res.then((row) => row ? mapper([row])[0] : undefined) as Result<T['type'], T['get']>;\n\t}\n\n\toverride values(placeholderValues: Record<string, unknown> = {}): Result<T['type'], T['values']> {\n\t\tconst { query, logger, executors, fastPath, resultKind } = this;\n\t\tconst sql = query._sql ? query._sql.join(' ') : query.sql;\n\t\tconst params = query.params.length === 0\n\t\t\t? query.params\n\t\t\t: fillPlaceholders(query.params, placeholderValues);\n\t\tlogger.logQuery(sql, params);\n\n\t\tif (resultKind === 'sync') {\n\t\t\ttry {\n\t\t\t\treturn (<SQLiteQueryExecutors<'sync'>> executors).values(params);\n\t\t\t} catch (e) {\n\t\t\t\tthrow new DrizzleQueryError(sql, params, e as Error);\n\t\t\t}\n\t\t}\n\n\t\tconst res = fastPath\n\t\t\t? (<SQLiteQueryExecutors<'async'>> executors).values(params).catch((e) => {\n\t\t\t\tthrow new DrizzleQueryError(sql, params, e as Error);\n\t\t\t})\n\t\t\t: this.queryWithCache(sql, params, 'values', () => (<SQLiteQueryExecutors<'async'>> executors).values(params));\n\n\t\treturn res;\n\t}\n\n\toverride execute(placeholderValues?: Record<string, unknown>): ExecuteResult<T['type'], T['execute']> {\n\t\tif (this.resultKind === 'async') {\n\t\t\treturn this[this.executeMethod](placeholderValues) as ExecuteResult<T['type'], T['execute']>;\n\t\t}\n\t\treturn new ExecuteResultSync(() => this[this.executeMethod](placeholderValues)) as ExecuteResult<\n\t\t\tT['type'],\n\t\t\tT['execute']\n\t\t>;\n\t}\n}\n\nexport abstract class SQLiteAsyncSession<\n\tTResultKind extends 'sync' | 'async',\n\tTRunResult,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends SQLiteSession<TRunResult, TRelations> {\n\tstatic override readonly [entityKind]: string = 'SQLiteAsyncSession';\n\n\tdeclare readonly dialect: SQLiteDialect;\n\n\tconstructor(\n\t\tdialect: SQLiteDialect,\n\t\tprotected resultKind: TResultKind,\n\t) {\n\t\tsuper(dialect);\n\t}\n\n\tabstract override prepareQuery(\n\t\tquery: Query,\n\t\tmode: 'arrays' | 'objects' | 'raw',\n\t\tprepare: boolean,\n\t\texecuteMethod?: SQLiteExecuteMethod,\n\t\tmapper?: (rows: any[]) => any,\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): SQLiteAsyncPreparedQuery<SQLiteAsyncPreparedQueryConfig & { type: TResultKind }>;\n\n\tabstract transaction<T>(\n\t\ttransaction: (\n\t\t\ttx: SQLiteAsyncTransaction<TResultKind, TRunResult, TRelations>,\n\t\t) => Result<TResultKind, T>,\n\t\tconfig?: SQLiteTransactionConfig,\n\t): Result<TResultKind, T>;\n\n\trun(query: SQL): Result<TResultKind, TRunResult> {\n\t\treturn this.prepareQuery(this.dialect.sqlToQuery(query), 'raw', false).run() as Result<\n\t\t\tTResultKind,\n\t\t\tTRunResult\n\t\t>;\n\t}\n\n\tobjects<T = unknown>(query: SQL): Result<TResultKind, T[]> {\n\t\treturn this.prepareQuery(this.dialect.sqlToQuery(query), 'objects', false).all() as Result<\n\t\t\tTResultKind,\n\t\t\tT[]\n\t\t>;\n\t}\n\n\tobject<T = unknown>(query: SQL): Result<TResultKind, T> {\n\t\treturn this.prepareQuery(this.dialect.sqlToQuery(query), 'objects', false).get() as Result<\n\t\t\tTResultKind,\n\t\t\tT\n\t\t>;\n\t}\n\n\tarrays<T extends any[] = unknown[]>(\n\t\tquery: SQL,\n\t): Result<TResultKind, T[]> {\n\t\treturn this.prepareQuery(this.dialect.sqlToQuery(query), 'arrays', false).all() as Result<\n\t\t\tTResultKind,\n\t\t\tT[]\n\t\t>;\n\t}\n\n\tarray<T extends any[] = unknown[]>(\n\t\tquery: SQL,\n\t): Result<TResultKind, T> {\n\t\treturn this.prepareQuery(this.dialect.sqlToQuery(query), 'arrays', false).get() as Result<\n\t\t\tTResultKind,\n\t\t\tT\n\t\t>;\n\t}\n}\n\nexport abstract class SQLiteAsyncTransaction<\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends SQLiteAsyncDatabase<TResultType, TRunResult, TRelations> {\n\tstatic override readonly [entityKind]: string = 'SQLiteAsyncTransaction';\n\n\tconstructor(\n\t\tresultType: TResultType,\n\t\tdialect: SQLiteDialect,\n\t\tsession: SQLiteAsyncSession<TResultType, TRunResult, TRelations>,\n\t\trelations: TRelations,\n\t\tprotected readonly nestedIndex = 0,\n\t\tforbidJsonb?: boolean,\n\t) {\n\t\tsuper(resultType, dialect, session, relations, forbidJsonb);\n\t}\n\n\trollback(): never {\n\t\tthrow new TransactionRollbackError();\n\t}\n}\n\nexport function migrateSync(\n\tmigrations: MigrationMeta[],\n\tsession: SQLiteAsyncSession<'sync', unknown, AnyRelations>,\n\tconfig?: string | Omit<MigrationConfig, 'migrationsFolder'>,\n): void | MigratorInitFailResponse {\n\tconst migrationsTable = config === undefined\n\t\t? '__drizzle_migrations'\n\t\t: typeof config === 'string'\n\t\t? '__drizzle_migrations'\n\t\t: (config.migrationsTable ?? '__drizzle_migrations');\n\n\t// Detect DB version and upgrade table schema if needed\n\tconst { newDb } = upgradeSyncIfNeeded(migrationsTable, session, migrations);\n\n\tif (newDb) {\n\t\tconst migrationTableCreate = sql`\n\t\t\tCREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (\n\t\t\t\tid INTEGER PRIMARY KEY,\n\t\t\t\thash text NOT NULL,\n\t\t\t\tcreated_at numeric,\n\t\t\t\tname text,\n\t\t\t\tapplied_at TEXT\n\t\t\t)`;\n\t\tsession.run(migrationTableCreate);\n\t}\n\n\tconst dbMigrations = session.objects<{\n\t\tid: number;\n\t\thash: string;\n\t\tcreated_at: string;\n\t\tname: string | null;\n\t}>(\n\t\tsql`SELECT id, hash, created_at, name FROM ${sql.identifier(migrationsTable)}`,\n\t);\n\n\tif (typeof config === 'object' && config.init) {\n\t\tif (dbMigrations.length) {\n\t\t\treturn { exitCode: 'databaseMigrations' as const };\n\t\t}\n\n\t\tif (migrations.length > 1) {\n\t\t\treturn { exitCode: 'localMigrations' as const };\n\t\t}\n\n\t\tconst [migration] = migrations;\n\n\t\tif (!migration) return;\n\n\t\tsession.run(\n\t\t\tsql`insert into ${\n\t\t\t\tsql.identifier(migrationsTable)\n\t\t\t} (\"hash\", \"created_at\", \"name\", \"applied_at\") values(${migration.hash}, ${migration.folderMillis}, ${migration.name}, ${\n\t\t\t\tnew Date().toISOString()\n\t\t\t})`,\n\t\t);\n\n\t\treturn;\n\t}\n\n\tconst migrationsToRun = getMigrationsToRun({\n\t\tlocalMigrations: migrations,\n\t\tdbMigrations,\n\t});\n\tsession.run(sql`BEGIN`);\n\n\ttry {\n\t\tfor (const migration of migrationsToRun) {\n\t\t\tfor (const stmt of migration.sql) {\n\t\t\t\tsession.run(sql.raw(stmt));\n\t\t\t}\n\t\t\tsession.run(\n\t\t\t\tsql`INSERT INTO ${\n\t\t\t\t\tsql.identifier(migrationsTable)\n\t\t\t\t} (\"hash\", \"created_at\", \"name\", \"applied_at\") values(${migration.hash}, ${migration.folderMillis}, ${migration.name}, ${\n\t\t\t\t\tnew Date().toISOString()\n\t\t\t\t})`,\n\t\t\t);\n\t\t}\n\n\t\tsession.run(sql`COMMIT`);\n\t} catch (e) {\n\t\tsession.run(sql`ROLLBACK`);\n\t\tthrow e;\n\t}\n}\n\nexport async function migrateAsync(\n\tmigrations: MigrationMeta[],\n\tdb: SQLiteAsyncDatabase<'async', unknown, AnyRelations>,\n\tconfig?: string | Omit<MigrationConfig, 'migrationsFolder'>,\n): Promise<void | MigratorInitFailResponse> {\n\tconst migrationsTable = config === undefined\n\t\t? '__drizzle_migrations'\n\t\t: typeof config === 'string'\n\t\t? '__drizzle_migrations'\n\t\t: (config.migrationsTable ?? '__drizzle_migrations');\n\n\t// Detect DB version and upgrade table schema if needed\n\tconst { newDb } = await upgradeAsyncIfNeeded(\n\t\tmigrationsTable,\n\t\tdb,\n\t\tmigrations,\n\t);\n\n\tif (newDb) {\n\t\tconst migrationTableCreate = sql`\n\t\t\tCREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (\n\t\t\t\tid INTEGER PRIMARY KEY,\n\t\t\t\thash text NOT NULL,\n\t\t\t\tcreated_at numeric,\n\t\t\t\tname text,\n\t\t\t\tapplied_at TEXT\n\t\t\t)\n\t\t`;\n\t\tawait db.session.run(migrationTableCreate);\n\t}\n\n\tconst dbMigrations = await db.session.objects<{\n\t\tid: number;\n\t\thash: string;\n\t\tcreated_at: string;\n\t\tname: string | null;\n\t}>(\n\t\tsql`SELECT id, hash, created_at, name FROM ${sql.identifier(migrationsTable)};`,\n\t);\n\n\tif (typeof config === 'object' && config.init) {\n\t\tif (dbMigrations.length) {\n\t\t\treturn { exitCode: 'databaseMigrations' as const };\n\t\t}\n\n\t\tif (migrations.length > 1) {\n\t\t\treturn { exitCode: 'localMigrations' as const };\n\t\t}\n\n\t\tconst [migration] = migrations;\n\n\t\tif (!migration) return;\n\n\t\tawait db.session.run(\n\t\t\tsql`insert into ${\n\t\t\t\tsql.identifier(migrationsTable)\n\t\t\t} (\"hash\", \"created_at\", \"name\", \"applied_at\") values(${migration.hash}, ${migration.folderMillis}, ${migration.name}, ${\n\t\t\t\tnew Date().toISOString()\n\t\t\t})`,\n\t\t);\n\n\t\treturn;\n\t}\n\n\tconst migrationsToRun = getMigrationsToRun({\n\t\tlocalMigrations: migrations,\n\t\tdbMigrations,\n\t});\n\tawait db.session.transaction(async (tx) => {\n\t\tfor (const migration of migrationsToRun) {\n\t\t\tfor (const stmt of migration.sql) {\n\t\t\t\tawait tx.run(sql.raw(stmt));\n\t\t\t}\n\t\t\tawait tx.run(\n\t\t\t\tsql`insert into ${\n\t\t\t\t\tsql.identifier(migrationsTable)\n\t\t\t\t} (\"hash\", \"created_at\", \"name\", \"applied_at\") values(${migration.hash}, ${migration.folderMillis}, ${migration.name}, ${\n\t\t\t\t\tnew Date().toISOString()\n\t\t\t\t})`,\n\t\t\t);\n\t\t}\n\t});\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["name", "sql", "name", "SQL", "escaped", "param", "placeholder", "name", "sql", "name", "name", "name", "name", "ref", "actions", "result", "name", "index", "name", "name", "name", "name", "name", "sql", "name", "name", "name", "name", "unique", "name", "name", "DrizzleQueryError", "name", "filter", "SelectionProxyHandler", "name", "index", "table", "select", "sql", "isSQLWrapper", "joins", "isSingle", "throughJoin", "SQLiteCountBuilder", "sql", "sql", "sql", "sql", "res"]
|
|
7
7
|
}
|