merge: create missing fixture generals
This commit is contained in:
@@ -176,12 +176,29 @@ function comparisonApplyTurnFixtureSetup(mixed $setup): void
|
|||||||
if ($generalIds === [] || $nationIds === []) {
|
if ($generalIds === [] || $nationIds === []) {
|
||||||
throw new \InvalidArgumentException('isolateWorld requires generals and nations');
|
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('general_turn', 'general_id NOT IN %li', $generalIds);
|
||||||
$db->delete('rank_data', '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('nation_turn', 'nation_id NOT IN %li', $nationIds);
|
||||||
$db->delete('troop', '1 = 1');
|
$db->delete('troop', '1 = 1');
|
||||||
$db->delete('diplomacy', '1 = 1');
|
$db->delete('diplomacy', '1 = 1');
|
||||||
$db->delete('general', 'no NOT IN %li', $generalIds);
|
$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->delete('nation', 'nation NOT IN %li', $nationIds);
|
||||||
$db->update('city', [
|
$db->update('city', [
|
||||||
'nation' => 0,
|
'nation' => 0,
|
||||||
|
|||||||
Reference in New Issue
Block a user