<?php
declare(strict_types=1);

// Non-production C Store metadata only; no business rows or values.
set_exception_handler(static function (Throwable $error): void {
    echo json_encode(['status' => 'metadata-error',
        'class' => get_class($error), 'code' => (string)$error->getCode()],
        JSON_UNESCAPED_SLASHES), PHP_EOL;
    exit(2);
});
$raw = file_get_contents('/proc/53772/environ');
if ($raw === false) throw new RuntimeException('Approved POC unavailable');
$env = [];
foreach (explode("\0", $raw) as $part) {
    if (strpos($part, 'POC_') !== 0) continue;
    $position = strpos($part, '=');
    if ($position !== false) $env[substr($part, 0, $position)] = substr($part, $position + 1);
}
if (($env['POC_DIALECT'] ?? '') !== 'dm'
    || ($env['POC_HOST'] ?? '') !== '127.0.0.1'
    || ($env['POC_PORT'] ?? '') !== '5237'
    || ($env['POC_SCHEMA'] ?? '') !== 'ZHCT_APP'
    || empty($env['POC_USER']) || empty($env['POC_PASSWORD'])) {
    throw new RuntimeException('C Store source mismatch');
}
$pdo = new PDO('dm:host=127.0.0.1;port=5237;schema=ZHCT_APP',
    $env['POC_USER'], $env['POC_PASSWORD'], [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_CASE => PDO::CASE_LOWER,
    ]);
$stmt = $pdo->query(
    "SELECT COLUMN_NAME,DATA_TYPE,DATA_PRECISION,DATA_SCALE,NULLABLE "
    . "FROM USER_TAB_COLUMNS WHERE TABLE_NAME='YDY_RESTAURANTS' "
    . "AND COLUMN_NAME IN ('PACKAGE_FEE','LOCKER_PACKAGE_FEE',"
    . "'IS_H5_TAKEOUT_ENTRY') ORDER BY COLUMN_NAME"
);
echo json_encode(['status' => 'metadata-read',
    'columns' => $stmt->fetchAll(PDO::FETCH_ASSOC)],
    JSON_UNESCAPED_SLASHES), PHP_EOL;
