<?php
require __DIR__.'/oracle.php';$gate=json_decode(file_get_contents(__DIR__.'/private-fixture-gate.json'),true);$check($gate['passed']===true,'Complete fixture gate');$check(!file_exists(__DIR__.'/private-fixture-own.json'),'Only one preparation write transaction');$lease=json_decode(file_get_contents(__DIR__.'/private-fixture-lease.json'),true);$write=json_decode(file_get_contents(__DIR__.'/private-fixture-write.json'),true);$natural=json_decode(file_get_contents(__DIR__.'/private-fixture-natural.json'),true);$staffNow=$q('SELECT ID,UUID,NAME,AI_USER_ID,IS_SHOW,JOB_STATUS FROM '.$p.'staff WHERE UUID=?',[$lease['staff']['uuid']]);$check($staffNow===[$lease['staff']]&&$actor===$actorNow(),'Reference unchanged');foreach($natural as $name=>$rows)$check($rows===$q('SELECT * FROM '.$p.$name.' ORDER BY ID'),'Natural table unchanged');
$db->beginTransaction();$own=[];try{foreach($write as $name=>$rows){foreach($rows as $row){$check((int)$q('SELECT COUNT(*) AS CNT FROM '.$p.$name.' WHERE UUID=?',[$row['uuid']])[0]['cnt']===0,'Own UUID absent');$keys=array_keys($row);$s=$db->prepare('INSERT INTO '.$p.$name.' ('.implode(',',array_map('strtoupper',$keys)).') VALUES ('.implode(',',array_fill(0,count($keys),'?')).')');$s->execute(array_values($row));$check($s->rowCount()===1,'Exactly one row each INSERT');$saved=$q('SELECT * FROM '.$p.$name.' WHERE UUID=?',[$row['uuid']]);$check(count($saved)===1&&(int)$saved[0]['id']>0,'Unique generated PK');foreach($row as $key=>$value){$actual=$saved[0][$key];$check($actual===$value||($lane==='C'&&$key==='create_time'&&$actual===$value.'.000000'),'Full value persisted '.$key);}$own[$name][]=$saved[0];}}
foreach($natural as $name=>$rows){$ids=array_column($own[$name],'id');$args=implode(',',array_fill(0,count($ids),'?'));$check($rows===$q('SELECT * FROM '.$p.$name.' WHERE ID NOT IN ('.$args.') ORDER BY ID',$ids),'Natural exact PK exclusion');}$check($actor===$actorNow(),'Actor unchanged');$check($staffNow===$q('SELECT ID,UUID,NAME,AI_USER_ID,IS_SHOW,JOB_STATUS FROM '.$p.'staff WHERE UUID=?',[$lease['staff']['uuid']]),'Marked Staff unchanged');$db->commit();$save('private-fixture-own.json',$own);echo json_encode(['lane'=>$lane,'fixture_INSERTs'=>3,'retained'=>true,'own_ids'=>array_map(static function($r){return array_column($r,'id');},$own),'full_value_sha256'=>$hash($own),'natural_unchanged'=>true,'actor_staff_unchanged'=>true]),"\n";
}catch(Throwable $e){if($db->inTransaction())$db->rollBack();$save('private-fixture-insert-error.json',['class'=>get_class($e),'message'=>$e->getMessage()]);throw $e;}
