<?php
declare(strict_types=1);

// Development MySQL Store source only. No HTTP and no DML.
set_exception_handler(static function (Throwable $error): void {
    echo json_encode(['status' => 'preflight-error', 'class' => get_class($error),
        'code' => (string)$error->getCode()], JSON_UNESCAPED_SLASHES), PHP_EOL;
    exit(2);
});
$path = realpath((string)getenv('POC_MYSQL_LOCAL_ENV'));
if ($path !== '/workspace/zhct/zhctproject/ai_api/.env.local') {
    throw new RuntimeException('Wrong local config path');
}
$config = parse_ini_file($path, true, INI_SCANNER_RAW);
$store = $config['DATABASE_ZHCT'] ?? [];
foreach (['HOSTNAME', 'HOSTPORT', 'DATABASE', 'USERNAME', 'PASSWORD'] as $key) {
    if (empty($store[$key])) throw new RuntimeException('Missing approved dev setting');
}
$dsn = 'mysql:host=' . $store['HOSTNAME'] . ';port=' . $store['HOSTPORT']
    . ';dbname=' . $store['DATABASE'] . ';charset=' . ($store['CHARSET'] ?? 'utf8');
$pdo = new PDO($dsn, $store['USERNAME'], $store['PASSWORD'], [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_CASE => PDO::CASE_LOWER,
    PDO::ATTR_EMULATE_PREPARES => false,
]);
if ((string)$pdo->query('SELECT DATABASE()')->fetchColumn() !== (string)$store['DATABASE']) {
    throw new RuntimeException('Wrong dev schema');
}
$today = date('Y-m-d');
$until = date('Y-m-d', strtotime('+30 days'));
$sql = 'SELECT r.restaurant_id,r.menu_date,r.meal_times '
    . 'FROM ydy_recipes r JOIN ydy_dishes d ON d.uuid=r.dishes_uuid '
    . 'JOIN ydy_restaurants s ON s.id=r.restaurant_id '
    . 'WHERE r.menu_date BETWEEN ? AND ? AND d.is_delete=0 AND d.ai_dishes_id>0 '
    . 'AND s.is_delete=2 AND s.status=1 AND s.stall_type IN (1,2,3) '
    . 'ORDER BY r.menu_date,r.restaurant_id LIMIT 1';
$query = $pdo->prepare($sql);
$query->execute([$today, $until]);
$row = $query->fetch(PDO::FETCH_ASSOC);
echo json_encode(['status' => is_array($row) ? 'natural-candidate' : 'no-natural-candidate',
    'source' => 'code-local-development-mysql', 'schema_hash' => hash('sha256', (string)$store['DATABASE']),
    'date_window' => [$today, $until],
    'candidate' => is_array($row) ? ['restaurant_id' => (int)$row['restaurant_id'],
        'menu_date' => (string)$row['menu_date'], 'meal_times' => (int)$row['meal_times']] : null],
    JSON_UNESCAPED_SLASHES), PHP_EOL;
