<?php

declare(strict_types=1);

$dialect = getenv('POC_DIALECT');
if (!in_array($dialect, ['mysql', 'dm'], true)) exit(2);
$host = getenv('POC_HOST');
$port = getenv('POC_PORT');
$schema = getenv('POC_SCHEMA');
$dsn = $dialect === 'dm'
    ? "dm:host=$host;port=$port;schema=$schema"
    : "mysql:host=$host;port=$port;dbname=$schema;charset=utf8";
$pdo = new PDO($dsn, getenv('POC_USER'), getenv('POC_PASSWORD'),
    [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
if ($dialect === 'mysql') {
    $row = $pdo->query("SELECT CHARACTER_SET_NAME,COLLATION_NAME,CHARACTER_MAXIMUM_LENGTH"
        . " FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=DATABASE()"
        . " AND TABLE_NAME='ydy_device_weight_event' AND COLUMN_NAME='operator_name'")
        ->fetch(PDO::FETCH_ASSOC) ?: [];
    $connection = $pdo->query('SELECT @@character_set_client,@@character_set_connection')
        ->fetch(PDO::FETCH_NUM);
    echo json_encode(['dialect' => 'mysql', 'column_charset' => $row['CHARACTER_SET_NAME'] ?? '',
        'column_collation' => $row['COLLATION_NAME'] ?? '',
        'client_charset' => $connection[0] ?? '', 'connection_charset' => $connection[1] ?? '']) . PHP_EOL;
} else {
    $row = $pdo->query("SELECT DATA_TYPE,CHAR_LENGTH,CHAR_USED FROM USER_TAB_COLUMNS"
        . " WHERE TABLE_NAME='YDY_DEVICE_WEIGHT_EVENT' AND COLUMN_NAME='OPERATOR_NAME'")
        ->fetch(PDO::FETCH_ASSOC) ?: [];
    echo json_encode(['dialect' => 'dm', 'column_metadata' => array_change_key_case($row)]) . PHP_EOL;
}
