table('gl_journals')->count()!==27)throw new LogicException('Expected27 accepted journals'); foreach(['host'=>['database'=>$s['env']['DB_DATABASE'],'username'=>$s['env']['DB_USERNAME'],'password'=>$s['env']['DB_PASSWORD']],'native'=>$s['nativeConnection']]as$name=>$c){$dump=new Symfony\Component\Process\Process(['C:/Program Files/PostgreSQL/17/bin/pg_dump.exe','-h','127.0.0.1','-p','55439','-U',$c['username'],'-d',$c['database'],'--format=custom','--no-owner','--no-privileges','--file',$work.'/'.$name.'-before-iva.dump'],$repo,['PGPASSWORD'=>$c['password']]);$dump->setTimeout(120);$dump->mustRun();} $before=[];foreach(['si_invoices','sd_outputs','sd_versions','sr_records','sr_effects','cash_events','sf_proposals','sf_decisions','sf_activation_events','service_calculation_results','a_clients','permission_grants']as$t)$before['host'][$t]=$host->table($t)->orderBy('id')->get()->toJson();foreach(['stock_movements','gl_journals','gl_periods']as$t)$before['native'][$t]=$native->table($t)->orderBy('id')->get()->toJson();$before['binding']=hash_file('sha256',$s['root'].'/binding.json');file_put_contents($work.'/preservation-private.json',json_encode($before));file_put_contents($s['root'].'/iva-backup-pointer.json',json_encode(['root'=>$work]));echo json_encode(['passed'=>true,'private_backup'=>$work,'database_writes'=>0]).PHP_EOL;