<?php
// سكربت إصلاح سريع: التحقق من الفهارس الحرجة وإنشاؤها تلقائياً
// يُنصح بتشغيله لمرة واحدة فقط عبر المتصفح من قبل الأدمن.

session_start();
require_once __DIR__ . '/config.php';

header('Content-Type: application/json; charset=utf-8');

if (!isset($_SESSION['user_id'])) {
    http_response_code(401);
    echo json_encode(['status' => 'error', 'message' => 'غير مسموح']);
    exit;
}

$role = $_SESSION['role'] ?? 'user';
if ($role !== 'admin') {
    http_response_code(403);
    echo json_encode(['status' => 'error', 'message' => 'يتطلب صلاحيات مدير (Admin)']);
    exit;
}

function indexExists(PDO $conn, $table, $indexName) {
    $stmt = $conn->prepare("SHOW INDEX FROM `$table` WHERE Key_name = ?");
    $stmt->execute([$indexName]);
    return $stmt->fetch(PDO::FETCH_ASSOC) !== false;
}

$results = [
    'status' => 'success',
    'created' => [],
    'already_present' => [],
];

try {
    // 1) فهرس مركب للأداء الأمثل في جدول المواقع
    $idxLocations = 'idx_locations_device_time';
    if (!indexExists($conn, 'locations', $idxLocations)) {
        $conn->exec("ALTER TABLE `locations` ADD INDEX `$idxLocations` (`device_id`, `timestamp`)");
        $results['created'][] = ['table' => 'locations', 'index' => $idxLocations];
    } else {
        $results['already_present'][] = ['table' => 'locations', 'index' => $idxLocations];
    }

    // 2) فهرس على الأماكن المعرّفة من المستخدم لتسريع البحث
    $idxUserPlaces = 'idx_user_places_user';
    if (!indexExists($conn, 'user_places', $idxUserPlaces)) {
        $conn->exec("ALTER TABLE `user_places` ADD INDEX `$idxUserPlaces` (`user_id`)");
        $results['created'][] = ['table' => 'user_places', 'index' => $idxUserPlaces];
    } else {
        $results['already_present'][] = ['table' => 'user_places', 'index' => $idxUserPlaces];
    }

    echo json_encode($results, JSON_UNESCAPED_UNICODE);
} catch (Exception $e) {
    http_response_code(500);
    echo json_encode(['status' => 'error', 'message' => $e->getMessage()]);
}