Barazo AppView backend barazo.forum
at main 29 lines 878 B view raw
1import { drizzle } from 'drizzle-orm/postgres-js' 2import { migrate } from 'drizzle-orm/postgres-js/migrator' 3import postgres from 'postgres' 4import * as schema from './schema/index.js' 5 6export function createDb(databaseUrl: string) { 7 const client = postgres(databaseUrl, { 8 max: 20, 9 idle_timeout: 30, 10 connect_timeout: 5, 11 }) 12 13 const db = drizzle(client, { schema }) 14 15 return { db, client } 16} 17 18/** 19 * Run pending Drizzle migrations against the database. 20 * Idempotent -- already-applied migrations are skipped. 21 */ 22export async function runMigrations(databaseUrl: string, migrationsFolder: string): Promise<void> { 23 const migrationClient = postgres(databaseUrl, { max: 1 }) 24 const migrationDb = drizzle(migrationClient) 25 await migrate(migrationDb, { migrationsFolder }) 26 await migrationClient.end() 27} 28 29export type Database = ReturnType<typeof createDb>['db']