<?php

declare(strict_types=1);

// Independent, read-only check of one synthetic marker in code local MySQL 5.6.
$marker=(string)getenv('CDXPARMENU_MARKER');
if (!preg_match('/^CDXPARMENU[A-F0-9]{8}$/',$marker)) {
    fwrite(STDERR,"Invalid synthetic marker\n");
    exit(2);
}
try {
    $path=realpath(__DIR__
        . '/../../../../../zhctproject/store/application/config/local/database.php');
    if (!$path || strpos($path,
        '/zhctproject/store/application/config/local/')===false) {
        throw new RuntimeException('Approved local config absent');
    }
    $load=static function (string $file): array { return require $file; };
    $config=$load($path);
    $dsn='mysql:host='.$config['hostname'].';port='
        .(int)($config['hostport']??3306).';dbname='
        .$config['database'].';charset=utf8mb4';
    $db=new PDO($dsn,(string)$config['username'],(string)$config['password'],[
        PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_EMULATE_PREPARES=>false,
        PDO::ATTR_DEFAULT_FETCH_MODE=>PDO::FETCH_ASSOC,
        PDO::ATTR_TIMEOUT=>8,
    ]);
    if (strpos((string)$db->query('SELECT VERSION()')->fetchColumn(),'5.6.')===false) {
        throw new RuntimeException('Unexpected MySQL version');
    }
    $queries=[
        'user'=>'SELECT COUNT(*) FROM ydy_user WHERE account=?',
        'role'=>'SELECT COUNT(*) FROM ydy_role WHERE name=?',
        'user_role'=>'SELECT COUNT(*) FROM ydy_user_role WHERE create_by=?',
        'role_menu'=>'SELECT COUNT(*) FROM ydy_role_menu WHERE create_by=?',
    ];
    $counts=[];
    foreach ($queries as $key=>$sql) {
        $stmt=$db->prepare($sql);
        $stmt->execute([$marker]);
        $counts[$key]=(int)$stmt->fetchColumn();
    }
    echo json_encode(['marker'=>$marker,'counts'=>$counts],
        JSON_UNESCAPED_SLASHES).PHP_EOL;
    if (array_sum($counts)!==0) exit(1);
} catch (Throwable $error) {
    echo json_encode(['status'=>'error','class'=>get_class($error),
        'code'=>$error->getCode()]).PHP_EOL;
    exit(1);
}
