<?php
declare(strict_types=1);
$lane=$argv[1]??'';
if(!in_array($lane,['B','C'],true))exit(78);
if($lane==='B'){
    $config=parse_ini_file('/Users/wiscourper/Documents/workspace/zhct/zhctproject/ai_api/.env.local',true,INI_SCANNER_RAW)['DATABASE'];
    $pdo=new PDO('mysql:host='.$config['HOSTNAME'].';port='.$config['HOSTPORT'].';dbname='.$config['DATABASE'],$config['USERNAME'],$config['PASSWORD'],[PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION,PDO::ATTR_CASE=>PDO::CASE_LOWER]);
}else{
    if(getenv('POC_AI_HOST')!=='127.0.0.1'||getenv('POC_AI_PORT')!=='5238'||getenv('POC_AI_SCHEMA')!=='AIZHCT_APP')throw new RuntimeException('Nonproduction identity drift');
    $pdo=new PDO('dm:host='.getenv('POC_AI_HOST').';port='.getenv('POC_AI_PORT').';schema='.getenv('POC_AI_SCHEMA'),getenv('POC_AI_USER'),getenv('POC_AI_PASSWORD'),[PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION,PDO::ATTR_CASE=>PDO::CASE_LOWER]);
}
$q=static function($sql)use($pdo):array{$s=$pdo->query($sql);$rows=$s->fetchAll(PDO::FETCH_ASSOC);foreach($rows as &$r)foreach($r as &$v)if(is_resource($v))$v=stream_get_contents($v);return $rows;};
$result=['lane'=>$lane,'read_only_metadata'=>true,'tables'=>[]];
foreach(['goods_spec_rel','spec','spec_value'] as $name){
    $t=$lane==='B'?'yoshop_'.$name:strtoupper('yoshop_'.$name);
    if($lane==='B'){
        $columns=$q('SHOW COLUMNS FROM '.$t);$indexes=$q('SHOW INDEX FROM '.$t);$triggers=$q("SHOW TRIGGERS WHERE `Table`='".$t."'");
        $fks=$q("SELECT COLUMN_NAME,CONSTRAINT_NAME,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='".$t."' AND REFERENCED_TABLE_NAME IS NOT NULL");
        $result['tables'][$name]=['columns'=>$columns,'indexes'=>$indexes,'trigger_count'=>count($triggers),'foreign_keys'=>$fks];
    }else{
        $result['tables'][$name]=[
            'columns'=>$q("SELECT COLUMN_NAME,DATA_TYPE,DATA_LENGTH,CHAR_LENGTH,NULLABLE,DATA_DEFAULT FROM USER_TAB_COLUMNS WHERE TABLE_NAME='".$t."' ORDER BY COLUMN_ID"),
            'constraints'=>$q("SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME='".$t."'"),
            'constraint_columns'=>$q("SELECT * FROM USER_CONS_COLUMNS WHERE TABLE_NAME='".$t."'"),
            'indexes'=>$q("SELECT INDEX_NAME,TABLE_NAME,UNIQUENESS FROM USER_INDEXES WHERE TABLE_NAME='".$t."'"),
            'trigger_count'=>count($q("SELECT TRIGGER_NAME FROM USER_TRIGGERS WHERE TABLE_NAME='".$t."'")),
            'table_definition'=>$q("CALL SP_TABLEDEF('AIZHCT_APP','".$t."')"),
        ];
    }
}
echo json_encode($result,JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES),"\n";
