merge: create missing fixture generals
This commit is contained in:
@@ -176,12 +176,29 @@ function comparisonApplyTurnFixtureSetup(mixed $setup): void
|
||||
if ($generalIds === [] || $nationIds === []) {
|
||||
throw new \InvalidArgumentException('isolateWorld requires generals and nations');
|
||||
}
|
||||
$generalTemplate = $db->queryFirstRow(
|
||||
'SELECT * FROM general WHERE no IN %li ORDER BY no LIMIT 1',
|
||||
$generalIds,
|
||||
);
|
||||
if ($generalTemplate === null) {
|
||||
throw new \InvalidArgumentException('isolateWorld requires at least one existing fixture general');
|
||||
}
|
||||
$db->delete('general_turn', 'general_id NOT IN %li', $generalIds);
|
||||
$db->delete('rank_data', 'general_id NOT IN %li', $generalIds);
|
||||
$db->delete('nation_turn', 'nation_id NOT IN %li', $nationIds);
|
||||
$db->delete('troop', '1 = 1');
|
||||
$db->delete('diplomacy', '1 = 1');
|
||||
$db->delete('general', 'no NOT IN %li', $generalIds);
|
||||
foreach ($generalIds as $generalId) {
|
||||
if ($db->queryFirstField('SELECT no FROM general WHERE no = %i', $generalId) !== null) {
|
||||
continue;
|
||||
}
|
||||
$newGeneral = $generalTemplate;
|
||||
$newGeneral['no'] = $generalId;
|
||||
$newGeneral['owner'] = 0;
|
||||
$newGeneral['name'] = "fixture-general-{$generalId}";
|
||||
$db->insert('general', $newGeneral);
|
||||
}
|
||||
$db->delete('nation', 'nation NOT IN %li', $nationIds);
|
||||
$db->update('city', [
|
||||
'nation' => 0,
|
||||
|
||||
Reference in New Issue
Block a user