import { spawn } from 'node:child_process' const source = process.env.DATABASE_URL, destination = process.argv[2] if (!source || !destination) throw new Error('DATABASE_URL and backup output path required') const url = new URL(source), child = spawn('pg_dump', ['--format=custom', '--file', destination], { stdio: ['ignore', 'inherit', 'inherit'], env: { ...process.env, PGHOST: url.hostname, PGPORT: url.port || '5432', PGUSER: decodeURIComponent(url.username), PGPASSWORD: decodeURIComponent(url.password), PGDATABASE: url.pathname.slice(1), }, }) await new Promise((resolve, reject) => { child.once('error', reject) child.once('exit', (code) => (code === 0 ? resolve() : reject(new Error('pg_dump failed')))) })