import { execSync } from 'node:child_process'; import path from 'node:path'; import { config } from 'dotenv'; import pg from 'pg'; /** Отдельная БД barev_test рядом с основной; схема накатывается миграциями */ export default async function setup() { config({ path: path.resolve(import.meta.dirname, '../../../.env'), quiet: true }); const base = new URL(process.env.DATABASE_URL!); const testUrl = new URL(base); testUrl.pathname = '/barev_test'; const admin = new pg.Client({ connectionString: base.toString() }); await admin.connect(); const exists = await admin.query(`SELECT 1 FROM pg_database WHERE datname = 'barev_test'`); if (!exists.rowCount) await admin.query('CREATE DATABASE barev_test'); await admin.end(); execSync('npx prisma migrate deploy', { cwd: path.resolve(import.meta.dirname, '../../db'), env: { ...process.env, DATABASE_URL: testUrl.toString() }, stdio: 'pipe', }); process.env.TEST_DATABASE_URL = testUrl.toString(); }