<?php
declare(strict_types=1);

$lane = (string)($argv[1] ?? '');
if (!in_array($lane, ['B', 'C'], true)) exit(78);
$root = $lane === 'B' ? '/tmp/zhct-http-store-mysql.dQTTBP'
    : '/tmp/zhct-dm-poc-20260928.fcpiiN/store';
$cfg = require $root . '/application/database.php';
if ($lane === 'B') {
    $local = require '/workspace/zhct/zhctproject/store/application/config/local/database.php';
    foreach (['hostname', 'database', 'username', 'password'] as $key) {
        if (($cfg[$key] ?? null) !== ($local[$key] ?? null)) exit(78);
    }
    $dsn = 'mysql:host=' . $cfg['hostname'] . ';port=' . ($cfg['hostport'] ?? 3306)
        . ';dbname=' . $cfg['database'] . ';charset=utf8mb4';
    $table = 'ydy_initial_menu_log';
} else {
    if ((string)($cfg['hostname'] ?? '') !== '127.0.0.1'
        || (int)($cfg['hostport'] ?? 0) !== 5237
        || strtoupper((string)($cfg['database'] ?? '')) !== 'ZHCT_APP') exit(78);
    $dsn = 'dm:host=127.0.0.1;port=5237;schema=ZHCT_APP';
    $table = 'YDY_INITIAL_MENU_LOG';
}
$db = new PDO($dsn, (string)$cfg['username'], (string)$cfg['password'], [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_CASE => PDO::CASE_LOWER,
]);
$fetch = static function (PDOStatement $statement): array {
    return array_map(static function (array $r): array { return array_change_key_case($r, CASE_LOWER); },
        $statement->fetchAll(PDO::FETCH_ASSOC));
};
if ($lane === 'B') {
    $columns = $fetch($db->query("SELECT COLUMN_NAME,DATA_TYPE,IS_NULLABLE,COLUMN_DEFAULT,EXTRA"
        . " FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=DATABASE()"
        . " AND TABLE_NAME='ydy_initial_menu_log' ORDER BY ORDINAL_POSITION"));
    $triggerCount = (int)$db->query("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TRIGGERS"
        . " WHERE TRIGGER_SCHEMA=DATABASE() AND EVENT_OBJECT_TABLE='ydy_initial_menu_log'")->fetchColumn();
    $fkCount = (int)$db->query("SELECT COUNT(*) FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE"
        . " WHERE TABLE_SCHEMA=DATABASE() AND REFERENCED_TABLE_NAME='ydy_initial_menu_log'")->fetchColumn();
} else {
    $columns = $fetch($db->query("SELECT COLUMN_NAME,DATA_TYPE,NULLABLE,DATA_DEFAULT"
        . " FROM USER_TAB_COLUMNS WHERE TABLE_NAME='YDY_INITIAL_MENU_LOG' ORDER BY COLUMN_ID"));
    $triggerCount = (int)$db->query("SELECT COUNT(*) FROM USER_TRIGGERS"
        . " WHERE TABLE_NAME='YDY_INITIAL_MENU_LOG'")->fetchColumn();
    $fkCount = (int)$db->query("SELECT COUNT(*) FROM USER_CONSTRAINTS"
        . " WHERE CONSTRAINT_TYPE='R' AND TABLE_NAME='YDY_INITIAL_MENU_LOG'")->fetchColumn();
}
$markerCount = (int)$db->query('SELECT COUNT(*) FROM ' . $table
    . " WHERE CREATE_BY LIKE 'CDXONTO%'")->fetchColumn();
echo json_encode(['lane' => $lane, 'columns' => $columns,
    'trigger_count' => $triggerCount, 'fk_count' => $fkCount,
    'test_create_by_count' => $markerCount], JSON_UNESCAPED_UNICODE), PHP_EOL;
