Home / File/ migrator.ts — drizzle-orm Source File

migrator.ts — drizzle-orm Source File

Architecture documentation for migrator.ts, a typescript file in the drizzle-orm codebase. 3 imports, 0 dependents.

File typescript DrizzleORM SQLDialects 3 imports 2 functions

Entity Profile

Dependency Diagram

graph LR
  b4ea4a73_2f21_2ebc_d7d0_3e4301b07007["migrator.ts"]
  5eb41267_daaa_4ab2_fd1c_fe0fdff5c37a["driver.ts"]
  b4ea4a73_2f21_2ebc_d7d0_3e4301b07007 --> 5eb41267_daaa_4ab2_fd1c_fe0fdff5c37a
  e5e6906d_5758_78e9_01f9_fe38ab11030b["migrator.ts"]
  b4ea4a73_2f21_2ebc_d7d0_3e4301b07007 --> e5e6906d_5758_78e9_01f9_fe38ab11030b
  be483a7f_d5d7_7a9b_9a13_44a4a6aafbbd["sql.ts"]
  b4ea4a73_2f21_2ebc_d7d0_3e4301b07007 --> be483a7f_d5d7_7a9b_9a13_44a4a6aafbbd
  style b4ea4a73_2f21_2ebc_d7d0_3e4301b07007 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import type { MigrationConfig } from '~/migrator.ts';
import { readMigrationFiles } from '~/migrator.ts';
import { sql } from '~/sql/sql.ts';
import type { SqliteRemoteDatabase } from './driver.ts';

export type ProxyMigrator = (migrationQueries: string[]) => Promise<void>;

export async function migrate<TSchema extends Record<string, unknown>>(
	db: SqliteRemoteDatabase<TSchema>,
	callback: ProxyMigrator,
	config: MigrationConfig,
) {
	const migrations = readMigrationFiles(config);

	const migrationsTable = 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
		)
	`;

	await db.run(migrationTableCreate);

	const dbMigrations = await db.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;

	const queriesToRun: string[] = [];
	for (const migration of migrations) {
		if (
			!lastDbMigration
			|| Number(lastDbMigration[2])! < migration.folderMillis
		) {
			queriesToRun.push(
				...migration.sql,
				`INSERT INTO \`${migrationsTable}\` ("hash", "created_at") VALUES('${migration.hash}', '${migration.folderMillis}')`,
			);
		}
	}

	await callback(queriesToRun);
}

Domain

Subdomains

Dependencies

Frequently Asked Questions

What does migrator.ts do?
migrator.ts is a source file in the drizzle-orm codebase, written in typescript. It belongs to the DrizzleORM domain, SQLDialects subdomain.
What functions are defined in migrator.ts?
migrator.ts defines 2 function(s): migrate, migrationQueries.
What does migrator.ts depend on?
migrator.ts imports 3 module(s): driver.ts, migrator.ts, sql.ts.
Where is migrator.ts in the architecture?
migrator.ts is located at drizzle-orm/src/sqlite-proxy/migrator.ts (domain: DrizzleORM, subdomain: SQLDialects, directory: drizzle-orm/src/sqlite-proxy).

Analyze Your Own Codebase

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

Try Supermodel Free