drizzle-orm 1.0.0-beta.22-41a7d21 → 1.0.0-beta.22-bf0fa46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/bun-sql/sqlite/migrator.cjs +1 -1
  2. package/bun-sql/sqlite/migrator.cjs.map +1 -1
  3. package/bun-sql/sqlite/migrator.js +1 -1
  4. package/bun-sql/sqlite/migrator.js.map +1 -1
  5. package/d1/migrator.cjs +1 -1
  6. package/d1/migrator.cjs.map +1 -1
  7. package/d1/migrator.js +1 -1
  8. package/d1/migrator.js.map +1 -1
  9. package/durable-sqlite/migrator.cjs +1 -1
  10. package/durable-sqlite/migrator.js +1 -1
  11. package/libsql/migrator.cjs +1 -1
  12. package/libsql/migrator.cjs.map +1 -1
  13. package/libsql/migrator.js +1 -1
  14. package/libsql/migrator.js.map +1 -1
  15. package/mysql-proxy/migrator.cjs +2 -2
  16. package/mysql-proxy/migrator.cjs.map +1 -1
  17. package/mysql-proxy/migrator.js +2 -2
  18. package/mysql-proxy/migrator.js.map +1 -1
  19. package/op-sqlite/migrator.cjs +1 -1
  20. package/op-sqlite/migrator.cjs.map +1 -1
  21. package/op-sqlite/migrator.js +1 -1
  22. package/op-sqlite/migrator.js.map +1 -1
  23. package/package.json +67 -13
  24. package/pg-proxy/migrator.cjs +2 -2
  25. package/pg-proxy/migrator.cjs.map +1 -1
  26. package/pg-proxy/migrator.js +2 -2
  27. package/pg-proxy/migrator.js.map +1 -1
  28. package/singlestore-proxy/migrator.cjs +2 -2
  29. package/singlestore-proxy/migrator.cjs.map +1 -1
  30. package/singlestore-proxy/migrator.js +2 -2
  31. package/singlestore-proxy/migrator.js.map +1 -1
  32. package/sqlite-cloud/migrator.cjs +1 -1
  33. package/sqlite-cloud/migrator.cjs.map +1 -1
  34. package/sqlite-cloud/migrator.js +1 -1
  35. package/sqlite-cloud/migrator.js.map +1 -1
  36. package/sqlite-core/dialect.cjs +7 -7
  37. package/sqlite-core/dialect.cjs.map +1 -1
  38. package/sqlite-core/dialect.d.cts +2 -1
  39. package/sqlite-core/dialect.d.ts +2 -1
  40. package/sqlite-core/dialect.js +7 -7
  41. package/sqlite-core/dialect.js.map +1 -1
  42. package/sqlite-proxy/migrator.cjs +40 -2
  43. package/sqlite-proxy/migrator.cjs.map +1 -1
  44. package/sqlite-proxy/migrator.js +39 -2
  45. package/sqlite-proxy/migrator.js.map +1 -1
  46. package/tursodatabase/migrator.cjs +1 -1
  47. package/tursodatabase/migrator.cjs.map +1 -1
  48. package/tursodatabase/migrator.js +1 -1
  49. package/tursodatabase/migrator.js.map +1 -1
  50. package/up-migrations/cockroach.cjs +6 -12
  51. package/up-migrations/cockroach.cjs.map +1 -1
  52. package/up-migrations/cockroach.d.cts +1 -5
  53. package/up-migrations/cockroach.d.ts +1 -5
  54. package/up-migrations/cockroach.js +6 -12
  55. package/up-migrations/cockroach.js.map +1 -1
  56. package/up-migrations/effect-pg.cjs +6 -12
  57. package/up-migrations/effect-pg.cjs.map +1 -1
  58. package/up-migrations/effect-pg.d.cts +1 -5
  59. package/up-migrations/effect-pg.d.ts +1 -5
  60. package/up-migrations/effect-pg.js +6 -12
  61. package/up-migrations/effect-pg.js.map +1 -1
  62. package/up-migrations/mssql.cjs +6 -12
  63. package/up-migrations/mssql.cjs.map +1 -1
  64. package/up-migrations/mssql.d.cts +1 -5
  65. package/up-migrations/mssql.d.ts +1 -5
  66. package/up-migrations/mssql.js +6 -12
  67. package/up-migrations/mssql.js.map +1 -1
  68. package/up-migrations/mysql-proxy.cjs +73 -0
  69. package/up-migrations/mysql-proxy.cjs.map +1 -0
  70. package/up-migrations/mysql-proxy.d.cts +16 -0
  71. package/up-migrations/mysql-proxy.d.ts +16 -0
  72. package/up-migrations/mysql-proxy.js +71 -0
  73. package/up-migrations/mysql-proxy.js.map +1 -0
  74. package/up-migrations/mysql.cjs +12 -28
  75. package/up-migrations/mysql.cjs.map +1 -1
  76. package/up-migrations/mysql.d.cts +1 -5
  77. package/up-migrations/mysql.d.ts +1 -5
  78. package/up-migrations/mysql.js +12 -28
  79. package/up-migrations/mysql.js.map +1 -1
  80. package/up-migrations/pg-proxy.cjs +79 -0
  81. package/up-migrations/pg-proxy.cjs.map +1 -0
  82. package/up-migrations/pg-proxy.d.cts +16 -0
  83. package/up-migrations/pg-proxy.d.ts +16 -0
  84. package/up-migrations/pg-proxy.js +77 -0
  85. package/up-migrations/pg-proxy.js.map +1 -0
  86. package/up-migrations/pg.cjs +9 -13
  87. package/up-migrations/pg.cjs.map +1 -1
  88. package/up-migrations/pg.d.cts +2 -6
  89. package/up-migrations/pg.d.ts +2 -6
  90. package/up-migrations/pg.js +9 -13
  91. package/up-migrations/pg.js.map +1 -1
  92. package/up-migrations/singlestore-proxy.cjs +73 -0
  93. package/up-migrations/singlestore-proxy.cjs.map +1 -0
  94. package/up-migrations/singlestore-proxy.d.cts +16 -0
  95. package/up-migrations/singlestore-proxy.d.ts +16 -0
  96. package/up-migrations/singlestore-proxy.js +71 -0
  97. package/up-migrations/singlestore-proxy.js.map +1 -0
  98. package/up-migrations/singlestore.cjs +9 -25
  99. package/up-migrations/singlestore.cjs.map +1 -1
  100. package/up-migrations/singlestore.d.cts +1 -5
  101. package/up-migrations/singlestore.d.ts +1 -5
  102. package/up-migrations/singlestore.js +9 -25
  103. package/up-migrations/singlestore.js.map +1 -1
  104. package/up-migrations/sqlite-proxy.cjs +80 -0
  105. package/up-migrations/sqlite-proxy.cjs.map +1 -0
  106. package/up-migrations/sqlite-proxy.d.cts +16 -0
  107. package/up-migrations/sqlite-proxy.d.ts +16 -0
  108. package/up-migrations/sqlite-proxy.js +78 -0
  109. package/up-migrations/sqlite-proxy.js.map +1 -0
  110. package/up-migrations/sqlite.cjs +17 -48
  111. package/up-migrations/sqlite.cjs.map +1 -1
  112. package/up-migrations/sqlite.d.cts +3 -10
  113. package/up-migrations/sqlite.d.ts +5 -12
  114. package/up-migrations/sqlite.js +17 -48
  115. package/up-migrations/sqlite.js.map +1 -1
  116. package/up-migrations/utils.cjs +47 -0
  117. package/up-migrations/utils.cjs.map +1 -0
  118. package/up-migrations/utils.d.cts +25 -0
  119. package/up-migrations/utils.d.ts +25 -0
  120. package/up-migrations/utils.js +44 -0
  121. package/up-migrations/utils.js.map +1 -0
  122. package/sqlite-proxy/migrator.internal.cjs +0 -61
  123. package/sqlite-proxy/migrator.internal.cjs.map +0 -1
  124. package/sqlite-proxy/migrator.internal.d.cts +0 -26
  125. package/sqlite-proxy/migrator.internal.d.ts +0 -26
  126. package/sqlite-proxy/migrator.internal.js +0 -59
  127. package/sqlite-proxy/migrator.internal.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"migrator.js","names":[],"sources":["../../src/singlestore-proxy/migrator.ts"],"sourcesContent":["import type { MigrationConfig, MigratorInitFailResponse } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport { getMigrationsToRun } from '~/migrator.utils.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport { sql } from '~/sql/sql.ts';\nimport { upgradeIfNeeded } from '~/up-migrations/singlestore.ts';\nimport type { SingleStoreRemoteDatabase } from './driver.ts';\n\nexport type ProxyMigrator = (migrationQueries: string[]) => Promise<void>;\n\nexport async function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(\n\tdb: SingleStoreRemoteDatabase<TSchema, TRelations>,\n\tcallback: ProxyMigrator,\n\tconfig: MigrationConfig,\n): Promise<void | MigratorInitFailResponse> {\n\tconst migrations = readMigrationFiles(config);\n\n\tconst migrationsTable = config.migrationsTable ?? '__drizzle_migrations';\n\n\t// Detect DB version and upgrade table schema if needed\n\tconst { newDb } = await upgradeIfNeeded(migrationsTable, db.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 SERIAL PRIMARY KEY,\n\t\t\t\thash TEXT NOT NULL,\n\t\t\t\tcreated_at BIGINT,\n\t\t\t\tname TEXT,\n\t\t\t\tapplied_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n\t\t\t)\n\t\t`;\n\t\tawait db.session.execute(migrationTableCreate);\n\t}\n\n\tconst dbMigrations = await db.select({\n\t\tid: sql.raw('id'),\n\t\thash: sql.raw('hash'),\n\t\tcreated_at: sql.raw('created_at'),\n\t\tname: sql.raw('name'),\n\t}).from(sql.identifier(migrationsTable).getSQL()) as {\n\t\tid: number;\n\t\thash: string;\n\t\tcreated_at: string;\n\t\tname: string | null;\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 callback([\n\t\t\tdb.dialect.sqlToQuery(\n\t\t\t\tsql`insert into ${\n\t\t\t\t\tsql.identifier(migrationsTable)\n\t\t\t\t} (\\`hash\\`, \\`created_at\\`, \\`name\\`) values(${migration.hash}, '${migration.folderMillis}', ${migration.name})`\n\t\t\t\t\t.inlineParams(),\n\t\t\t).sql,\n\t\t]);\n\n\t\treturn;\n\t}\n\n\tconst migrationsToRun = getMigrationsToRun({ localMigrations: migrations, dbMigrations });\n\tconst queriesToRun: string[] = [];\n\tfor (const migration of migrationsToRun) {\n\t\tqueriesToRun.push(\n\t\t\t...migration.sql,\n\t\t\tdb.dialect.sqlToQuery(\n\t\t\t\tsql`insert into ${\n\t\t\t\t\tsql.identifier(migrationsTable)\n\t\t\t\t} (\\`hash\\`, \\`created_at\\`, \\`name\\`) values(${migration.hash}, '${migration.folderMillis}', ${migration.name})`\n\t\t\t\t\t.inlineParams(),\n\t\t\t).sql,\n\t\t);\n\t}\n\n\tawait callback(queriesToRun);\n\n\treturn;\n}\n"],"mappings":";;;;;;AAUA,eAAsB,QACrB,IACA,UACA,QAC2C;CAC3C,MAAM,aAAa,mBAAmB,OAAO;CAE7C,MAAM,kBAAkB,OAAO,mBAAmB;CAGlD,MAAM,EAAE,UAAU,MAAM,gBAAgB,iBAAiB,GAAG,SAAS,WAAW;AAEhF,KAAI,OAAO;EACV,MAAM,uBAAuB,GAAG;gCACF,IAAI,WAAW,gBAAgB,CAAC;;;;;;;;AAQ9D,QAAM,GAAG,QAAQ,QAAQ,qBAAqB;;CAG/C,MAAM,eAAe,MAAM,GAAG,OAAO;EACpC,IAAI,IAAI,IAAI,KAAK;EACjB,MAAM,IAAI,IAAI,OAAO;EACrB,YAAY,IAAI,IAAI,aAAa;EACjC,MAAM,IAAI,IAAI,OAAO;EACrB,CAAC,CAAC,KAAK,IAAI,WAAW,gBAAgB,CAAC,QAAQ,CAAC;AAOjD,KAAI,OAAO,WAAW,YAAY,OAAO,MAAM;AAC9C,MAAI,aAAa,OAChB,QAAO,EAAE,UAAU,sBAA+B;AAGnD,MAAI,WAAW,SAAS,EACvB,QAAO,EAAE,UAAU,mBAA4B;EAGhD,MAAM,CAAC,aAAa;AAEpB,MAAI,CAAC,UAAW;AAEhB,QAAM,SAAS,CACd,GAAG,QAAQ,WACV,GAAG,eACF,IAAI,WAAW,gBAAgB,CAC/B,+CAA+C,UAAU,KAAK,KAAK,UAAU,aAAa,KAAK,UAAU,KAAK,GAC7G,cAAc,CAChB,CAAC,IACF,CAAC;AAEF;;CAGD,MAAM,kBAAkB,mBAAmB;EAAE,iBAAiB;EAAY;EAAc,CAAC;CACzF,MAAM,eAAyB,EAAE;AACjC,MAAK,MAAM,aAAa,gBACvB,cAAa,KACZ,GAAG,UAAU,KACb,GAAG,QAAQ,WACV,GAAG,eACF,IAAI,WAAW,gBAAgB,CAC/B,+CAA+C,UAAU,KAAK,KAAK,UAAU,aAAa,KAAK,UAAU,KAAK,GAC7G,cAAc,CAChB,CAAC,IACF;AAGF,OAAM,SAAS,aAAa"}
1
+ {"version":3,"file":"migrator.js","names":[],"sources":["../../src/singlestore-proxy/migrator.ts"],"sourcesContent":["import type { MigrationConfig, MigratorInitFailResponse } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport { getMigrationsToRun } from '~/migrator.utils.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport { sql } from '~/sql/sql.ts';\nimport { upgradeIfNeeded } from '~/up-migrations/singlestore-proxy.ts';\nimport type { SingleStoreRemoteDatabase } from './driver.ts';\n\nexport type ProxyMigrator = (migrationQueries: string[]) => Promise<void>;\n\nexport async function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(\n\tdb: SingleStoreRemoteDatabase<TSchema, TRelations>,\n\tcallback: ProxyMigrator,\n\tconfig: MigrationConfig,\n): Promise<void | MigratorInitFailResponse> {\n\tconst migrations = readMigrationFiles(config);\n\n\tconst migrationsTable = config.migrationsTable ?? '__drizzle_migrations';\n\n\t// Detect DB version and upgrade table schema if needed\n\tconst { newDb } = await upgradeIfNeeded(migrationsTable, db, callback, 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 SERIAL PRIMARY KEY,\n\t\t\t\thash TEXT NOT NULL,\n\t\t\t\tcreated_at BIGINT,\n\t\t\t\tname TEXT,\n\t\t\t\tapplied_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n\t\t\t)\n\t\t`;\n\t\tawait db.session.execute(migrationTableCreate);\n\t}\n\n\tconst dbMigrations = await db.select({\n\t\tid: sql.raw('id'),\n\t\thash: sql.raw('hash'),\n\t\tcreated_at: sql.raw('created_at'),\n\t\tname: sql.raw('name'),\n\t}).from(sql.identifier(migrationsTable).getSQL()) as {\n\t\tid: number;\n\t\thash: string;\n\t\tcreated_at: string;\n\t\tname: string | null;\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 callback([\n\t\t\tdb.dialect.sqlToQuery(\n\t\t\t\tsql`insert into ${\n\t\t\t\t\tsql.identifier(migrationsTable)\n\t\t\t\t} (\\`hash\\`, \\`created_at\\`, \\`name\\`) values(${migration.hash}, '${migration.folderMillis}', ${migration.name})`\n\t\t\t\t\t.inlineParams(),\n\t\t\t).sql,\n\t\t]);\n\n\t\treturn;\n\t}\n\n\tconst migrationsToRun = getMigrationsToRun({ localMigrations: migrations, dbMigrations });\n\tconst queriesToRun: string[] = [];\n\tfor (const migration of migrationsToRun) {\n\t\tqueriesToRun.push(\n\t\t\t...migration.sql,\n\t\t\tdb.dialect.sqlToQuery(\n\t\t\t\tsql`insert into ${\n\t\t\t\t\tsql.identifier(migrationsTable)\n\t\t\t\t} (\\`hash\\`, \\`created_at\\`, \\`name\\`) values(${migration.hash}, '${migration.folderMillis}', ${migration.name})`\n\t\t\t\t\t.inlineParams(),\n\t\t\t).sql,\n\t\t);\n\t}\n\n\tawait callback(queriesToRun);\n\n\treturn;\n}\n"],"mappings":";;;;;;AAUA,eAAsB,QACrB,IACA,UACA,QAC2C;CAC3C,MAAM,aAAa,mBAAmB,OAAO;CAE7C,MAAM,kBAAkB,OAAO,mBAAmB;CAGlD,MAAM,EAAE,UAAU,MAAM,gBAAgB,iBAAiB,IAAI,UAAU,WAAW;AAElF,KAAI,OAAO;EACV,MAAM,uBAAuB,GAAG;gCACF,IAAI,WAAW,gBAAgB,CAAC;;;;;;;;AAQ9D,QAAM,GAAG,QAAQ,QAAQ,qBAAqB;;CAG/C,MAAM,eAAe,MAAM,GAAG,OAAO;EACpC,IAAI,IAAI,IAAI,KAAK;EACjB,MAAM,IAAI,IAAI,OAAO;EACrB,YAAY,IAAI,IAAI,aAAa;EACjC,MAAM,IAAI,IAAI,OAAO;EACrB,CAAC,CAAC,KAAK,IAAI,WAAW,gBAAgB,CAAC,QAAQ,CAAC;AAOjD,KAAI,OAAO,WAAW,YAAY,OAAO,MAAM;AAC9C,MAAI,aAAa,OAChB,QAAO,EAAE,UAAU,sBAA+B;AAGnD,MAAI,WAAW,SAAS,EACvB,QAAO,EAAE,UAAU,mBAA4B;EAGhD,MAAM,CAAC,aAAa;AAEpB,MAAI,CAAC,UAAW;AAEhB,QAAM,SAAS,CACd,GAAG,QAAQ,WACV,GAAG,eACF,IAAI,WAAW,gBAAgB,CAC/B,+CAA+C,UAAU,KAAK,KAAK,UAAU,aAAa,KAAK,UAAU,KAAK,GAC7G,cAAc,CAChB,CAAC,IACF,CAAC;AAEF;;CAGD,MAAM,kBAAkB,mBAAmB;EAAE,iBAAiB;EAAY;EAAc,CAAC;CACzF,MAAM,eAAyB,EAAE;AACjC,MAAK,MAAM,aAAa,gBACvB,cAAa,KACZ,GAAG,UAAU,KACb,GAAG,QAAQ,WACV,GAAG,eACF,IAAI,WAAW,gBAAgB,CAC/B,+CAA+C,UAAU,KAAK,KAAK,UAAU,aAAa,KAAK,UAAU,KAAK,GAC7G,cAAc,CAChB,CAAC,IACF;AAGF,OAAM,SAAS,aAAa"}
@@ -10,7 +10,7 @@ async function migrate(db, config) {
10
10
  const migrations = (0, __migrator_ts.readMigrationFiles)(config);
11
11
  const { session } = db;
12
12
  const migrationsTable = config === void 0 ? "__drizzle_migrations" : typeof config === "string" ? "__drizzle_migrations" : config.migrationsTable ?? "__drizzle_migrations";
13
- const { newDb } = await (0, __up_migrations_sqlite_ts.upgradeAsyncIfNeeded)(migrationsTable, session, migrations);
13
+ const { newDb } = await (0, __up_migrations_sqlite_ts.upgradeAsyncIfNeeded)(migrationsTable, db, migrations);
14
14
  if (newDb) {
15
15
  const migrationTableCreate = __sql_sql_ts.sql`
16
16
  CREATE TABLE IF NOT EXISTS ${__sql_sql_ts.sql.identifier(migrationsTable)} (
@@ -1 +1 @@
1
- {"version":3,"file":"migrator.cjs","names":["sql"],"sources":["../../src/sqlite-cloud/migrator.ts"],"sourcesContent":["import type { MigrationConfig, MigratorInitFailResponse } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport { getMigrationsToRun } from '~/migrator.utils.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport { type SQL, sql } from '~/sql/sql.ts';\nimport { upgradeAsyncIfNeeded } from '~/up-migrations/sqlite.ts';\nimport type { SQLiteCloudDatabase } from './driver.ts';\n\nexport async function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(\n\tdb: SQLiteCloudDatabase<TSchema, TRelations>,\n\tconfig: MigrationConfig,\n): Promise<void | MigratorInitFailResponse> {\n\tconst migrations = readMigrationFiles(config);\n\tconst { session } = db;\n\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(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)\n\t\t`;\n\t\tawait session.run(migrationTableCreate);\n\t}\n\n\tconst dbMigrations = await session.all<{ id: number; hash: string; created_at: string; name: string | null }>(\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 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\t\t.inlineParams(),\n\t\t);\n\n\t\treturn;\n\t}\n\n\tconst migrationsToRun = getMigrationsToRun({ localMigrations: migrations, dbMigrations });\n\tawait session.run(sql`BEGIN TRANSACTION`);\n\ttry {\n\t\tconst stmts = sql.join(\n\t\t\tmigrationsToRun.reduce(\n\t\t\t\t(statements, migration) => {\n\t\t\t\t\tstatements.push(\n\t\t\t\t\t\tsql.raw(migration.sql.join('')),\n\t\t\t\t\t\tsql`INSERT INTO ${\n\t\t\t\t\t\t\tsql.identifier(migrationsTable)\n\t\t\t\t\t\t} (\"hash\", \"created_at\", \"name\", \"applied_at\") values(${migration.hash}, ${migration.folderMillis}, ${migration.name}, ${\n\t\t\t\t\t\t\tnew Date().toISOString()\n\t\t\t\t\t\t});`\n\t\t\t\t\t\t\t.inlineParams(),\n\t\t\t\t\t);\n\n\t\t\t\t\treturn statements;\n\t\t\t\t},\n\t\t\t\t[] as SQL[],\n\t\t\t),\n\t\t);\n\n\t\tawait session.run(stmts);\n\n\t\tawait session.run(sql`COMMIT`);\n\t} catch (error) {\n\t\tawait session.run(sql`ROLLBACK`);\n\t\tthrow error;\n\t}\n}\n"],"mappings":";;;;;;;;AAQA,eAAsB,QACrB,IACA,QAC2C;CAC3C,MAAM,mDAAgC,OAAO;CAC7C,MAAM,EAAE,YAAY;CAEpB,MAAM,kBAAkB,WAAW,SAChC,yBACA,OAAO,WAAW,WAClB,yBACA,OAAO,mBAAmB;CAG7B,MAAM,EAAE,UAAU,0DAA2B,iBAAiB,SAAS,WAAW;AAElF,KAAI,OAAO;EACV,MAAM,uBAAuB,gBAAG;gCACFA,iBAAI,WAAW,gBAAgB,CAAC;;;;;;;;AAQ9D,QAAM,QAAQ,IAAI,qBAAqB;;CAGxC,MAAM,eAAe,MAAM,QAAQ,IAClC,gBAAG,0CAA0CA,iBAAI,WAAW,gBAAgB,GAC5E;AAED,KAAI,OAAO,WAAW,YAAY,OAAO,MAAM;AAC9C,MAAI,aAAa,OAChB,QAAO,EAAE,UAAU,sBAA+B;AAGnD,MAAI,WAAW,SAAS,EACvB,QAAO,EAAE,UAAU,mBAA4B;EAGhD,MAAM,CAAC,aAAa;AAEpB,MAAI,CAAC,UAAW;AAEhB,QAAM,QAAQ,IACb,gBAAG,eACFA,iBAAI,WAAW,gBAAgB,CAC/B,uDAAuD,UAAU,KAAK,IAAI,UAAU,aAAa,IAAI,UAAU,KAAK,qBACpH,IAAI,MAAM,EAAC,aAAa,CACxB,GACC,cAAc,CAChB;AAED;;CAGD,MAAM,8DAAqC;EAAE,iBAAiB;EAAY;EAAc,CAAC;AACzF,OAAM,QAAQ,IAAI,gBAAG,oBAAoB;AACzC,KAAI;EACH,MAAM,QAAQA,iBAAI,KACjB,gBAAgB,QACd,YAAY,cAAc;AAC1B,cAAW,KACVA,iBAAI,IAAI,UAAU,IAAI,KAAK,GAAG,CAAC,EAC/B,gBAAG,eACFA,iBAAI,WAAW,gBAAgB,CAC/B,uDAAuD,UAAU,KAAK,IAAI,UAAU,aAAa,IAAI,UAAU,KAAK,qBACpH,IAAI,MAAM,EAAC,aAAa,CACxB,IACC,cAAc,CAChB;AAED,UAAO;KAER,EAAE,CACF,CACD;AAED,QAAM,QAAQ,IAAI,MAAM;AAExB,QAAM,QAAQ,IAAI,gBAAG,SAAS;UACtB,OAAO;AACf,QAAM,QAAQ,IAAI,gBAAG,WAAW;AAChC,QAAM"}
1
+ {"version":3,"file":"migrator.cjs","names":["sql"],"sources":["../../src/sqlite-cloud/migrator.ts"],"sourcesContent":["import type { MigrationConfig, MigratorInitFailResponse } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport { getMigrationsToRun } from '~/migrator.utils.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport { type SQL, sql } from '~/sql/sql.ts';\nimport { upgradeAsyncIfNeeded } from '~/up-migrations/sqlite.ts';\nimport type { SQLiteCloudDatabase } from './driver.ts';\n\nexport async function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(\n\tdb: SQLiteCloudDatabase<TSchema, TRelations>,\n\tconfig: MigrationConfig,\n): Promise<void | MigratorInitFailResponse> {\n\tconst migrations = readMigrationFiles(config);\n\tconst { session } = db;\n\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(migrationsTable, db, 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)\n\t\t`;\n\t\tawait session.run(migrationTableCreate);\n\t}\n\n\tconst dbMigrations = await session.all<{ id: number; hash: string; created_at: string; name: string | null }>(\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 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\t\t.inlineParams(),\n\t\t);\n\n\t\treturn;\n\t}\n\n\tconst migrationsToRun = getMigrationsToRun({ localMigrations: migrations, dbMigrations });\n\tawait session.run(sql`BEGIN TRANSACTION`);\n\ttry {\n\t\tconst stmts = sql.join(\n\t\t\tmigrationsToRun.reduce(\n\t\t\t\t(statements, migration) => {\n\t\t\t\t\tstatements.push(\n\t\t\t\t\t\tsql.raw(migration.sql.join('')),\n\t\t\t\t\t\tsql`INSERT INTO ${\n\t\t\t\t\t\t\tsql.identifier(migrationsTable)\n\t\t\t\t\t\t} (\"hash\", \"created_at\", \"name\", \"applied_at\") values(${migration.hash}, ${migration.folderMillis}, ${migration.name}, ${\n\t\t\t\t\t\t\tnew Date().toISOString()\n\t\t\t\t\t\t});`\n\t\t\t\t\t\t\t.inlineParams(),\n\t\t\t\t\t);\n\n\t\t\t\t\treturn statements;\n\t\t\t\t},\n\t\t\t\t[] as SQL[],\n\t\t\t),\n\t\t);\n\n\t\tawait session.run(stmts);\n\n\t\tawait session.run(sql`COMMIT`);\n\t} catch (error) {\n\t\tawait session.run(sql`ROLLBACK`);\n\t\tthrow error;\n\t}\n}\n"],"mappings":";;;;;;;;AAQA,eAAsB,QACrB,IACA,QAC2C;CAC3C,MAAM,mDAAgC,OAAO;CAC7C,MAAM,EAAE,YAAY;CAEpB,MAAM,kBAAkB,WAAW,SAChC,yBACA,OAAO,WAAW,WAClB,yBACA,OAAO,mBAAmB;CAG7B,MAAM,EAAE,UAAU,0DAA2B,iBAAiB,IAAI,WAAW;AAE7E,KAAI,OAAO;EACV,MAAM,uBAAuB,gBAAG;gCACFA,iBAAI,WAAW,gBAAgB,CAAC;;;;;;;;AAQ9D,QAAM,QAAQ,IAAI,qBAAqB;;CAGxC,MAAM,eAAe,MAAM,QAAQ,IAClC,gBAAG,0CAA0CA,iBAAI,WAAW,gBAAgB,GAC5E;AAED,KAAI,OAAO,WAAW,YAAY,OAAO,MAAM;AAC9C,MAAI,aAAa,OAChB,QAAO,EAAE,UAAU,sBAA+B;AAGnD,MAAI,WAAW,SAAS,EACvB,QAAO,EAAE,UAAU,mBAA4B;EAGhD,MAAM,CAAC,aAAa;AAEpB,MAAI,CAAC,UAAW;AAEhB,QAAM,QAAQ,IACb,gBAAG,eACFA,iBAAI,WAAW,gBAAgB,CAC/B,uDAAuD,UAAU,KAAK,IAAI,UAAU,aAAa,IAAI,UAAU,KAAK,qBACpH,IAAI,MAAM,EAAC,aAAa,CACxB,GACC,cAAc,CAChB;AAED;;CAGD,MAAM,8DAAqC;EAAE,iBAAiB;EAAY;EAAc,CAAC;AACzF,OAAM,QAAQ,IAAI,gBAAG,oBAAoB;AACzC,KAAI;EACH,MAAM,QAAQA,iBAAI,KACjB,gBAAgB,QACd,YAAY,cAAc;AAC1B,cAAW,KACVA,iBAAI,IAAI,UAAU,IAAI,KAAK,GAAG,CAAC,EAC/B,gBAAG,eACFA,iBAAI,WAAW,gBAAgB,CAC/B,uDAAuD,UAAU,KAAK,IAAI,UAAU,aAAa,IAAI,UAAU,KAAK,qBACpH,IAAI,MAAM,EAAC,aAAa,CACxB,IACC,cAAc,CAChB;AAED,UAAO;KAER,EAAE,CACF,CACD;AAED,QAAM,QAAQ,IAAI,MAAM;AAExB,QAAM,QAAQ,IAAI,gBAAG,SAAS;UACtB,OAAO;AACf,QAAM,QAAQ,IAAI,gBAAG,WAAW;AAChC,QAAM"}
@@ -8,7 +8,7 @@ async function migrate(db, config) {
8
8
  const migrations = readMigrationFiles(config);
9
9
  const { session } = db;
10
10
  const migrationsTable = config === void 0 ? "__drizzle_migrations" : typeof config === "string" ? "__drizzle_migrations" : config.migrationsTable ?? "__drizzle_migrations";
11
- const { newDb } = await upgradeAsyncIfNeeded(migrationsTable, session, migrations);
11
+ const { newDb } = await upgradeAsyncIfNeeded(migrationsTable, db, migrations);
12
12
  if (newDb) {
13
13
  const migrationTableCreate = sql`
14
14
  CREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (
@@ -1 +1 @@
1
- {"version":3,"file":"migrator.js","names":[],"sources":["../../src/sqlite-cloud/migrator.ts"],"sourcesContent":["import type { MigrationConfig, MigratorInitFailResponse } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport { getMigrationsToRun } from '~/migrator.utils.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport { type SQL, sql } from '~/sql/sql.ts';\nimport { upgradeAsyncIfNeeded } from '~/up-migrations/sqlite.ts';\nimport type { SQLiteCloudDatabase } from './driver.ts';\n\nexport async function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(\n\tdb: SQLiteCloudDatabase<TSchema, TRelations>,\n\tconfig: MigrationConfig,\n): Promise<void | MigratorInitFailResponse> {\n\tconst migrations = readMigrationFiles(config);\n\tconst { session } = db;\n\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(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)\n\t\t`;\n\t\tawait session.run(migrationTableCreate);\n\t}\n\n\tconst dbMigrations = await session.all<{ id: number; hash: string; created_at: string; name: string | null }>(\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 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\t\t.inlineParams(),\n\t\t);\n\n\t\treturn;\n\t}\n\n\tconst migrationsToRun = getMigrationsToRun({ localMigrations: migrations, dbMigrations });\n\tawait session.run(sql`BEGIN TRANSACTION`);\n\ttry {\n\t\tconst stmts = sql.join(\n\t\t\tmigrationsToRun.reduce(\n\t\t\t\t(statements, migration) => {\n\t\t\t\t\tstatements.push(\n\t\t\t\t\t\tsql.raw(migration.sql.join('')),\n\t\t\t\t\t\tsql`INSERT INTO ${\n\t\t\t\t\t\t\tsql.identifier(migrationsTable)\n\t\t\t\t\t\t} (\"hash\", \"created_at\", \"name\", \"applied_at\") values(${migration.hash}, ${migration.folderMillis}, ${migration.name}, ${\n\t\t\t\t\t\t\tnew Date().toISOString()\n\t\t\t\t\t\t});`\n\t\t\t\t\t\t\t.inlineParams(),\n\t\t\t\t\t);\n\n\t\t\t\t\treturn statements;\n\t\t\t\t},\n\t\t\t\t[] as SQL[],\n\t\t\t),\n\t\t);\n\n\t\tawait session.run(stmts);\n\n\t\tawait session.run(sql`COMMIT`);\n\t} catch (error) {\n\t\tawait session.run(sql`ROLLBACK`);\n\t\tthrow error;\n\t}\n}\n"],"mappings":";;;;;;AAQA,eAAsB,QACrB,IACA,QAC2C;CAC3C,MAAM,aAAa,mBAAmB,OAAO;CAC7C,MAAM,EAAE,YAAY;CAEpB,MAAM,kBAAkB,WAAW,SAChC,yBACA,OAAO,WAAW,WAClB,yBACA,OAAO,mBAAmB;CAG7B,MAAM,EAAE,UAAU,MAAM,qBAAqB,iBAAiB,SAAS,WAAW;AAElF,KAAI,OAAO;EACV,MAAM,uBAAuB,GAAG;gCACF,IAAI,WAAW,gBAAgB,CAAC;;;;;;;;AAQ9D,QAAM,QAAQ,IAAI,qBAAqB;;CAGxC,MAAM,eAAe,MAAM,QAAQ,IAClC,GAAG,0CAA0C,IAAI,WAAW,gBAAgB,GAC5E;AAED,KAAI,OAAO,WAAW,YAAY,OAAO,MAAM;AAC9C,MAAI,aAAa,OAChB,QAAO,EAAE,UAAU,sBAA+B;AAGnD,MAAI,WAAW,SAAS,EACvB,QAAO,EAAE,UAAU,mBAA4B;EAGhD,MAAM,CAAC,aAAa;AAEpB,MAAI,CAAC,UAAW;AAEhB,QAAM,QAAQ,IACb,GAAG,eACF,IAAI,WAAW,gBAAgB,CAC/B,uDAAuD,UAAU,KAAK,IAAI,UAAU,aAAa,IAAI,UAAU,KAAK,qBACpH,IAAI,MAAM,EAAC,aAAa,CACxB,GACC,cAAc,CAChB;AAED;;CAGD,MAAM,kBAAkB,mBAAmB;EAAE,iBAAiB;EAAY;EAAc,CAAC;AACzF,OAAM,QAAQ,IAAI,GAAG,oBAAoB;AACzC,KAAI;EACH,MAAM,QAAQ,IAAI,KACjB,gBAAgB,QACd,YAAY,cAAc;AAC1B,cAAW,KACV,IAAI,IAAI,UAAU,IAAI,KAAK,GAAG,CAAC,EAC/B,GAAG,eACF,IAAI,WAAW,gBAAgB,CAC/B,uDAAuD,UAAU,KAAK,IAAI,UAAU,aAAa,IAAI,UAAU,KAAK,qBACpH,IAAI,MAAM,EAAC,aAAa,CACxB,IACC,cAAc,CAChB;AAED,UAAO;KAER,EAAE,CACF,CACD;AAED,QAAM,QAAQ,IAAI,MAAM;AAExB,QAAM,QAAQ,IAAI,GAAG,SAAS;UACtB,OAAO;AACf,QAAM,QAAQ,IAAI,GAAG,WAAW;AAChC,QAAM"}
1
+ {"version":3,"file":"migrator.js","names":[],"sources":["../../src/sqlite-cloud/migrator.ts"],"sourcesContent":["import type { MigrationConfig, MigratorInitFailResponse } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport { getMigrationsToRun } from '~/migrator.utils.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport { type SQL, sql } from '~/sql/sql.ts';\nimport { upgradeAsyncIfNeeded } from '~/up-migrations/sqlite.ts';\nimport type { SQLiteCloudDatabase } from './driver.ts';\n\nexport async function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(\n\tdb: SQLiteCloudDatabase<TSchema, TRelations>,\n\tconfig: MigrationConfig,\n): Promise<void | MigratorInitFailResponse> {\n\tconst migrations = readMigrationFiles(config);\n\tconst { session } = db;\n\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(migrationsTable, db, 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)\n\t\t`;\n\t\tawait session.run(migrationTableCreate);\n\t}\n\n\tconst dbMigrations = await session.all<{ id: number; hash: string; created_at: string; name: string | null }>(\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 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\t\t.inlineParams(),\n\t\t);\n\n\t\treturn;\n\t}\n\n\tconst migrationsToRun = getMigrationsToRun({ localMigrations: migrations, dbMigrations });\n\tawait session.run(sql`BEGIN TRANSACTION`);\n\ttry {\n\t\tconst stmts = sql.join(\n\t\t\tmigrationsToRun.reduce(\n\t\t\t\t(statements, migration) => {\n\t\t\t\t\tstatements.push(\n\t\t\t\t\t\tsql.raw(migration.sql.join('')),\n\t\t\t\t\t\tsql`INSERT INTO ${\n\t\t\t\t\t\t\tsql.identifier(migrationsTable)\n\t\t\t\t\t\t} (\"hash\", \"created_at\", \"name\", \"applied_at\") values(${migration.hash}, ${migration.folderMillis}, ${migration.name}, ${\n\t\t\t\t\t\t\tnew Date().toISOString()\n\t\t\t\t\t\t});`\n\t\t\t\t\t\t\t.inlineParams(),\n\t\t\t\t\t);\n\n\t\t\t\t\treturn statements;\n\t\t\t\t},\n\t\t\t\t[] as SQL[],\n\t\t\t),\n\t\t);\n\n\t\tawait session.run(stmts);\n\n\t\tawait session.run(sql`COMMIT`);\n\t} catch (error) {\n\t\tawait session.run(sql`ROLLBACK`);\n\t\tthrow error;\n\t}\n}\n"],"mappings":";;;;;;AAQA,eAAsB,QACrB,IACA,QAC2C;CAC3C,MAAM,aAAa,mBAAmB,OAAO;CAC7C,MAAM,EAAE,YAAY;CAEpB,MAAM,kBAAkB,WAAW,SAChC,yBACA,OAAO,WAAW,WAClB,yBACA,OAAO,mBAAmB;CAG7B,MAAM,EAAE,UAAU,MAAM,qBAAqB,iBAAiB,IAAI,WAAW;AAE7E,KAAI,OAAO;EACV,MAAM,uBAAuB,GAAG;gCACF,IAAI,WAAW,gBAAgB,CAAC;;;;;;;;AAQ9D,QAAM,QAAQ,IAAI,qBAAqB;;CAGxC,MAAM,eAAe,MAAM,QAAQ,IAClC,GAAG,0CAA0C,IAAI,WAAW,gBAAgB,GAC5E;AAED,KAAI,OAAO,WAAW,YAAY,OAAO,MAAM;AAC9C,MAAI,aAAa,OAChB,QAAO,EAAE,UAAU,sBAA+B;AAGnD,MAAI,WAAW,SAAS,EACvB,QAAO,EAAE,UAAU,mBAA4B;EAGhD,MAAM,CAAC,aAAa;AAEpB,MAAI,CAAC,UAAW;AAEhB,QAAM,QAAQ,IACb,GAAG,eACF,IAAI,WAAW,gBAAgB,CAC/B,uDAAuD,UAAU,KAAK,IAAI,UAAU,aAAa,IAAI,UAAU,KAAK,qBACpH,IAAI,MAAM,EAAC,aAAa,CACxB,GACC,cAAc,CAChB;AAED;;CAGD,MAAM,kBAAkB,mBAAmB;EAAE,iBAAiB;EAAY;EAAc,CAAC;AACzF,OAAM,QAAQ,IAAI,GAAG,oBAAoB;AACzC,KAAI;EACH,MAAM,QAAQ,IAAI,KACjB,gBAAgB,QACd,YAAY,cAAc;AAC1B,cAAW,KACV,IAAI,IAAI,UAAU,IAAI,KAAK,GAAG,CAAC,EAC/B,GAAG,eACF,IAAI,WAAW,gBAAgB,CAC/B,uDAAuD,UAAU,KAAK,IAAI,UAAU,aAAa,IAAI,UAAU,KAAK,qBACpH,IAAI,MAAM,EAAC,aAAa,CACxB,IACC,cAAc,CAChB;AAED,UAAO;KAER,EAAE,CACF,CACD;AAED,QAAM,QAAQ,IAAI,MAAM;AAExB,QAAM,QAAQ,IAAI,GAAG,SAAS;UACtB,OAAO;AACf,QAAM,QAAQ,IAAI,GAAG,WAAW;AAChC,QAAM"}
@@ -12,13 +12,13 @@ let ___relations_ts = require("../_relations.cjs");
12
12
  ___relations_ts = require_runtime.__toESM(___relations_ts);
13
13
  let __migrator_utils_ts = require("../migrator.utils.cjs");
14
14
  let __errors_ts = require("../errors.cjs");
15
- let __up_migrations_sqlite_ts = require("../up-migrations/sqlite.cjs");
16
15
  let __relations_ts = require("../relations.cjs");
17
16
  let __alias_ts = require("../alias.cjs");
18
17
  let __casing_ts = require("../casing.cjs");
19
18
  let __sql_index_ts = require("../sql/index.cjs");
20
19
  let __sqlite_core_columns_index_ts = require("./columns/index.cjs");
21
20
  let __sqlite_core_table_ts = require("./table.cjs");
21
+ let __up_migrations_sqlite_ts = require("../up-migrations/sqlite.cjs");
22
22
 
23
23
  //#region src/sqlite-core/dialect.ts
24
24
  var SQLiteDialect = class {
@@ -600,9 +600,9 @@ var SQLiteSyncDialect = class extends SQLiteDialect {
600
600
  };
601
601
  var SQLiteAsyncDialect = class extends SQLiteDialect {
602
602
  static [__entity_ts.entityKind] = "SQLiteAsyncDialect";
603
- async migrate(migrations, session, config) {
603
+ async migrate(migrations, db, config) {
604
604
  const migrationsTable = config === void 0 ? "__drizzle_migrations" : typeof config === "string" ? "__drizzle_migrations" : config.migrationsTable ?? "__drizzle_migrations";
605
- const { newDb } = await (0, __up_migrations_sqlite_ts.upgradeAsyncIfNeeded)(migrationsTable, session, migrations);
605
+ const { newDb } = await (0, __up_migrations_sqlite_ts.upgradeAsyncIfNeeded)(migrationsTable, db, migrations);
606
606
  if (newDb) {
607
607
  const migrationTableCreate = __sql_sql_ts.sql`
608
608
  CREATE TABLE IF NOT EXISTS ${__sql_sql_ts.sql.identifier(migrationsTable)} (
@@ -613,22 +613,22 @@ var SQLiteAsyncDialect = class extends SQLiteDialect {
613
613
  applied_at TEXT
614
614
  )
615
615
  `;
616
- await session.run(migrationTableCreate);
616
+ await db.session.run(migrationTableCreate);
617
617
  }
618
- const dbMigrations = await session.all(__sql_sql_ts.sql`SELECT id, hash, created_at, name FROM ${__sql_sql_ts.sql.identifier(migrationsTable)};`);
618
+ const dbMigrations = await db.session.all(__sql_sql_ts.sql`SELECT id, hash, created_at, name FROM ${__sql_sql_ts.sql.identifier(migrationsTable)};`);
619
619
  if (typeof config === "object" && config.init) {
620
620
  if (dbMigrations.length) return { exitCode: "databaseMigrations" };
621
621
  if (migrations.length > 1) return { exitCode: "localMigrations" };
622
622
  const [migration] = migrations;
623
623
  if (!migration) return;
624
- await session.run(__sql_sql_ts.sql`insert into ${__sql_sql_ts.sql.identifier(migrationsTable)} ("hash", "created_at", "name", "applied_at") values(${migration.hash}, ${migration.folderMillis}, ${migration.name}, ${(/* @__PURE__ */ new Date()).toISOString()})`);
624
+ await db.session.run(__sql_sql_ts.sql`insert into ${__sql_sql_ts.sql.identifier(migrationsTable)} ("hash", "created_at", "name", "applied_at") values(${migration.hash}, ${migration.folderMillis}, ${migration.name}, ${(/* @__PURE__ */ new Date()).toISOString()})`);
625
625
  return;
626
626
  }
627
627
  const migrationsToRun = (0, __migrator_utils_ts.getMigrationsToRun)({
628
628
  localMigrations: migrations,
629
629
  dbMigrations
630
630
  });
631
- await session.transaction(async (tx) => {
631
+ await db.session.transaction(async (tx) => {
632
632
  for (const migration of migrationsToRun) {
633
633
  for (const stmt of migration.sql) await tx.run(__sql_sql_ts.sql.raw(stmt));
634
634
  await tx.run(__sql_sql_ts.sql`insert into ${__sql_sql_ts.sql.identifier(migrationsTable)} ("hash", "created_at", "name", "applied_at") values(${migration.hash}, ${migration.folderMillis}, ${migration.name}, ${(/* @__PURE__ */ new Date()).toISOString()})`);
@@ -1 +1 @@
1
- {"version":3,"file":"dialect.cjs","names":["entityKind","CasingCache","sql","Table","SQL","Column","Subquery","SQLiteTable","View","ViewBaseConfig","SQLiteViewBase","SQLiteColumn","Param","V1","DrizzleError","TableColumns","One"],"sources":["../../src/sqlite-core/dialect.ts"],"sourcesContent":["import * as V1 from '~/_relations.ts';\nimport {\n\taliasedTable,\n\taliasedTableColumn,\n\tgetOriginalColumnFromAlias,\n\tmapColumnsInAliasedSQLToAlias,\n\tmapColumnsInSQLToAlias,\n} from '~/alias.ts';\nimport { CasingCache } from '~/casing.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 { MigrationConfig, MigrationMeta, MigratorInitFailResponse } from '~/migrator.ts';\nimport { getMigrationsToRun } from '~/migrator.utils.ts';\nimport {\n\ttype AnyOne,\n\t// AggregatedField,\n\ttype AnyRelations,\n\ttype BuildRelationalQueryResult,\n\ttype ColumnWithTSName,\n\ttype DBQueryConfig,\n\tgetTableAsAliasSQL,\n\tOne,\n\ttype Relation,\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, eq, isSQLWrapper } from '~/sql/index.ts';\nimport { Param, type QueryWithTypings, 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, getTableUniqueName, Table, TableColumns } from '~/table.ts';\nimport { upgradeAsyncIfNeeded, upgradeSyncIfNeeded } from '~/up-migrations/sqlite.ts';\nimport { type Casing, orderSelectedFields, type UpdateSet } 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 type { SQLiteSession } from './session.ts';\nimport { SQLiteViewBase } from './view-base.ts';\nimport type { SQLiteView } from './view.ts';\n\nexport interface SQLiteDialectConfig {\n\tcasing?: Casing;\n}\n\nexport abstract class SQLiteDialect {\n\tstatic readonly [entityKind]: string = 'SQLiteDialect';\n\n\t/** @internal */\n\treadonly casing: CasingCache;\n\n\tconstructor(config?: SQLiteDialectConfig) {\n\t\tthis.casing = new CasingCache(config?.casing);\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(this.casing.getColumnCasing(col))} = ${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) && field.isSelectionField) {\n\t\t\t\tif (!isSingleTable && field.origin !== undefined) {\n\t\t\t\t\tchunk.push(sql.identifier(field.origin), sql.raw('.'));\n\t\t\t\t}\n\t\t\t\tchunk.push(sql.identifier(field.fieldAlias));\n\t\t\t} else if (is(field, SQL.Aliased) || is(field, SQL)) {\n\t\t\t\tconst query = is(field, SQL.Aliased) ? field.sql : 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(this.casing.getColumnCasing(c));\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\n\t\t\t\tif (is(field, SQL.Aliased)) {\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, Column)) {\n\t\t\t\tif (field.columnType === 'SQLiteNumericBigInt') {\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(${\n\t\t\t\t\t\t\t\t\tsql.identifier(\n\t\t\t\t\t\t\t\t\t\tthis.casing.getColumnCasing(\n\t\t\t\t\t\t\t\t\t\t\tgetOriginalColumnFromAlias(field),\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t} as text) as ${field}`\n\t\t\t\t\t\t\t\t: sql`cast(${sql.identifier(this.casing.getColumnCasing(field))} 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(this.casing.getColumnCasing(getOriginalColumnFromAlias(field)))} as ${field}`\n\t\t\t\t\t\t\t\t: sql.identifier(this.casing.getColumnCasing(field)),\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\tconst entries = Object.entries(field._.selectedFields) as [\n\t\t\t\t\tstring,\n\t\t\t\t\tSQL.Aliased | Column | SQL,\n\t\t\t\t][];\n\n\t\t\t\tif (entries.length === 1) {\n\t\t\t\t\tconst entry = entries[0]![1];\n\n\t\t\t\t\tconst fieldDecoder = is(entry, SQL)\n\t\t\t\t\t\t? entry.decoder\n\t\t\t\t\t\t: is(entry, Column)\n\t\t\t\t\t\t? { mapFromDriverValue: (v: any) => entry.mapFromDriverValue(v) }\n\t\t\t\t\t\t: entry.sql.decoder;\n\t\t\t\t\tif (fieldDecoder) field._.sql.decoder = fieldDecoder;\n\t\t\t\t}\n\t\t\t\tchunk.push(field);\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(\n\t\t\t\t\t\t\t\tthis.casing.getColumnCasing(chunk),\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\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).filter(\n\t\t\t([_, col]) => !col.shouldDisableInsert(),\n\t\t);\n\t\tconst insertOrder = colEntries.map(([, column]) => sql.identifier(this.casing.getColumnCasing(column)));\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 colEntries) {\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): QueryWithTypings {\n\t\treturn sql.toQuery({\n\t\t\tcasing: this.casing,\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\t/** @deprecated */\n\t_buildRelationalQuery({\n\t\tfullSchema,\n\t\tschema,\n\t\ttableNamesMap,\n\t\ttable,\n\t\ttableConfig,\n\t\tqueryConfig: config,\n\t\ttableAlias,\n\t\tnestedQueryRelation,\n\t\tjoinOn,\n\t}: {\n\t\tfullSchema: Record<string, unknown>;\n\t\tschema: V1.TablesRelationalConfig;\n\t\ttableNamesMap: Record<string, string>;\n\t\ttable: SQLiteTable;\n\t\ttableConfig: V1.TableRelationalConfig;\n\t\tqueryConfig: true | V1.DBQueryConfig<'many', true>;\n\t\ttableAlias: string;\n\t\tnestedQueryRelation?: V1.Relation;\n\t\tjoinOn?: SQL;\n\t}): V1.BuildRelationalQueryResult<SQLiteTable, SQLiteColumn> {\n\t\tlet selection: V1.BuildRelationalQueryResult<\n\t\t\tSQLiteTable,\n\t\t\tSQLiteColumn\n\t\t>['selection'] = [];\n\t\tlet limit,\n\t\t\toffset,\n\t\t\torderBy: SQLiteSelectConfig['orderBy'] = [],\n\t\t\twhere;\n\t\tconst joins: SQLiteSelectJoinConfig[] = [];\n\n\t\tif (config === true) {\n\t\t\tconst selectionEntries = Object.entries(tableConfig.columns);\n\t\t\tselection = selectionEntries.map(([key, value]) => ({\n\t\t\t\tdbKey: value.name,\n\t\t\t\ttsKey: key,\n\t\t\t\tfield: aliasedTableColumn(value as SQLiteColumn, tableAlias),\n\t\t\t\trelationTableTsKey: undefined,\n\t\t\t\tisJson: false,\n\t\t\t\tselection: [],\n\t\t\t}));\n\t\t} else {\n\t\t\tconst aliasedColumns = Object.fromEntries(\n\t\t\t\tObject.entries(tableConfig.columns).map(([key, value]) => [\n\t\t\t\t\tkey,\n\t\t\t\t\taliasedTableColumn(value, tableAlias),\n\t\t\t\t]),\n\t\t\t);\n\n\t\t\tif (config.where) {\n\t\t\t\tconst whereSql = typeof config.where === 'function'\n\t\t\t\t\t? config.where(aliasedColumns, V1.getOperators())\n\t\t\t\t\t: config.where;\n\t\t\t\twhere = whereSql && mapColumnsInSQLToAlias(whereSql, tableAlias);\n\t\t\t}\n\n\t\t\tconst fieldsSelection: {\n\t\t\t\ttsKey: string;\n\t\t\t\tvalue: SQLiteColumn | SQL.Aliased;\n\t\t\t}[] = [];\n\t\t\tlet selectedColumns: string[] = [];\n\n\t\t\t// Figure out which columns to select\n\t\t\tif (config.columns) {\n\t\t\t\tlet isIncludeMode = false;\n\n\t\t\t\tfor (const [field, value] of Object.entries(config.columns)) {\n\t\t\t\t\tif (value === undefined) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (field in tableConfig.columns) {\n\t\t\t\t\t\tif (!isIncludeMode && value === true) {\n\t\t\t\t\t\t\tisIncludeMode = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tselectedColumns.push(field);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (selectedColumns.length > 0) {\n\t\t\t\t\tselectedColumns = isIncludeMode\n\t\t\t\t\t\t? selectedColumns.filter((c) => config.columns?.[c] === true)\n\t\t\t\t\t\t: Object.keys(tableConfig.columns).filter(\n\t\t\t\t\t\t\t(key) => !selectedColumns.includes(key),\n\t\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Select all columns if selection is not specified\n\t\t\t\tselectedColumns = Object.keys(tableConfig.columns);\n\t\t\t}\n\n\t\t\tfor (const field of selectedColumns) {\n\t\t\t\tconst column = tableConfig.columns[field]! as SQLiteColumn;\n\t\t\t\tfieldsSelection.push({ tsKey: field, value: column });\n\t\t\t}\n\n\t\t\tlet selectedRelations: {\n\t\t\t\ttsKey: string;\n\t\t\t\tqueryConfig: true | V1.DBQueryConfig<'many', false>;\n\t\t\t\trelation: V1.Relation;\n\t\t\t}[] = [];\n\n\t\t\t// Figure out which relations to select\n\t\t\tif (config.with) {\n\t\t\t\tselectedRelations = Object.entries(config.with)\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tentry,\n\t\t\t\t\t\t): entry is [(typeof entry)[0], NonNullable<(typeof entry)[1]>] => !!entry[1],\n\t\t\t\t\t)\n\t\t\t\t\t.map(([tsKey, queryConfig]) => ({\n\t\t\t\t\t\ttsKey,\n\t\t\t\t\t\tqueryConfig,\n\t\t\t\t\t\trelation: tableConfig.relations[tsKey]!,\n\t\t\t\t\t}));\n\t\t\t}\n\n\t\t\tlet extras;\n\n\t\t\t// Figure out which extras to select\n\t\t\tif (config.extras) {\n\t\t\t\textras = typeof config.extras === 'function'\n\t\t\t\t\t? config.extras(aliasedColumns, { sql })\n\t\t\t\t\t: config.extras;\n\t\t\t\tfor (const [tsKey, value] of Object.entries(extras)) {\n\t\t\t\t\tfieldsSelection.push({\n\t\t\t\t\t\ttsKey,\n\t\t\t\t\t\tvalue: mapColumnsInAliasedSQLToAlias(value, tableAlias),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Transform `fieldsSelection` into `selection`\n\t\t\t// `fieldsSelection` shouldn't be used after this point\n\t\t\tfor (const { tsKey, value } of fieldsSelection) {\n\t\t\t\tselection.push({\n\t\t\t\t\tdbKey: is(value, SQL.Aliased)\n\t\t\t\t\t\t? value.fieldAlias\n\t\t\t\t\t\t: tableConfig.columns[tsKey]!.name,\n\t\t\t\t\ttsKey,\n\t\t\t\t\tfield: is(value, Column)\n\t\t\t\t\t\t? aliasedTableColumn(value, tableAlias)\n\t\t\t\t\t\t: value,\n\t\t\t\t\trelationTableTsKey: undefined,\n\t\t\t\t\tisJson: false,\n\t\t\t\t\tselection: [],\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tlet orderByOrig = typeof config.orderBy === 'function'\n\t\t\t\t? config.orderBy(aliasedColumns, V1.getOrderByOperators())\n\t\t\t\t: (config.orderBy ?? []);\n\t\t\tif (!Array.isArray(orderByOrig)) {\n\t\t\t\torderByOrig = [orderByOrig];\n\t\t\t}\n\t\t\torderBy = orderByOrig.map((orderByValue) => {\n\t\t\t\tif (is(orderByValue, Column)) {\n\t\t\t\t\treturn aliasedTableColumn(orderByValue, tableAlias) as SQLiteColumn;\n\t\t\t\t}\n\t\t\t\treturn mapColumnsInSQLToAlias(orderByValue, tableAlias);\n\t\t\t});\n\n\t\t\tlimit = config.limit;\n\t\t\toffset = config.offset;\n\n\t\t\t// Process all relations\n\t\t\tfor (\n\t\t\t\tconst {\n\t\t\t\t\ttsKey: selectedRelationTsKey,\n\t\t\t\t\tqueryConfig: selectedRelationConfigValue,\n\t\t\t\t\trelation,\n\t\t\t\t} of selectedRelations\n\t\t\t) {\n\t\t\t\tconst normalizedRelation = V1.normalizeRelation(\n\t\t\t\t\tschema,\n\t\t\t\t\ttableNamesMap,\n\t\t\t\t\trelation,\n\t\t\t\t);\n\t\t\t\tconst relationTableName = getTableUniqueName(relation.referencedTable);\n\t\t\t\tconst relationTableTsName = tableNamesMap[relationTableName]!;\n\t\t\t\tconst relationTableAlias = `${tableAlias}_${selectedRelationTsKey}`;\n\t\t\t\t// const relationTable = schema[relationTableTsName]!;\n\t\t\t\tconst joinOn = and(\n\t\t\t\t\t...normalizedRelation.fields.map((field, i) =>\n\t\t\t\t\t\teq(\n\t\t\t\t\t\t\taliasedTableColumn(\n\t\t\t\t\t\t\t\tnormalizedRelation.references[i]!,\n\t\t\t\t\t\t\t\trelationTableAlias,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\taliasedTableColumn(field, tableAlias),\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\tconst builtRelation = this._buildRelationalQuery({\n\t\t\t\t\tfullSchema,\n\t\t\t\t\tschema,\n\t\t\t\t\ttableNamesMap,\n\t\t\t\t\ttable: fullSchema[relationTableTsName] as SQLiteTable,\n\t\t\t\t\ttableConfig: schema[relationTableTsName]!,\n\t\t\t\t\tqueryConfig: is(relation, V1.One)\n\t\t\t\t\t\t? selectedRelationConfigValue === true\n\t\t\t\t\t\t\t? { limit: 1 }\n\t\t\t\t\t\t\t: { ...selectedRelationConfigValue, limit: 1 }\n\t\t\t\t\t\t: selectedRelationConfigValue,\n\t\t\t\t\ttableAlias: relationTableAlias,\n\t\t\t\t\tjoinOn,\n\t\t\t\t\tnestedQueryRelation: relation,\n\t\t\t\t});\n\t\t\t\tconst field = sql`(${builtRelation.sql})`.as(selectedRelationTsKey);\n\t\t\t\tselection.push({\n\t\t\t\t\tdbKey: selectedRelationTsKey,\n\t\t\t\t\ttsKey: selectedRelationTsKey,\n\t\t\t\t\tfield,\n\t\t\t\t\trelationTableTsKey: relationTableTsName,\n\t\t\t\t\tisJson: true,\n\t\t\t\t\tselection: builtRelation.selection,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (selection.length === 0) {\n\t\t\tthrow new DrizzleError({\n\t\t\t\tmessage:\n\t\t\t\t\t`No fields selected for table \"${tableConfig.tsName}\" (\"${tableAlias}\"). You need to have at least one item in \"columns\", \"with\" or \"extras\". If you need to select all columns, omit the \"columns\" key or set it to undefined.`,\n\t\t\t});\n\t\t}\n\n\t\tlet result;\n\n\t\twhere = and(joinOn, where);\n\n\t\tif (nestedQueryRelation) {\n\t\t\tlet field = sql`json_array(${\n\t\t\t\tsql.join(\n\t\t\t\t\tselection.map(({ field }) =>\n\t\t\t\t\t\tis(field, SQLiteColumn)\n\t\t\t\t\t\t\t? sql.identifier(this.casing.getColumnCasing(field))\n\t\t\t\t\t\t\t: is(field, SQL.Aliased)\n\t\t\t\t\t\t\t? field.sql\n\t\t\t\t\t\t\t: field\n\t\t\t\t\t),\n\t\t\t\t\tsql`, `,\n\t\t\t\t)\n\t\t\t})`;\n\t\t\tif (is(nestedQueryRelation, V1.Many)) {\n\t\t\t\tfield = sql`coalesce(json_group_array(${field}), json_array())`;\n\t\t\t}\n\t\t\tconst nestedSelection = [\n\t\t\t\t{\n\t\t\t\t\tdbKey: 'data',\n\t\t\t\t\ttsKey: 'data',\n\t\t\t\t\tfield: field.as('data'),\n\t\t\t\t\tisJson: true,\n\t\t\t\t\trelationTableTsKey: tableConfig.tsName,\n\t\t\t\t\tselection,\n\t\t\t\t},\n\t\t\t];\n\n\t\t\tconst needsSubquery = limit !== undefined || offset !== undefined || orderBy.length > 0;\n\n\t\t\tif (needsSubquery) {\n\t\t\t\tresult = this.buildSelectQuery({\n\t\t\t\t\ttable: aliasedTable(table, tableAlias),\n\t\t\t\t\tfields: {},\n\t\t\t\t\tfieldsFlat: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpath: [],\n\t\t\t\t\t\t\tfield: sql.raw('*'),\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\twhere,\n\t\t\t\t\tlimit,\n\t\t\t\t\toffset,\n\t\t\t\t\torderBy,\n\t\t\t\t\tsetOperators: [],\n\t\t\t\t});\n\n\t\t\t\twhere = undefined;\n\t\t\t\tlimit = undefined;\n\t\t\t\toffset = undefined;\n\t\t\t\torderBy = undefined;\n\t\t\t} else {\n\t\t\t\tresult = aliasedTable(table, tableAlias);\n\t\t\t}\n\n\t\t\tresult = this.buildSelectQuery({\n\t\t\t\ttable: is(result, SQLiteTable)\n\t\t\t\t\t? result\n\t\t\t\t\t: new Subquery(result, {}, tableAlias),\n\t\t\t\tfields: {},\n\t\t\t\tfieldsFlat: nestedSelection.map(({ field }) => ({\n\t\t\t\t\tpath: [],\n\t\t\t\t\tfield: is(field, Column)\n\t\t\t\t\t\t? aliasedTableColumn(field, tableAlias)\n\t\t\t\t\t\t: field,\n\t\t\t\t})),\n\t\t\t\tjoins,\n\t\t\t\twhere,\n\t\t\t\tlimit,\n\t\t\t\toffset,\n\t\t\t\torderBy,\n\t\t\t\tsetOperators: [],\n\t\t\t});\n\t\t} else {\n\t\t\tresult = this.buildSelectQuery({\n\t\t\t\ttable: aliasedTable(table, tableAlias),\n\t\t\t\tfields: {},\n\t\t\t\tfieldsFlat: selection.map(({ field }) => ({\n\t\t\t\t\tpath: [],\n\t\t\t\t\tfield: is(field, Column)\n\t\t\t\t\t\t? aliasedTableColumn(field, tableAlias)\n\t\t\t\t\t\t: field,\n\t\t\t\t})),\n\t\t\t\tjoins,\n\t\t\t\twhere,\n\t\t\t\tlimit,\n\t\t\t\toffset,\n\t\t\t\torderBy,\n\t\t\t\tsetOperators: [],\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\ttableTsKey: tableConfig.tsName,\n\t\t\tsql: result,\n\t\t\tselection,\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) {\n\t\tif (is(column, Column)) {\n\t\t\tconst name = sql`${table}.${sql.identifier(this.casing.getColumnCasing(column))}`;\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\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\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\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) => {\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);\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\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));\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);\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, 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\tthis.casing,\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\tthis.casing,\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\tthis.casing,\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\nexport class SQLiteSyncDialect extends SQLiteDialect {\n\tstatic override readonly [entityKind]: string = 'SQLiteSyncDialect';\n\n\tmigrate(\n\t\tmigrations: MigrationMeta[],\n\t\tsession: SQLiteSession<\n\t\t\t'sync',\n\t\t\tunknown,\n\t\t\tRecord<string, unknown>,\n\t\t\tAnyRelations,\n\t\t\tV1.TablesRelationalConfig\n\t\t>,\n\t\tconfig?: string | Omit<MigrationConfig, 'migrationsFolder'>,\n\t): void | MigratorInitFailResponse {\n\t\tconst migrationsTable = config === undefined\n\t\t\t? '__drizzle_migrations'\n\t\t\t: typeof config === 'string'\n\t\t\t? '__drizzle_migrations'\n\t\t\t: (config.migrationsTable ?? '__drizzle_migrations');\n\n\t\t// Detect DB version and upgrade table schema if needed\n\t\tconst { newDb } = upgradeSyncIfNeeded(migrationsTable, session, migrations);\n\n\t\tif (newDb) {\n\t\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\tsession.run(migrationTableCreate);\n\t\t}\n\n\t\tconst dbMigrations = session.all<{\n\t\t\tid: number;\n\t\t\thash: string;\n\t\t\tcreated_at: string;\n\t\t\tname: string | null;\n\t\t}>(\n\t\t\tsql`SELECT id, hash, created_at, name FROM ${sql.identifier(migrationsTable)}`,\n\t\t);\n\n\t\tif (typeof config === 'object' && config.init) {\n\t\t\tif (dbMigrations.length) {\n\t\t\t\treturn { exitCode: 'databaseMigrations' as const };\n\t\t\t}\n\n\t\t\tif (migrations.length > 1) {\n\t\t\t\treturn { exitCode: 'localMigrations' as const };\n\t\t\t}\n\n\t\t\tconst [migration] = migrations;\n\n\t\t\tif (!migration) return;\n\n\t\t\tsession.run(\n\t\t\t\tsql`insert into ${\n\t\t\t\t\tsql.identifier(\n\t\t\t\t\t\tmigrationsTable,\n\t\t\t\t\t)\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\n\t\t\treturn;\n\t\t}\n\n\t\tconst migrationsToRun = getMigrationsToRun({\n\t\t\tlocalMigrations: migrations,\n\t\t\tdbMigrations,\n\t\t});\n\t\tsession.run(sql`BEGIN`);\n\n\t\ttry {\n\t\t\tfor (const migration of migrationsToRun) {\n\t\t\t\tfor (const stmt of migration.sql) {\n\t\t\t\t\tsession.run(sql.raw(stmt));\n\t\t\t\t}\n\t\t\t\tsession.run(\n\t\t\t\t\tsql`INSERT INTO ${\n\t\t\t\t\t\tsql.identifier(\n\t\t\t\t\t\t\tmigrationsTable,\n\t\t\t\t\t\t)\n\t\t\t\t\t} (\"hash\", \"created_at\", \"name\", \"applied_at\") values(${migration.hash}, ${migration.folderMillis}, ${migration.name}, ${\n\t\t\t\t\t\tnew Date().toISOString()\n\t\t\t\t\t})`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tsession.run(sql`COMMIT`);\n\t\t} catch (e) {\n\t\t\tsession.run(sql`ROLLBACK`);\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport class SQLiteAsyncDialect extends SQLiteDialect {\n\tstatic override readonly [entityKind]: string = 'SQLiteAsyncDialect';\n\n\tasync migrate(\n\t\tmigrations: MigrationMeta[],\n\t\tsession: SQLiteSession<\n\t\t\t'async',\n\t\t\tunknown,\n\t\t\tRecord<string, unknown>,\n\t\t\tAnyRelations,\n\t\t\tV1.TablesRelationalConfig\n\t\t>,\n\t\tconfig?: string | Omit<MigrationConfig, 'migrationsFolder'>,\n\t): Promise<void | MigratorInitFailResponse> {\n\t\tconst migrationsTable = config === undefined\n\t\t\t? '__drizzle_migrations'\n\t\t\t: typeof config === 'string'\n\t\t\t? '__drizzle_migrations'\n\t\t\t: (config.migrationsTable ?? '__drizzle_migrations');\n\n\t\t// Detect DB version and upgrade table schema if needed\n\t\tconst { newDb } = await upgradeAsyncIfNeeded(\n\t\t\tmigrationsTable,\n\t\t\tsession,\n\t\t\tmigrations,\n\t\t);\n\n\t\tif (newDb) {\n\t\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)\n\t\t`;\n\t\t\tawait session.run(migrationTableCreate);\n\t\t}\n\n\t\tconst dbMigrations = await session.all<{\n\t\t\tid: number;\n\t\t\thash: string;\n\t\t\tcreated_at: string;\n\t\t\tname: string | null;\n\t\t}>(\n\t\t\tsql`SELECT id, hash, created_at, name FROM ${sql.identifier(migrationsTable)};`,\n\t\t);\n\n\t\tif (typeof config === 'object' && config.init) {\n\t\t\tif (dbMigrations.length) {\n\t\t\t\treturn { exitCode: 'databaseMigrations' as const };\n\t\t\t}\n\n\t\t\tif (migrations.length > 1) {\n\t\t\t\treturn { exitCode: 'localMigrations' as const };\n\t\t\t}\n\n\t\t\tconst [migration] = migrations;\n\n\t\t\tif (!migration) return;\n\n\t\t\tawait session.run(\n\t\t\t\tsql`insert into ${\n\t\t\t\t\tsql.identifier(\n\t\t\t\t\t\tmigrationsTable,\n\t\t\t\t\t)\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\n\t\t\treturn;\n\t\t}\n\n\t\tconst migrationsToRun = getMigrationsToRun({\n\t\t\tlocalMigrations: migrations,\n\t\t\tdbMigrations,\n\t\t});\n\t\tawait session.transaction(async (tx) => {\n\t\t\tfor (const migration of migrationsToRun) {\n\t\t\t\tfor (const stmt of migration.sql) {\n\t\t\t\t\tawait tx.run(sql.raw(stmt));\n\t\t\t\t}\n\t\t\t\tawait tx.run(\n\t\t\t\t\tsql`insert into ${\n\t\t\t\t\t\tsql.identifier(\n\t\t\t\t\t\t\tmigrationsTable,\n\t\t\t\t\t\t)\n\t\t\t\t\t} (\"hash\", \"created_at\", \"name\", \"applied_at\") values(${migration.hash}, ${migration.folderMillis}, ${migration.name}, ${\n\t\t\t\t\t\tnew Date().toISOString()\n\t\t\t\t\t})`,\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"dialect.cjs","names":["entityKind","CasingCache","sql","Table","SQL","Column","Subquery","SQLiteTable","View","ViewBaseConfig","SQLiteViewBase","SQLiteColumn","Param","V1","DrizzleError","TableColumns","One"],"sources":["../../src/sqlite-core/dialect.ts"],"sourcesContent":["import * as V1 from '~/_relations.ts';\nimport {\n\taliasedTable,\n\taliasedTableColumn,\n\tgetOriginalColumnFromAlias,\n\tmapColumnsInAliasedSQLToAlias,\n\tmapColumnsInSQLToAlias,\n} from '~/alias.ts';\nimport { CasingCache } from '~/casing.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 { MigrationConfig, MigrationMeta, MigratorInitFailResponse } from '~/migrator.ts';\nimport { getMigrationsToRun } from '~/migrator.utils.ts';\nimport {\n\ttype AnyOne,\n\t// AggregatedField,\n\ttype AnyRelations,\n\ttype BuildRelationalQueryResult,\n\ttype ColumnWithTSName,\n\ttype DBQueryConfig,\n\tgetTableAsAliasSQL,\n\tOne,\n\ttype Relation,\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, eq, isSQLWrapper } from '~/sql/index.ts';\nimport { Param, type QueryWithTypings, 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, getTableUniqueName, Table, TableColumns } from '~/table.ts';\nimport { upgradeAsyncIfNeeded, upgradeSyncIfNeeded } from '~/up-migrations/sqlite.ts';\nimport { type Casing, orderSelectedFields, type UpdateSet } from '~/utils.ts';\nimport { ViewBaseConfig } from '~/view-common.ts';\nimport type { BaseSQLiteDatabase } from './db.ts';\nimport type {\n\tSelectedFieldsOrdered,\n\tSQLiteSelectConfig,\n\tSQLiteSelectJoinConfig,\n} from './query-builders/select.types.ts';\nimport type { SQLiteSession } from './session.ts';\nimport { SQLiteViewBase } from './view-base.ts';\nimport type { SQLiteView } from './view.ts';\n\nexport interface SQLiteDialectConfig {\n\tcasing?: Casing;\n}\n\nexport abstract class SQLiteDialect {\n\tstatic readonly [entityKind]: string = 'SQLiteDialect';\n\n\t/** @internal */\n\treadonly casing: CasingCache;\n\n\tconstructor(config?: SQLiteDialectConfig) {\n\t\tthis.casing = new CasingCache(config?.casing);\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(this.casing.getColumnCasing(col))} = ${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) && field.isSelectionField) {\n\t\t\t\tif (!isSingleTable && field.origin !== undefined) {\n\t\t\t\t\tchunk.push(sql.identifier(field.origin), sql.raw('.'));\n\t\t\t\t}\n\t\t\t\tchunk.push(sql.identifier(field.fieldAlias));\n\t\t\t} else if (is(field, SQL.Aliased) || is(field, SQL)) {\n\t\t\t\tconst query = is(field, SQL.Aliased) ? field.sql : 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(this.casing.getColumnCasing(c));\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\n\t\t\t\tif (is(field, SQL.Aliased)) {\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, Column)) {\n\t\t\t\tif (field.columnType === 'SQLiteNumericBigInt') {\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(${\n\t\t\t\t\t\t\t\t\tsql.identifier(\n\t\t\t\t\t\t\t\t\t\tthis.casing.getColumnCasing(\n\t\t\t\t\t\t\t\t\t\t\tgetOriginalColumnFromAlias(field),\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t} as text) as ${field}`\n\t\t\t\t\t\t\t\t: sql`cast(${sql.identifier(this.casing.getColumnCasing(field))} 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(this.casing.getColumnCasing(getOriginalColumnFromAlias(field)))} as ${field}`\n\t\t\t\t\t\t\t\t: sql.identifier(this.casing.getColumnCasing(field)),\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\tconst entries = Object.entries(field._.selectedFields) as [\n\t\t\t\t\tstring,\n\t\t\t\t\tSQL.Aliased | Column | SQL,\n\t\t\t\t][];\n\n\t\t\t\tif (entries.length === 1) {\n\t\t\t\t\tconst entry = entries[0]![1];\n\n\t\t\t\t\tconst fieldDecoder = is(entry, SQL)\n\t\t\t\t\t\t? entry.decoder\n\t\t\t\t\t\t: is(entry, Column)\n\t\t\t\t\t\t? { mapFromDriverValue: (v: any) => entry.mapFromDriverValue(v) }\n\t\t\t\t\t\t: entry.sql.decoder;\n\t\t\t\t\tif (fieldDecoder) field._.sql.decoder = fieldDecoder;\n\t\t\t\t}\n\t\t\t\tchunk.push(field);\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(\n\t\t\t\t\t\t\t\tthis.casing.getColumnCasing(chunk),\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\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).filter(\n\t\t\t([_, col]) => !col.shouldDisableInsert(),\n\t\t);\n\t\tconst insertOrder = colEntries.map(([, column]) => sql.identifier(this.casing.getColumnCasing(column)));\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 colEntries) {\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): QueryWithTypings {\n\t\treturn sql.toQuery({\n\t\t\tcasing: this.casing,\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\t/** @deprecated */\n\t_buildRelationalQuery({\n\t\tfullSchema,\n\t\tschema,\n\t\ttableNamesMap,\n\t\ttable,\n\t\ttableConfig,\n\t\tqueryConfig: config,\n\t\ttableAlias,\n\t\tnestedQueryRelation,\n\t\tjoinOn,\n\t}: {\n\t\tfullSchema: Record<string, unknown>;\n\t\tschema: V1.TablesRelationalConfig;\n\t\ttableNamesMap: Record<string, string>;\n\t\ttable: SQLiteTable;\n\t\ttableConfig: V1.TableRelationalConfig;\n\t\tqueryConfig: true | V1.DBQueryConfig<'many', true>;\n\t\ttableAlias: string;\n\t\tnestedQueryRelation?: V1.Relation;\n\t\tjoinOn?: SQL;\n\t}): V1.BuildRelationalQueryResult<SQLiteTable, SQLiteColumn> {\n\t\tlet selection: V1.BuildRelationalQueryResult<\n\t\t\tSQLiteTable,\n\t\t\tSQLiteColumn\n\t\t>['selection'] = [];\n\t\tlet limit,\n\t\t\toffset,\n\t\t\torderBy: SQLiteSelectConfig['orderBy'] = [],\n\t\t\twhere;\n\t\tconst joins: SQLiteSelectJoinConfig[] = [];\n\n\t\tif (config === true) {\n\t\t\tconst selectionEntries = Object.entries(tableConfig.columns);\n\t\t\tselection = selectionEntries.map(([key, value]) => ({\n\t\t\t\tdbKey: value.name,\n\t\t\t\ttsKey: key,\n\t\t\t\tfield: aliasedTableColumn(value as SQLiteColumn, tableAlias),\n\t\t\t\trelationTableTsKey: undefined,\n\t\t\t\tisJson: false,\n\t\t\t\tselection: [],\n\t\t\t}));\n\t\t} else {\n\t\t\tconst aliasedColumns = Object.fromEntries(\n\t\t\t\tObject.entries(tableConfig.columns).map(([key, value]) => [\n\t\t\t\t\tkey,\n\t\t\t\t\taliasedTableColumn(value, tableAlias),\n\t\t\t\t]),\n\t\t\t);\n\n\t\t\tif (config.where) {\n\t\t\t\tconst whereSql = typeof config.where === 'function'\n\t\t\t\t\t? config.where(aliasedColumns, V1.getOperators())\n\t\t\t\t\t: config.where;\n\t\t\t\twhere = whereSql && mapColumnsInSQLToAlias(whereSql, tableAlias);\n\t\t\t}\n\n\t\t\tconst fieldsSelection: {\n\t\t\t\ttsKey: string;\n\t\t\t\tvalue: SQLiteColumn | SQL.Aliased;\n\t\t\t}[] = [];\n\t\t\tlet selectedColumns: string[] = [];\n\n\t\t\t// Figure out which columns to select\n\t\t\tif (config.columns) {\n\t\t\t\tlet isIncludeMode = false;\n\n\t\t\t\tfor (const [field, value] of Object.entries(config.columns)) {\n\t\t\t\t\tif (value === undefined) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (field in tableConfig.columns) {\n\t\t\t\t\t\tif (!isIncludeMode && value === true) {\n\t\t\t\t\t\t\tisIncludeMode = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tselectedColumns.push(field);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (selectedColumns.length > 0) {\n\t\t\t\t\tselectedColumns = isIncludeMode\n\t\t\t\t\t\t? selectedColumns.filter((c) => config.columns?.[c] === true)\n\t\t\t\t\t\t: Object.keys(tableConfig.columns).filter(\n\t\t\t\t\t\t\t(key) => !selectedColumns.includes(key),\n\t\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Select all columns if selection is not specified\n\t\t\t\tselectedColumns = Object.keys(tableConfig.columns);\n\t\t\t}\n\n\t\t\tfor (const field of selectedColumns) {\n\t\t\t\tconst column = tableConfig.columns[field]! as SQLiteColumn;\n\t\t\t\tfieldsSelection.push({ tsKey: field, value: column });\n\t\t\t}\n\n\t\t\tlet selectedRelations: {\n\t\t\t\ttsKey: string;\n\t\t\t\tqueryConfig: true | V1.DBQueryConfig<'many', false>;\n\t\t\t\trelation: V1.Relation;\n\t\t\t}[] = [];\n\n\t\t\t// Figure out which relations to select\n\t\t\tif (config.with) {\n\t\t\t\tselectedRelations = Object.entries(config.with)\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tentry,\n\t\t\t\t\t\t): entry is [(typeof entry)[0], NonNullable<(typeof entry)[1]>] => !!entry[1],\n\t\t\t\t\t)\n\t\t\t\t\t.map(([tsKey, queryConfig]) => ({\n\t\t\t\t\t\ttsKey,\n\t\t\t\t\t\tqueryConfig,\n\t\t\t\t\t\trelation: tableConfig.relations[tsKey]!,\n\t\t\t\t\t}));\n\t\t\t}\n\n\t\t\tlet extras;\n\n\t\t\t// Figure out which extras to select\n\t\t\tif (config.extras) {\n\t\t\t\textras = typeof config.extras === 'function'\n\t\t\t\t\t? config.extras(aliasedColumns, { sql })\n\t\t\t\t\t: config.extras;\n\t\t\t\tfor (const [tsKey, value] of Object.entries(extras)) {\n\t\t\t\t\tfieldsSelection.push({\n\t\t\t\t\t\ttsKey,\n\t\t\t\t\t\tvalue: mapColumnsInAliasedSQLToAlias(value, tableAlias),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Transform `fieldsSelection` into `selection`\n\t\t\t// `fieldsSelection` shouldn't be used after this point\n\t\t\tfor (const { tsKey, value } of fieldsSelection) {\n\t\t\t\tselection.push({\n\t\t\t\t\tdbKey: is(value, SQL.Aliased)\n\t\t\t\t\t\t? value.fieldAlias\n\t\t\t\t\t\t: tableConfig.columns[tsKey]!.name,\n\t\t\t\t\ttsKey,\n\t\t\t\t\tfield: is(value, Column)\n\t\t\t\t\t\t? aliasedTableColumn(value, tableAlias)\n\t\t\t\t\t\t: value,\n\t\t\t\t\trelationTableTsKey: undefined,\n\t\t\t\t\tisJson: false,\n\t\t\t\t\tselection: [],\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tlet orderByOrig = typeof config.orderBy === 'function'\n\t\t\t\t? config.orderBy(aliasedColumns, V1.getOrderByOperators())\n\t\t\t\t: (config.orderBy ?? []);\n\t\t\tif (!Array.isArray(orderByOrig)) {\n\t\t\t\torderByOrig = [orderByOrig];\n\t\t\t}\n\t\t\torderBy = orderByOrig.map((orderByValue) => {\n\t\t\t\tif (is(orderByValue, Column)) {\n\t\t\t\t\treturn aliasedTableColumn(orderByValue, tableAlias) as SQLiteColumn;\n\t\t\t\t}\n\t\t\t\treturn mapColumnsInSQLToAlias(orderByValue, tableAlias);\n\t\t\t});\n\n\t\t\tlimit = config.limit;\n\t\t\toffset = config.offset;\n\n\t\t\t// Process all relations\n\t\t\tfor (\n\t\t\t\tconst {\n\t\t\t\t\ttsKey: selectedRelationTsKey,\n\t\t\t\t\tqueryConfig: selectedRelationConfigValue,\n\t\t\t\t\trelation,\n\t\t\t\t} of selectedRelations\n\t\t\t) {\n\t\t\t\tconst normalizedRelation = V1.normalizeRelation(\n\t\t\t\t\tschema,\n\t\t\t\t\ttableNamesMap,\n\t\t\t\t\trelation,\n\t\t\t\t);\n\t\t\t\tconst relationTableName = getTableUniqueName(relation.referencedTable);\n\t\t\t\tconst relationTableTsName = tableNamesMap[relationTableName]!;\n\t\t\t\tconst relationTableAlias = `${tableAlias}_${selectedRelationTsKey}`;\n\t\t\t\t// const relationTable = schema[relationTableTsName]!;\n\t\t\t\tconst joinOn = and(\n\t\t\t\t\t...normalizedRelation.fields.map((field, i) =>\n\t\t\t\t\t\teq(\n\t\t\t\t\t\t\taliasedTableColumn(\n\t\t\t\t\t\t\t\tnormalizedRelation.references[i]!,\n\t\t\t\t\t\t\t\trelationTableAlias,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\taliasedTableColumn(field, tableAlias),\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\tconst builtRelation = this._buildRelationalQuery({\n\t\t\t\t\tfullSchema,\n\t\t\t\t\tschema,\n\t\t\t\t\ttableNamesMap,\n\t\t\t\t\ttable: fullSchema[relationTableTsName] as SQLiteTable,\n\t\t\t\t\ttableConfig: schema[relationTableTsName]!,\n\t\t\t\t\tqueryConfig: is(relation, V1.One)\n\t\t\t\t\t\t? selectedRelationConfigValue === true\n\t\t\t\t\t\t\t? { limit: 1 }\n\t\t\t\t\t\t\t: { ...selectedRelationConfigValue, limit: 1 }\n\t\t\t\t\t\t: selectedRelationConfigValue,\n\t\t\t\t\ttableAlias: relationTableAlias,\n\t\t\t\t\tjoinOn,\n\t\t\t\t\tnestedQueryRelation: relation,\n\t\t\t\t});\n\t\t\t\tconst field = sql`(${builtRelation.sql})`.as(selectedRelationTsKey);\n\t\t\t\tselection.push({\n\t\t\t\t\tdbKey: selectedRelationTsKey,\n\t\t\t\t\ttsKey: selectedRelationTsKey,\n\t\t\t\t\tfield,\n\t\t\t\t\trelationTableTsKey: relationTableTsName,\n\t\t\t\t\tisJson: true,\n\t\t\t\t\tselection: builtRelation.selection,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (selection.length === 0) {\n\t\t\tthrow new DrizzleError({\n\t\t\t\tmessage:\n\t\t\t\t\t`No fields selected for table \"${tableConfig.tsName}\" (\"${tableAlias}\"). You need to have at least one item in \"columns\", \"with\" or \"extras\". If you need to select all columns, omit the \"columns\" key or set it to undefined.`,\n\t\t\t});\n\t\t}\n\n\t\tlet result;\n\n\t\twhere = and(joinOn, where);\n\n\t\tif (nestedQueryRelation) {\n\t\t\tlet field = sql`json_array(${\n\t\t\t\tsql.join(\n\t\t\t\t\tselection.map(({ field }) =>\n\t\t\t\t\t\tis(field, SQLiteColumn)\n\t\t\t\t\t\t\t? sql.identifier(this.casing.getColumnCasing(field))\n\t\t\t\t\t\t\t: is(field, SQL.Aliased)\n\t\t\t\t\t\t\t? field.sql\n\t\t\t\t\t\t\t: field\n\t\t\t\t\t),\n\t\t\t\t\tsql`, `,\n\t\t\t\t)\n\t\t\t})`;\n\t\t\tif (is(nestedQueryRelation, V1.Many)) {\n\t\t\t\tfield = sql`coalesce(json_group_array(${field}), json_array())`;\n\t\t\t}\n\t\t\tconst nestedSelection = [\n\t\t\t\t{\n\t\t\t\t\tdbKey: 'data',\n\t\t\t\t\ttsKey: 'data',\n\t\t\t\t\tfield: field.as('data'),\n\t\t\t\t\tisJson: true,\n\t\t\t\t\trelationTableTsKey: tableConfig.tsName,\n\t\t\t\t\tselection,\n\t\t\t\t},\n\t\t\t];\n\n\t\t\tconst needsSubquery = limit !== undefined || offset !== undefined || orderBy.length > 0;\n\n\t\t\tif (needsSubquery) {\n\t\t\t\tresult = this.buildSelectQuery({\n\t\t\t\t\ttable: aliasedTable(table, tableAlias),\n\t\t\t\t\tfields: {},\n\t\t\t\t\tfieldsFlat: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpath: [],\n\t\t\t\t\t\t\tfield: sql.raw('*'),\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\twhere,\n\t\t\t\t\tlimit,\n\t\t\t\t\toffset,\n\t\t\t\t\torderBy,\n\t\t\t\t\tsetOperators: [],\n\t\t\t\t});\n\n\t\t\t\twhere = undefined;\n\t\t\t\tlimit = undefined;\n\t\t\t\toffset = undefined;\n\t\t\t\torderBy = undefined;\n\t\t\t} else {\n\t\t\t\tresult = aliasedTable(table, tableAlias);\n\t\t\t}\n\n\t\t\tresult = this.buildSelectQuery({\n\t\t\t\ttable: is(result, SQLiteTable)\n\t\t\t\t\t? result\n\t\t\t\t\t: new Subquery(result, {}, tableAlias),\n\t\t\t\tfields: {},\n\t\t\t\tfieldsFlat: nestedSelection.map(({ field }) => ({\n\t\t\t\t\tpath: [],\n\t\t\t\t\tfield: is(field, Column)\n\t\t\t\t\t\t? aliasedTableColumn(field, tableAlias)\n\t\t\t\t\t\t: field,\n\t\t\t\t})),\n\t\t\t\tjoins,\n\t\t\t\twhere,\n\t\t\t\tlimit,\n\t\t\t\toffset,\n\t\t\t\torderBy,\n\t\t\t\tsetOperators: [],\n\t\t\t});\n\t\t} else {\n\t\t\tresult = this.buildSelectQuery({\n\t\t\t\ttable: aliasedTable(table, tableAlias),\n\t\t\t\tfields: {},\n\t\t\t\tfieldsFlat: selection.map(({ field }) => ({\n\t\t\t\t\tpath: [],\n\t\t\t\t\tfield: is(field, Column)\n\t\t\t\t\t\t? aliasedTableColumn(field, tableAlias)\n\t\t\t\t\t\t: field,\n\t\t\t\t})),\n\t\t\t\tjoins,\n\t\t\t\twhere,\n\t\t\t\tlimit,\n\t\t\t\toffset,\n\t\t\t\torderBy,\n\t\t\t\tsetOperators: [],\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\ttableTsKey: tableConfig.tsName,\n\t\t\tsql: result,\n\t\t\tselection,\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) {\n\t\tif (is(column, Column)) {\n\t\t\tconst name = sql`${table}.${sql.identifier(this.casing.getColumnCasing(column))}`;\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\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\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\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) => {\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);\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\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));\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);\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, 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\tthis.casing,\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\tthis.casing,\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\tthis.casing,\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\nexport class SQLiteSyncDialect extends SQLiteDialect {\n\tstatic override readonly [entityKind]: string = 'SQLiteSyncDialect';\n\n\tmigrate(\n\t\tmigrations: MigrationMeta[],\n\t\tsession: SQLiteSession<\n\t\t\t'sync',\n\t\t\tunknown,\n\t\t\tRecord<string, unknown>,\n\t\t\tAnyRelations,\n\t\t\tV1.TablesRelationalConfig\n\t\t>,\n\t\tconfig?: string | Omit<MigrationConfig, 'migrationsFolder'>,\n\t): void | MigratorInitFailResponse {\n\t\tconst migrationsTable = config === undefined\n\t\t\t? '__drizzle_migrations'\n\t\t\t: typeof config === 'string'\n\t\t\t? '__drizzle_migrations'\n\t\t\t: (config.migrationsTable ?? '__drizzle_migrations');\n\n\t\t// Detect DB version and upgrade table schema if needed\n\t\tconst { newDb } = upgradeSyncIfNeeded(migrationsTable, session, migrations);\n\n\t\tif (newDb) {\n\t\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\tsession.run(migrationTableCreate);\n\t\t}\n\n\t\tconst dbMigrations = session.all<{\n\t\t\tid: number;\n\t\t\thash: string;\n\t\t\tcreated_at: string;\n\t\t\tname: string | null;\n\t\t}>(\n\t\t\tsql`SELECT id, hash, created_at, name FROM ${sql.identifier(migrationsTable)}`,\n\t\t);\n\n\t\tif (typeof config === 'object' && config.init) {\n\t\t\tif (dbMigrations.length) {\n\t\t\t\treturn { exitCode: 'databaseMigrations' as const };\n\t\t\t}\n\n\t\t\tif (migrations.length > 1) {\n\t\t\t\treturn { exitCode: 'localMigrations' as const };\n\t\t\t}\n\n\t\t\tconst [migration] = migrations;\n\n\t\t\tif (!migration) return;\n\n\t\t\tsession.run(\n\t\t\t\tsql`insert into ${\n\t\t\t\t\tsql.identifier(\n\t\t\t\t\t\tmigrationsTable,\n\t\t\t\t\t)\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\n\t\t\treturn;\n\t\t}\n\n\t\tconst migrationsToRun = getMigrationsToRun({\n\t\t\tlocalMigrations: migrations,\n\t\t\tdbMigrations,\n\t\t});\n\t\tsession.run(sql`BEGIN`);\n\n\t\ttry {\n\t\t\tfor (const migration of migrationsToRun) {\n\t\t\t\tfor (const stmt of migration.sql) {\n\t\t\t\t\tsession.run(sql.raw(stmt));\n\t\t\t\t}\n\t\t\t\tsession.run(\n\t\t\t\t\tsql`INSERT INTO ${\n\t\t\t\t\t\tsql.identifier(\n\t\t\t\t\t\t\tmigrationsTable,\n\t\t\t\t\t\t)\n\t\t\t\t\t} (\"hash\", \"created_at\", \"name\", \"applied_at\") values(${migration.hash}, ${migration.folderMillis}, ${migration.name}, ${\n\t\t\t\t\t\tnew Date().toISOString()\n\t\t\t\t\t})`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tsession.run(sql`COMMIT`);\n\t\t} catch (e) {\n\t\t\tsession.run(sql`ROLLBACK`);\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport class SQLiteAsyncDialect extends SQLiteDialect {\n\tstatic override readonly [entityKind]: string = 'SQLiteAsyncDialect';\n\n\tasync migrate(\n\t\tmigrations: MigrationMeta[],\n\t\tdb: BaseSQLiteDatabase<'async', unknown, Record<string, unknown>>,\n\t\tconfig?: string | Omit<MigrationConfig, 'migrationsFolder'>,\n\t): Promise<void | MigratorInitFailResponse> {\n\t\tconst migrationsTable = config === undefined\n\t\t\t? '__drizzle_migrations'\n\t\t\t: typeof config === 'string'\n\t\t\t? '__drizzle_migrations'\n\t\t\t: (config.migrationsTable ?? '__drizzle_migrations');\n\n\t\t// Detect DB version and upgrade table schema if needed\n\t\tconst { newDb } = await upgradeAsyncIfNeeded(\n\t\t\tmigrationsTable,\n\t\t\tdb,\n\t\t\tmigrations,\n\t\t);\n\n\t\tif (newDb) {\n\t\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)\n\t\t`;\n\t\t\tawait db.session.run(migrationTableCreate);\n\t\t}\n\n\t\tconst dbMigrations = await db.session.all<{\n\t\t\tid: number;\n\t\t\thash: string;\n\t\t\tcreated_at: string;\n\t\t\tname: string | null;\n\t\t}>(\n\t\t\tsql`SELECT id, hash, created_at, name FROM ${sql.identifier(migrationsTable)};`,\n\t\t);\n\n\t\tif (typeof config === 'object' && config.init) {\n\t\t\tif (dbMigrations.length) {\n\t\t\t\treturn { exitCode: 'databaseMigrations' as const };\n\t\t\t}\n\n\t\t\tif (migrations.length > 1) {\n\t\t\t\treturn { exitCode: 'localMigrations' as const };\n\t\t\t}\n\n\t\t\tconst [migration] = migrations;\n\n\t\t\tif (!migration) return;\n\n\t\t\tawait db.session.run(\n\t\t\t\tsql`insert into ${\n\t\t\t\t\tsql.identifier(\n\t\t\t\t\t\tmigrationsTable,\n\t\t\t\t\t)\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\n\t\t\treturn;\n\t\t}\n\n\t\tconst migrationsToRun = getMigrationsToRun({\n\t\t\tlocalMigrations: migrations,\n\t\t\tdbMigrations,\n\t\t});\n\t\tawait db.session.transaction(async (tx) => {\n\t\t\tfor (const migration of migrationsToRun) {\n\t\t\t\tfor (const stmt of migration.sql) {\n\t\t\t\t\tawait tx.run(sql.raw(stmt));\n\t\t\t\t}\n\t\t\t\tawait tx.run(\n\t\t\t\t\tsql`insert into ${\n\t\t\t\t\t\tsql.identifier(\n\t\t\t\t\t\t\tmigrationsTable,\n\t\t\t\t\t\t)\n\t\t\t\t\t} (\"hash\", \"created_at\", \"name\", \"applied_at\") values(${migration.hash}, ${migration.folderMillis}, ${migration.name}, ${\n\t\t\t\t\t\tnew Date().toISOString()\n\t\t\t\t\t})`,\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n}\n"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { SQLiteView } from "./view.cjs";
2
+ import { BaseSQLiteDatabase } from "./db.cjs";
2
3
  import { SQLiteSession } from "./session.cjs";
3
4
  import { SQLiteSelectConfig } from "./query-builders/select.types.cjs";
4
5
  import { entityKind } from "../entity.cjs";
@@ -156,7 +157,7 @@ declare class SQLiteSyncDialect extends SQLiteDialect {
156
157
  }
157
158
  declare class SQLiteAsyncDialect extends SQLiteDialect {
158
159
  static readonly [entityKind]: string;
159
- migrate(migrations: MigrationMeta[], session: SQLiteSession<'async', unknown, Record<string, unknown>, AnyRelations, V1.TablesRelationalConfig>, config?: string | Omit<MigrationConfig, 'migrationsFolder'>): Promise<void | MigratorInitFailResponse>;
160
+ migrate(migrations: MigrationMeta[], db: BaseSQLiteDatabase<'async', unknown, Record<string, unknown>>, config?: string | Omit<MigrationConfig, 'migrationsFolder'>): Promise<void | MigratorInitFailResponse>;
160
161
  }
161
162
  //#endregion
162
163
  export { SQLiteAsyncDialect, SQLiteDialect, SQLiteDialectConfig, SQLiteSyncDialect };
@@ -1,4 +1,5 @@
1
1
  import { SQLiteView } from "./view.js";
2
+ import { BaseSQLiteDatabase } from "./db.js";
2
3
  import { SQLiteSession } from "./session.js";
3
4
  import { SQLiteSelectConfig } from "./query-builders/select.types.js";
4
5
  import { entityKind } from "../entity.js";
@@ -156,7 +157,7 @@ declare class SQLiteSyncDialect extends SQLiteDialect {
156
157
  }
157
158
  declare class SQLiteAsyncDialect extends SQLiteDialect {
158
159
  static readonly [entityKind]: string;
159
- migrate(migrations: MigrationMeta[], session: SQLiteSession<'async', unknown, Record<string, unknown>, AnyRelations, V1.TablesRelationalConfig>, config?: string | Omit<MigrationConfig, 'migrationsFolder'>): Promise<void | MigratorInitFailResponse>;
160
+ migrate(migrations: MigrationMeta[], db: BaseSQLiteDatabase<'async', unknown, Record<string, unknown>>, config?: string | Omit<MigrationConfig, 'migrationsFolder'>): Promise<void | MigratorInitFailResponse>;
160
161
  }
161
162
  //#endregion
162
163
  export { SQLiteAsyncDialect, SQLiteDialect, SQLiteDialectConfig, SQLiteSyncDialect };
@@ -9,13 +9,13 @@ import { Param, SQL, View, sql } from "../sql/sql.js";
9
9
  import * as V1 from "../_relations.js";
10
10
  import { getMigrationsToRun } from "../migrator.utils.js";
11
11
  import { DrizzleError } from "../errors.js";
12
- import { upgradeAsyncIfNeeded, upgradeSyncIfNeeded } from "../up-migrations/sqlite.js";
13
12
  import { One, getTableAsAliasSQL, relationExtrasToSQL, relationToSQL, relationsFilterToSQL, relationsOrderToSQL } from "../relations.js";
14
13
  import { aliasedTable, aliasedTableColumn, getOriginalColumnFromAlias, mapColumnsInAliasedSQLToAlias, mapColumnsInSQLToAlias } from "../alias.js";
15
14
  import { CasingCache } from "../casing.js";
16
15
  import { and, eq, isSQLWrapper as isSQLWrapper$1 } from "../sql/index.js";
17
16
  import { SQLiteColumn } from "./columns/index.js";
18
17
  import { SQLiteTable } from "./table.js";
18
+ import { upgradeAsyncIfNeeded, upgradeSyncIfNeeded } from "../up-migrations/sqlite.js";
19
19
 
20
20
  //#region src/sqlite-core/dialect.ts
21
21
  var SQLiteDialect = class {
@@ -597,9 +597,9 @@ var SQLiteSyncDialect = class extends SQLiteDialect {
597
597
  };
598
598
  var SQLiteAsyncDialect = class extends SQLiteDialect {
599
599
  static [entityKind] = "SQLiteAsyncDialect";
600
- async migrate(migrations, session, config) {
600
+ async migrate(migrations, db, config) {
601
601
  const migrationsTable = config === void 0 ? "__drizzle_migrations" : typeof config === "string" ? "__drizzle_migrations" : config.migrationsTable ?? "__drizzle_migrations";
602
- const { newDb } = await upgradeAsyncIfNeeded(migrationsTable, session, migrations);
602
+ const { newDb } = await upgradeAsyncIfNeeded(migrationsTable, db, migrations);
603
603
  if (newDb) {
604
604
  const migrationTableCreate = sql`
605
605
  CREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (
@@ -610,22 +610,22 @@ var SQLiteAsyncDialect = class extends SQLiteDialect {
610
610
  applied_at TEXT
611
611
  )
612
612
  `;
613
- await session.run(migrationTableCreate);
613
+ await db.session.run(migrationTableCreate);
614
614
  }
615
- const dbMigrations = await session.all(sql`SELECT id, hash, created_at, name FROM ${sql.identifier(migrationsTable)};`);
615
+ const dbMigrations = await db.session.all(sql`SELECT id, hash, created_at, name FROM ${sql.identifier(migrationsTable)};`);
616
616
  if (typeof config === "object" && config.init) {
617
617
  if (dbMigrations.length) return { exitCode: "databaseMigrations" };
618
618
  if (migrations.length > 1) return { exitCode: "localMigrations" };
619
619
  const [migration] = migrations;
620
620
  if (!migration) return;
621
- await session.run(sql`insert into ${sql.identifier(migrationsTable)} ("hash", "created_at", "name", "applied_at") values(${migration.hash}, ${migration.folderMillis}, ${migration.name}, ${(/* @__PURE__ */ new Date()).toISOString()})`);
621
+ await db.session.run(sql`insert into ${sql.identifier(migrationsTable)} ("hash", "created_at", "name", "applied_at") values(${migration.hash}, ${migration.folderMillis}, ${migration.name}, ${(/* @__PURE__ */ new Date()).toISOString()})`);
622
622
  return;
623
623
  }
624
624
  const migrationsToRun = getMigrationsToRun({
625
625
  localMigrations: migrations,
626
626
  dbMigrations
627
627
  });
628
- await session.transaction(async (tx) => {
628
+ await db.session.transaction(async (tx) => {
629
629
  for (const migration of migrationsToRun) {
630
630
  for (const stmt of migration.sql) await tx.run(sql.raw(stmt));
631
631
  await tx.run(sql`insert into ${sql.identifier(migrationsTable)} ("hash", "created_at", "name", "applied_at") values(${migration.hash}, ${migration.folderMillis}, ${migration.name}, ${(/* @__PURE__ */ new Date()).toISOString()})`);