<?php
declare(strict_types=1);

// Coupon read-source gate. SELECT only; no HTTP, token, or DML.
$lane = (string)($argv[1] ?? '');
if (!in_array($lane, ['B', 'C'], true)) exit(78);
if ($lane === 'B') {
    $cfg = parse_ini_file('/Users/wiscourper/Documents/workspace/zhct/zhctproject/ai_api/.env.local',
        true, INI_SCANNER_RAW)['DATABASE'] ?? null;
    if (!is_array($cfg) || strtolower((string)($cfg['TYPE'] ?? '')) !== 'mysql'
        || (string)($cfg['HOSTPORT'] ?? '') !== '3306') {
        throw new RuntimeException('not code-local MySQL');
    }
    $db = new PDO('mysql:host=' . $cfg['HOSTNAME'] . ';port=' . $cfg['HOSTPORT']
        . ';dbname=' . $cfg['DATABASE'] . ';charset=utf8',
        $cfg['USERNAME'], $cfg['PASSWORD'], [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
    $prefix = 'yoshop_';
} else {
    $env = [];
    foreach (explode("\0", (string)file_get_contents('/proc/53772/environ')) as $item) {
        $pair = explode('=', $item, 2);
        if (count($pair) === 2) $env[$pair[0]] = $pair[1];
    }
    if (($env['POC_DIALECT'] ?? '') !== 'dm'
        || ($env['POC_AI_HOST'] ?? '') !== '127.0.0.1'
        || ($env['POC_AI_PORT'] ?? '') !== '5238'
        || ($env['POC_AI_SCHEMA'] ?? '') !== 'AIZHCT_APP') {
        throw new RuntimeException('not approved C worker');
    }
    $db = new PDO('dm:host=127.0.0.1;port=5238;schema=AIZHCT_APP',
        $env['POC_AI_USER'], $env['POC_AI_PASSWORD'],
        [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
    if ($db->query("SELECT SYS_CONTEXT('USERENV','CURRENT_SCHEMA') FROM DUAL")
        ->fetchColumn() !== 'AIZHCT_APP') {
        throw new RuntimeException('C schema drift');
    }
    $prefix = 'YOSHOP_';
}
$table = $prefix . ($lane === 'B' ? 'coupon' : 'COUPON');
$count = $db->query('SELECT COUNT(*) FROM ' . $table
    . ' WHERE STORE_ID=10001 AND STATUS=1 AND IS_DELETE=0')->fetchColumn();
$onlyReceiveSql = 'SELECT COUNT(*) FROM ' . $table
    . ' WHERE STORE_ID=10001 AND STATUS=1 AND IS_DELETE=0'
    . ' AND IF ( total_num > - 1, receive_num < total_num, 1 = 1 )'
    . ' AND IF ( expire_type = 20, (end_time + 86400) >= '
    . time() . ', 1 = 1 )';
$onlyReceive = $db->query($onlyReceiveSql)->fetchColumn();
echo json_encode(['lane' => $lane, 'active_coupon_count' => (int)$count,
    'only_receive_filter_count' => (int)$onlyReceive,
    'business_http' => 0, 'business_dml' => 0]), PHP_EOL;
