<?php
declare(strict_types=1);
require __DIR__.'/common.php';
try{$db=cpPdo();$tenant=1930501010;$dm=getenv('PILOT_LANE')==='C';
foreach(['coupon','user_coupon','store','store_user'] as $table){if(cpRows($db,'SELECT store_id FROM yoshop_'.$table.' WHERE store_id=?',[$tenant])){throw new RuntimeException('Synthetic tenant collision');}}
$table=$dm?'YOSHOP_COUPON':'yoshop_coupon';$fk=cpRows($db,$dm?"SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME='YOSHOP_COUPON' AND CONSTRAINT_TYPE='R'":"SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='yoshop_coupon' AND REFERENCED_TABLE_NAME IS NOT NULL");$tr=cpRows($db,$dm?"SELECT TRIGGER_NAME FROM USER_TRIGGERS WHERE TABLE_NAME='YOSHOP_COUPON'":"SHOW TRIGGERS WHERE `Table`='yoshop_coupon'");if($fk||$tr){throw new RuntimeException('Reference side effect gate');}
$cols=cpRows($db,$dm?"SELECT COLUMN_NAME,DATA_TYPE,NULLABLE,DATA_DEFAULT FROM USER_TAB_COLUMNS WHERE TABLE_NAME='YOSHOP_COUPON' ORDER BY COLUMN_ID":"SHOW COLUMNS FROM yoshop_coupon");if(count($cols)!==24){throw new RuntimeException('Frozen coupon shape gate');}
file_put_contents(getenv('PILOT_RUNTIME').'/preflight-private.json',json_encode(['columns'=>$cols,'tenant_empty'=>true,'fk'=>0,'triggers'=>0]));echo json_encode(['status'=>'pass','tenant_empty'=>true,'coupon_columns'=>24,'foreign_keys'=>0,'triggers'=>0,'dml'=>0]),PHP_EOL;
}catch(Throwable $e){echo json_encode(['status'=>'fail','class'=>get_class($e),'file'=>basename($e->getFile()),'line'=>$e->getLine(),'code'=>(string)$e->getCode()]),PHP_EOL;exit(1);}
