migrator.ts — drizzle-orm Source File
Architecture documentation for migrator.ts, a typescript file in the drizzle-orm codebase. 3 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 6fd7cb0a_8ff7_94fe_5fa1_18f4acd5f695["migrator.ts"] 873bd06d_d5ad_ee33_9029_a6593dd73ae2["driver.ts"] 6fd7cb0a_8ff7_94fe_5fa1_18f4acd5f695 --> 873bd06d_d5ad_ee33_9029_a6593dd73ae2 e5e6906d_5758_78e9_01f9_fe38ab11030b["migrator.ts"] 6fd7cb0a_8ff7_94fe_5fa1_18f4acd5f695 --> e5e6906d_5758_78e9_01f9_fe38ab11030b be483a7f_d5d7_7a9b_9a13_44a4a6aafbbd["sql.ts"] 6fd7cb0a_8ff7_94fe_5fa1_18f4acd5f695 --> be483a7f_d5d7_7a9b_9a13_44a4a6aafbbd style 6fd7cb0a_8ff7_94fe_5fa1_18f4acd5f695 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import { readMigrationFiles } from '~/migrator.ts';
import { sql } from '~/sql/sql.ts';
import type { XataHttpDatabase } from './driver.ts';
export interface MigrationConfig {
migrationsFolder: string;
migrationsTable?: string;
}
/**
* This function reads migrationFolder and execute each unapplied migration and mark it as executed in database
*
* NOTE: The Xata HTTP driver does not support transactions. This means that if any part of a migration fails,
* no rollback will be executed. Currently, you will need to handle unsuccessful migration yourself.
* @param db - drizzle db instance
* @param config - path to migration folder generated by drizzle-kit
*/ export async function migrate<TSchema extends Record<string, unknown>>(
db: XataHttpDatabase<TSchema>,
config: MigrationConfig,
) {
const migrations = readMigrationFiles(config);
const migrationsTable = 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 bigint
)
`;
await db.session.execute(migrationTableCreate);
const dbMigrations = await db.session.all<{
id: number;
hash: string;
created_at: string;
}>(
sql`select id, hash, created_at from ${sql.identifier(migrationsTable)} order by created_at desc limit 1`,
);
const lastDbMigration = dbMigrations[0];
for await (const migration of migrations) {
if (!lastDbMigration || Number(lastDbMigration.created_at) < migration.folderMillis) {
for (const stmt of migration.sql) {
await db.session.execute(sql.raw(stmt));
}
await db.session.execute(
sql`insert into ${
sql.identifier(migrationsTable)
} ("hash", "created_at") values(${migration.hash}, ${migration.folderMillis})`,
);
}
}
}
Domain
Subdomains
Functions
Types
Dependencies
- driver.ts
- migrator.ts
- sql.ts
Source
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, QueryBuilders subdomain.
What functions are defined in migrator.ts?
migrator.ts defines 1 function(s): migrate.
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/xata-http/migrator.ts (domain: DrizzleORM, subdomain: QueryBuilders, directory: drizzle-orm/src/xata-http).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free