Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
24 lines
1.0 KiB
TypeScript
24 lines
1.0 KiB
TypeScript
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();
|
|
}
|