<?php

declare(strict_types=1);

if(count($argv)!==2||($argv[1]??'')!=='--preflight'){
    echo json_encode(['status'=>'default_deny','connected'=>false,'http_sent'=>false,'dml'=>false]),PHP_EOL;exit(78);
}
$root='/Users/wiscourper/Documents/workspace/zhct/zhctproject/store';
$hashes=['application/p/controller/AccountSetting.php'=>'65cf66aaa8866ec072841bcd4453d873f787d23c5a4fdb9036be9c3a7566fb66','application/p/logic/AccountSetting.php'=>'174036b5817358b659e086d9d4136e1bfc5bd3e8c75930e8e286c7341d6583e2','application/p/logic/AccountSettingPolicy.php'=>'385e3fa6a025d24a6cf8e7285e0a7f85990637116930b9024471378b87fd75ca'];
foreach($hashes as$file=>$sha)if(hash_file('sha256',$root.'/'.$file)!==$sha)throw new RuntimeException('Source drift');
$cfg=require$root.'/application/config/local/database.php';
$db=new PDO('mysql:host='.$cfg['hostname'].';port='.($cfg['hostport']??3306).';dbname='.$cfg['database'].';charset='.($cfg['charset']??'utf8'),$cfg['username'],$cfg['password'],[PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION,PDO::ATTR_CASE=>PDO::CASE_LOWER]);
$metadata=$db->query("SELECT COLUMN_NAME,DATA_TYPE,COLUMN_TYPE,IS_NULLABLE,COLUMN_DEFAULT,EXTRA FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ydy_config' ORDER BY ORDINAL_POSITION")->fetchAll(PDO::FETCH_ASSOC);
$required=['ID','CONFIG_KEY','CONFIG_VALUE','CONFIG_DESC','CREATE_BY','STATUS','CREATE_TIME','UPDATE_TIME','RESTAURANT_ID','IS_SHOW','UPDATE_BY'];$names=[];foreach($metadata as$row)$names[]=strtoupper((string)$row['column_name']);foreach($required as$column)if(!in_array($column,$names,true))throw new RuntimeException('Column absent');
$stmt=$db->prepare("SELECT * FROM ydy_config WHERE CONFIG_KEY='account_deduction_order' AND RESTAURANT_ID=1 ORDER BY ID");$stmt->execute();$rows=$stmt->fetchAll(PDO::FETCH_ASSOC);$order=[];if(count($rows)===1){$order=json_decode((string)$rows[0]['config_value'],true);if(!is_array($order))$order=[];}
$trigger=(int)$db->query("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_SCHEMA=DATABASE() AND EVENT_OBJECT_TABLE='ydy_config'")->fetchColumn();
$fk=(int)$db->query("SELECT COUNT(*) FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA=DATABASE() AND (TABLE_NAME='ydy_config' OR REFERENCED_TABLE_NAME='ydy_config') AND REFERENCED_TABLE_NAME IS NOT NULL")->fetchColumn();
echo json_encode(['status'=>count($rows)===1?'shared_natural_config_present':'config_cardinality_blocked','row_count'=>count($rows),'current_order'=>$order,'row_sha'=>hash('sha256',serialize($rows)),'metadata_sha'=>hash('sha256',serialize($metadata)),'foreign_keys'=>$fk,'triggers'=>$trigger,'fixed_key'=>'account_deduction_order','fixed_restaurant_id'=>1,'http_sent'=>false,'dml'=>false]),PHP_EOL;
