<?php
declare(strict_types=1);

// Read-only count of prior synthetic AI conversation source rows. No content is read.
set_exception_handler(static function (Throwable $error): void {
    echo json_encode(['status' => 'preflight-error', 'class' => get_class($error),
        'code' => (string)$error->getCode()], JSON_UNESCAPED_SLASHES), PHP_EOL;
    exit(2);
});
$path = realpath((string)getenv('POC_MYSQL_LOCAL_ENV'));
if ($path !== '/Users/wiscourper/Documents/workspace/zhct/zhctproject/ai_api/.env.local') {
    throw new RuntimeException('Wrong local MySQL config');
}
$config = parse_ini_file($path, true, INI_SCANNER_RAW);
$main = $config['DATABASE'] ?? [];
foreach (['HOSTNAME', 'HOSTPORT', 'DATABASE', 'USERNAME', 'PASSWORD'] as $key) {
    if (empty($main[$key])) throw new RuntimeException('Missing approved dev setting');
}
$pdo = new PDO('mysql:host=' . $main['HOSTNAME'] . ';port=' . $main['HOSTPORT']
    . ';dbname=' . $main['DATABASE'] . ';charset=' . ($main['CHARSET'] ?? 'utf8'),
    $main['USERNAME'], $main['PASSWORD'], [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_EMULATE_PREPARES => false,
    ]);
if ((string)$pdo->query('SELECT DATABASE()')->fetchColumn() !== (string)$main['DATABASE']) {
    throw new RuntimeException('Dev schema mismatch');
}
$identity = (string)$pdo->query(
    "SELECT CONCAT(@@server_uuid,'|',@@hostname,'|',@@port,'|',DATABASE())"
)->fetchColumn();
$q1 = $pdo->prepare("SELECT COUNT(*) FROM yoshop_ai_conversation_session "
    . "WHERE store_id=10001 AND is_delete=0 AND (ai_user_id LIKE 'CDX%' OR ai_user_id LIKE 'POC%')");
$q1->execute();
$q2 = $pdo->prepare("SELECT COUNT(*) FROM yoshop_ai_conversation "
    . "WHERE store_id=10001 AND (user_id LIKE 'CDX%' OR user_id LIKE 'POC%')");
$q2->execute();
$meta = $pdo->prepare('SELECT TABLE_NAME,COLUMN_NAME,DATA_TYPE,IS_NULLABLE,COLUMN_DEFAULT,EXTRA '
    . 'FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=? '
    . "AND TABLE_NAME IN ('yoshop_ai_conversation_session','yoshop_ai_conversation') "
    . 'ORDER BY TABLE_NAME,ORDINAL_POSITION');
$meta->execute([$main['DATABASE']]);
$columns = $meta->fetchAll(PDO::FETCH_ASSOC);
echo json_encode(['source' => 'ai-api-local-dev-mysql',
    'database_fingerprint' => hash('sha256', $identity),
    'synthetic_session_rows' => (int)$q1->fetchColumn(),
    'synthetic_message_rows' => (int)$q2->fetchColumn(),
    'columns' => $columns],
    JSON_UNESCAPED_SLASHES), PHP_EOL;
