import { readFile } from 'fs/promises'; import { resolve } from 'path'; import { createConnection } from 'mysql2/promise'; const MIGRATIONS = [ 'src/business/invitation/migrations/create-invitation-codes.sql', ]; function requiredEnv(name: string): string { const value = String(process.env[name] || '').trim(); if (!value) throw new Error(`Missing required environment variable: ${name}`); return value; } async function main(): Promise { const connection = await createConnection({ host: requiredEnv('DB_HOST'), port: Number(process.env.DB_PORT || 3306), user: requiredEnv('DB_USERNAME'), password: requiredEnv('DB_PASSWORD'), database: requiredEnv('DB_NAME'), multipleStatements: true, charset: 'utf8mb4', }); try { for (const migration of MIGRATIONS) { const sql = await readFile(resolve(process.cwd(), migration), 'utf8'); await connection.query(sql); console.log(`Applied migration: ${migration}`); } } finally { await connection.end(); } } main().catch((error) => { console.error(error instanceof Error ? error.message : error); process.exitCode = 1; });