Files
SGF/scripts/sgf-analysis-backup.php
T
2026-11-11 09:00:17 +02:00

5 lines
1.6 KiB
PHP

<?php
$book='8085';require __DIR__.'/sgf-single-bootstrap.php';if(is_file($s['root'].'/analysis-backup-pointer.json'))throw new LogicException('Preserve existing IVA baseline');if($native->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-analysis.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','fx_versions','fx_commands','fr_events','fr_calculations','fr_commands','br_statements','br_events','br_commands','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'].'/analysis-backup-pointer.json',json_encode(['root'=>$work]));echo json_encode(['passed'=>true,'private_backup'=>$work,'database_writes'=>0]).PHP_EOL;