import { execSync } from 'node:child_process';

// Tests TRUNCATE between cases, so they MUST NOT touch the dev database. Run them
// against an isolated `iios_test` DB (created + migrated here, once, before the suite).
const TEST_URL = 'postgresql://iios:iios@localhost:5434/iios_test?schema=public';

export default function setup() {
  try {
    execSync(`docker exec iios-db psql -U iios -d postgres -c "CREATE DATABASE iios_test"`, { stdio: 'pipe' });
  } catch (e) {
    const msg = String(e.stderr ?? e.stdout ?? e);
    if (!/already exists/i.test(msg)) {
      console.warn(`[vitest] could not create iios_test (is the iios-db container up?): ${msg.slice(0, 160)}`);
    }
  }
  execSync('pnpm --filter @insignia/iios-service exec prisma migrate deploy', {
    stdio: 'inherit',
    env: { ...process.env, DATABASE_URL: TEST_URL },
  });
}
