<?php
/**
 * Database Configuration & Connection (PDO)
 * For CMTC Shop (Shop23)
 */

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With");
header("Content-Type: application/json; charset=UTF-8");

if (($_SERVER['REQUEST_METHOD'] ?? '') === 'OPTIONS') {
    http_response_code(200);
    exit();
}

// Database Credentials
// สามารถปรับเปลี่ยนตามการตั้งค่าฐานข้อมูลจริงบนเซิร์ฟเวอร์ webapp69.cm.in.th
$DB_HOST = 'localhost';
$DB_PORT = '3306';
$DB_NAME = 'u69319090023_shop'; // ชื่อดาต้าเบส (หรือเปลี่ยนตามที่ได้รับจากโฮสต์)
$DB_USER = 'root';              // ผู้ใช้ฐานข้อมูล
$DB_PASS = '';                  // รหัสผ่านฐานข้อมูล

$pdo = null;
$pdo_error = null;

try {
    $dsn = "mysql:host={$DB_HOST};port={$DB_PORT};dbname={$DB_NAME};charset=utf8mb4";
    $pdo = new PDO($dsn, $DB_USER, $DB_PASS, [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES   => false,
        PDO::ATTR_TIMEOUT            => 3,
    ]);
} catch (PDOException $e) {
    // Database connection error captured without exiting
    // Allows API endpoints to gracefully fallback to JSON file persistence
    $pdo = null;
    $pdo_error = $e->getMessage();
}

/**
 * Helper function to send JSON response
 */
function sendResponse($success, $data = null, $message = '', $statusCode = 200) {
    http_response_code($statusCode);
    echo json_encode([
        'success' => $success,
        'data' => $data,
        'message' => $message
    ], JSON_UNESCAPED_UNICODE);
    exit();
}

/**
 * Helper to get JSON body from POST/PUT request
 */
function getJsonInput() {
    $raw = file_get_contents('php://input');
    return json_decode($raw, true) ?: [];
}
