Co-authored-by: Jason Woltje <jason@diversecanvas.com> Co-committed-by: Jason Woltje <jason@diversecanvas.com>
19 lines
711 B
TypeScript
19 lines
711 B
TypeScript
import { dirname, resolve } from 'node:path';
|
|
import { fileURLToPath } from 'node:url';
|
|
import { drizzle } from 'drizzle-orm/postgres-js';
|
|
import { migrate } from 'drizzle-orm/postgres-js/migrator';
|
|
import postgres from 'postgres';
|
|
import { DEFAULT_DATABASE_URL } from './defaults.js';
|
|
|
|
export async function runMigrations(url?: string): Promise<void> {
|
|
const connectionString = url ?? process.env['DATABASE_URL'] ?? DEFAULT_DATABASE_URL;
|
|
const sql = postgres(connectionString, { max: 1 });
|
|
const db = drizzle(sql);
|
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
try {
|
|
await migrate(db, { migrationsFolder: resolve(__dirname, '../drizzle') });
|
|
} finally {
|
|
await sql.end();
|
|
}
|
|
}
|