<?php

declare(strict_types=1);

// C only: dictionary metadata, no user rows, defaults, trigger bodies or values returned.
set_exception_handler(static function (Throwable $error): void {
    fwrite(STDERR, 'AI_STORE_FIXTURE_METADATA_FAILED ' . get_class($error) . PHP_EOL);
    exit(2);
});
$env = [];
foreach (explode("\0", (string)@file_get_contents('/proc/53772/environ')) as $item) {
    $parts = explode('=', $item, 2);
    if (count($parts) === 2) $env[$parts[0]] = $parts[1];
}
if (($env['POC_TARGET_ROOT'] ?? '') !== '/tmp/zhct-ai-http-20260929.3XDj3w'
    || ($env['POC_DIALECT'] ?? '') !== 'dm'
    || ($env['POC_AI_PORT'] ?? '') !== '5238'
    || ($env['POC_AI_SCHEMA'] ?? '') !== 'AIZHCT_APP') {
    throw new RuntimeException('C AI boundary mismatch');
}
$db = new PDO('dm:host=' . $env['POC_AI_HOST'] . ';port=' . $env['POC_AI_PORT']
    . ';schema=' . $env['POC_AI_SCHEMA'], $env['POC_AI_USER'],
    $env['POC_AI_PASSWORD'], [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
$tables = ['STORE_USER', 'STORE_ROLE', 'STORE_ROLE_MENU', 'STORE_USER_ROLE',
    'STAFF', 'STAFF_WEIGHT', 'HABIT', 'HABIT_RPE', 'HABIT_RPE_INFO',
    'HEALTH', 'NURTITION_TARGET', 'MEAL', 'MEAL_INFOS', 'DISHES',
    'FOODS', 'DISHES_FOODS'];
$result = [];
foreach ($tables as $short) {
    $table = 'YOSHOP_' . $short;
    $required = $db->prepare('SELECT COLUMN_NAME FROM USER_TAB_COLUMNS'
        . " WHERE TABLE_NAME=? AND NULLABLE='N' AND DATA_DEFAULT IS NULL"
        . ' ORDER BY COLUMN_ID');
    $required->execute([$table]);
    $noDefault = $required->fetchAll(PDO::FETCH_COLUMN);
    $trigger = $db->prepare('SELECT COUNT(*) FROM USER_TRIGGERS'
        . " WHERE TABLE_NAME=? AND STATUS='ENABLED'");
    $trigger->execute([$table]);
    $fk = $db->prepare('SELECT COUNT(*) FROM USER_CONSTRAINTS'
        . " WHERE TABLE_NAME=? AND CONSTRAINT_TYPE='R'");
    $fk->execute([$table]);
    $result[strtolower($short)] = [
        'not_null_without_default_columns' => $noDefault,
        'enabled_trigger_count' => (int)$trigger->fetchColumn(),
        'outgoing_fk_count' => (int)$fk->fetchColumn(),
    ];
}
echo json_encode(['suite' => 'ai-store-nutrition-C-fixture-metadata',
    'mode' => 'read-only-dictionary', 'tables' => $result],
    JSON_UNESCAPED_SLASHES) . PHP_EOL;
