Home / Class/ SQLiteSyncDialect Class — drizzle-orm Architecture

SQLiteSyncDialect Class — drizzle-orm Architecture

Architecture documentation for the SQLiteSyncDialect class in dialect.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  4f047e7d_6612_7a43_25aa_77636956aa77["SQLiteSyncDialect"]
  209e34fa_8ae1_5a1a_23cb_e4720fd5b915["dialect.ts"]
  4f047e7d_6612_7a43_25aa_77636956aa77 -->|defined in| 209e34fa_8ae1_5a1a_23cb_e4720fd5b915
  86e97d66_e1da_64df_7876_93f94aebf1ac["migrate()"]
  4f047e7d_6612_7a43_25aa_77636956aa77 -->|method| 86e97d66_e1da_64df_7876_93f94aebf1ac

Relationship Graph

Source Code

drizzle-orm/src/sqlite-core/dialect.ts lines 830–880

export class SQLiteSyncDialect extends SQLiteDialect {
	static override readonly [entityKind]: string = 'SQLiteSyncDialect';

	migrate(
		migrations: MigrationMeta[],
		session: SQLiteSession<'sync', unknown, Record<string, unknown>, TablesRelationalConfig>,
		config?: string | MigrationConfig,
	): void {
		const migrationsTable = config === undefined
			? '__drizzle_migrations'
			: typeof config === 'string'
			? '__drizzle_migrations'
			: config.migrationsTable ?? '__drizzle_migrations';

		const migrationTableCreate = sql`
			CREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (
				id SERIAL PRIMARY KEY,
				hash text NOT NULL,
				created_at numeric
			)
		`;
		session.run(migrationTableCreate);

		const dbMigrations = session.values<[number, string, string]>(
			sql`SELECT id, hash, created_at FROM ${sql.identifier(migrationsTable)} ORDER BY created_at DESC LIMIT 1`,
		);

		const lastDbMigration = dbMigrations[0] ?? undefined;
		session.run(sql`BEGIN`);

		try {
			for (const migration of migrations) {
				if (!lastDbMigration || Number(lastDbMigration[2])! < migration.folderMillis) {
					for (const stmt of migration.sql) {
						session.run(sql.raw(stmt));
					}
					session.run(
						sql`INSERT INTO ${
							sql.identifier(migrationsTable)
						} ("hash", "created_at") VALUES(${migration.hash}, ${migration.folderMillis})`,
					);
				}
			}

			session.run(sql`COMMIT`);
		} catch (e) {
			session.run(sql`ROLLBACK`);
			throw e;
		}
	}
}

Domain

Frequently Asked Questions

What is the SQLiteSyncDialect class?
SQLiteSyncDialect is a class in the drizzle-orm codebase, defined in drizzle-orm/src/sqlite-core/dialect.ts.
Where is SQLiteSyncDialect defined?
SQLiteSyncDialect is defined in drizzle-orm/src/sqlite-core/dialect.ts at line 830.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free