compare: expose canonical history logs
This commit is contained in:
@@ -191,6 +191,7 @@ function comparisonTurnStateSnapshot(array $request): array
|
|||||||
$logAfterId = $observe['logAfterId'] ?? 0;
|
$logAfterId = $observe['logAfterId'] ?? 0;
|
||||||
$messageAfterId = $observe['messageAfterId'] ?? 0;
|
$messageAfterId = $observe['messageAfterId'] ?? 0;
|
||||||
$includeNationHistoryLogs = $observe['includeNationHistoryLogs'] ?? false;
|
$includeNationHistoryLogs = $observe['includeNationHistoryLogs'] ?? false;
|
||||||
|
$includeGlobalHistoryLogs = $observe['includeGlobalHistoryLogs'] ?? false;
|
||||||
$generalCooldownSelectors = comparisonGeneralCooldownSelectors(
|
$generalCooldownSelectors = comparisonGeneralCooldownSelectors(
|
||||||
$observe['generalCooldowns'] ?? [],
|
$observe['generalCooldowns'] ?? [],
|
||||||
'generalCooldowns',
|
'generalCooldowns',
|
||||||
@@ -214,6 +215,9 @@ function comparisonTurnStateSnapshot(array $request): array
|
|||||||
if (!is_bool($includeNationHistoryLogs)) {
|
if (!is_bool($includeNationHistoryLogs)) {
|
||||||
throw new \InvalidArgumentException('includeNationHistoryLogs must be a boolean');
|
throw new \InvalidArgumentException('includeNationHistoryLogs must be a boolean');
|
||||||
}
|
}
|
||||||
|
if (!is_bool($includeGlobalHistoryLogs)) {
|
||||||
|
throw new \InvalidArgumentException('includeGlobalHistoryLogs must be a boolean');
|
||||||
|
}
|
||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
$game = KVStorage::getStorage($db, 'game_env');
|
$game = KVStorage::getStorage($db, 'game_env');
|
||||||
@@ -486,14 +490,24 @@ function comparisonTurnStateSnapshot(array $request): array
|
|||||||
if ((int)$row['general_id'] !== 0 && !in_array((int)$row['general_id'], $generalIds, true)) {
|
if ((int)$row['general_id'] !== 0 && !in_array((int)$row['general_id'], $generalIds, true)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
$generalId = (int)$row['general_id'];
|
||||||
|
$category = (string)$row['log_type'];
|
||||||
|
if ($category === 'battle') {
|
||||||
|
$category = 'battle_detail';
|
||||||
|
} elseif ($generalId === 0) {
|
||||||
|
$category = 'summary';
|
||||||
|
}
|
||||||
$logs[] = comparisonPickRow($row, [
|
$logs[] = comparisonPickRow($row, [
|
||||||
'id' => 'id',
|
'id' => 'id',
|
||||||
'generalId' => 'general_id',
|
'generalId' => 'general_id',
|
||||||
'category' => 'log_type',
|
|
||||||
'year' => 'year',
|
'year' => 'year',
|
||||||
'month' => 'month',
|
'month' => 'month',
|
||||||
'text' => 'text',
|
'text' => 'text',
|
||||||
]);
|
]) + [
|
||||||
|
'scope' => $generalId === 0 ? 'system' : 'general',
|
||||||
|
'category' => $category,
|
||||||
|
'nationId' => null,
|
||||||
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($includeNationHistoryLogs && $nationIds !== []) {
|
if ($includeNationHistoryLogs && $nationIds !== []) {
|
||||||
@@ -514,6 +528,23 @@ function comparisonTurnStateSnapshot(array $request): array
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($includeGlobalHistoryLogs) {
|
||||||
|
foreach ($db->query(
|
||||||
|
'SELECT id, nation_id, year, month, text FROM world_history WHERE nation_id = 0 ORDER BY id',
|
||||||
|
) as $row) {
|
||||||
|
$logs[] = comparisonPickRow($row, [
|
||||||
|
'id' => 'id',
|
||||||
|
'nationId' => 'nation_id',
|
||||||
|
'year' => 'year',
|
||||||
|
'month' => 'month',
|
||||||
|
'text' => 'text',
|
||||||
|
]) + [
|
||||||
|
'scope' => 'system',
|
||||||
|
'category' => 'history',
|
||||||
|
'generalId' => null,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$messages = array_map(
|
$messages = array_map(
|
||||||
static fn(array $row): array => comparisonPickRow(
|
static fn(array $row): array => comparisonPickRow(
|
||||||
@@ -563,6 +594,7 @@ function comparisonTurnStateSnapshot(array $request): array
|
|||||||
'messages' => $messages,
|
'messages' => $messages,
|
||||||
'watermarks' => [
|
'watermarks' => [
|
||||||
'logId' => (int)($db->queryFirstField('SELECT COALESCE(MAX(id), 0) FROM general_record') ?? 0),
|
'logId' => (int)($db->queryFirstField('SELECT COALESCE(MAX(id), 0) FROM general_record') ?? 0),
|
||||||
|
'historyLogId' => (int)($db->queryFirstField('SELECT COALESCE(MAX(id), 0) FROM world_history') ?? 0),
|
||||||
'messageId' => (int)($db->queryFirstField('SELECT COALESCE(MAX(id), 0) FROM message') ?? 0),
|
'messageId' => (int)($db->queryFirstField('SELECT COALESCE(MAX(id), 0) FROM message') ?? 0),
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|||||||
Reference in New Issue
Block a user