<?php
/**
 * تشغيل جميع ملفات الترحيل بالترتيب
 * استخدم: php migrations/run_all.php
 */
$config = require __DIR__ . '/../config/config.php';
$pdo = new PDO(
    'mysql:host=' . $config['db']['host'] . ';dbname=' . $config['db']['name'] . ';charset=utf8mb4',
    $config['db']['user'],
    $config['db']['pass'],
    [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
$pdo->exec('SET NAMES utf8mb4');

$migrations = ['001_add_critical_values.sql', '002_seed_lab_tests.sql', '003_multi_branch.sql', '004_create_devices.sql', '005_full_features.sql', '006_saas_multi_tenant.sql'];
$dir = __DIR__;

foreach ($migrations as $file) {
    $path = $dir . '/' . $file;
    if (!is_file($path)) {
        echo "تخطي (غير موجود): $file\n";
        continue;
    }
    $sql = file_get_contents($path, false, null, 0, 500000);
    if ($sql === false || trim($sql) === '') {
        echo "تخطي (فارغ): $file\n";
        continue;
    }
    $statements = array_filter(array_map('trim', preg_split('/;\s*\n/', $sql)));
    foreach ($statements as $stmt) {
        $stmt = trim($stmt);
        if ($stmt === '' || strpos($stmt, '--') === 0) continue;
        try {
            $pdo->exec($stmt);
        } catch (PDOException $e) {
            if (strpos($e->getMessage(), 'Duplicate entry') === false && strpos($e->getMessage(), 'already exists') === false) {
                echo "تحذير [$file]: " . $e->getMessage() . "\n";
            }
        }
    }
    echo "تم: $file\n";
}
echo "اكتمل تشغيل الترحيلات.\n";
