Barazo AppView backend
barazo.forum
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']