<?php
declare(strict_types=1);
// Read-only minimal metadata, using the already approved identity/config gate.
require '/tmp/cdx-store-menu7-'.(getenv('SM7_LANE')==='B'?'B-PDEqef':'C-Vy4WDq').'/common.php';
$db=smPdo();$dm=getenv('SM7_LANE')==='C';$out=[];
foreach(['staff','department','staff_department','dishes','recipes','initial_menu','date_menu_hardware_img'] as $t){
    $name='ydy_'.$t;$columns=smRows($db,$dm?"SELECT COLUMN_NAME,DATA_TYPE,DATA_LENGTH,DATA_PRECISION,DATA_SCALE,NULLABLE,DATA_DEFAULT FROM USER_TAB_COLUMNS WHERE TABLE_NAME=? ORDER BY COLUMN_ID":"SELECT COLUMN_NAME,COLUMN_TYPE,DATA_TYPE,IS_NULLABLE,COLUMN_DEFAULT,EXTRA,CHARACTER_MAXIMUM_LENGTH,NUMERIC_PRECISION,NUMERIC_SCALE FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=? ORDER BY ORDINAL_POSITION",[$dm?strtoupper($name):$name]);
    $fk=smRows($db,$dm?"SELECT CONSTRAINT_NAME,R_CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME=? AND CONSTRAINT_TYPE='R'":"SELECT CONSTRAINT_NAME,COLUMN_NAME,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=? AND REFERENCED_TABLE_NAME IS NOT NULL",[$dm?strtoupper($name):$name]);
    $tr=smRows($db,$dm?"SELECT TRIGGER_NAME,STATUS FROM USER_TRIGGERS WHERE TABLE_NAME=?":"SELECT TRIGGER_NAME,EVENT_MANIPULATION FROM information_schema.TRIGGERS WHERE TRIGGER_SCHEMA=DATABASE() AND EVENT_OBJECT_TABLE=?",[$dm?strtoupper($name):$name]);
    $keys=smRows($db,$dm?"SELECT c.CONSTRAINT_NAME,c.CONSTRAINT_TYPE,cc.COLUMN_NAME,cc.POSITION FROM USER_CONSTRAINTS c JOIN USER_CONS_COLUMNS cc ON cc.CONSTRAINT_NAME=c.CONSTRAINT_NAME WHERE c.TABLE_NAME=? AND c.CONSTRAINT_TYPE IN ('P','U') ORDER BY c.CONSTRAINT_NAME,cc.POSITION":"SELECT CONSTRAINT_NAME,COLUMN_NAME,ORDINAL_POSITION FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=? AND REFERENCED_TABLE_NAME IS NULL ORDER BY CONSTRAINT_NAME,ORDINAL_POSITION",[$dm?strtoupper($name):$name]);
    $out[$t]=['columns'=>$columns,'foreign_keys'=>$fk,'triggers'=>$tr,'keys'=>$keys];
}
$r=['lane'=>getenv('SM7_LANE'),'tables'=>$out,'database_writes'=>0,'new_http'=>0];smSave('correction-metadata-private.json',$r);
$summary=[];foreach($out as $t=>$v){$required=[];foreach($v['columns'] as $c){$name=strtolower($c['column_name']);$nullable=$dm?$c['nullable']==='Y':$c['is_nullable']==='YES';$default=$dm?$c['data_default']:$c['column_default'];if(!$nullable&&$default===null){$required[]=$name;}}$summary[$t]=['columns'=>count($v['columns']),'foreign_keys'=>count($v['foreign_keys']),'triggers'=>count($v['triggers']),'required_no_default'=>$required,'key_definitions'=>$v['keys']];}
echo json_encode(['lane'=>$r['lane'],'summary'=>$summary,'database_writes'=>0,'new_http'=>0]),PHP_EOL;
