Avoid lifecycle history scans in fleet snapshots
This commit is contained in:
@@ -3,6 +3,17 @@ import { db } from '../db/index.js';
|
||||
/** Reports from before the latest lifecycle submission describe the old process. */
|
||||
export function latestGameSubmission(server: string): string | null {
|
||||
return (db().prepare(`SELECT MAX(at) AS at FROM (
|
||||
SELECT submitted_at AS at FROM server_deployments WHERE server=? AND server_deleted_at IS NULL AND action IN ('create','start','restart','rebuild')
|
||||
SELECT MAX(submitted_at) AS at FROM server_deployments WHERE server=? AND server_deleted_at IS NULL AND action IN ('create','start','restart','rebuild')
|
||||
UNION ALL SELECT requested_at AS at FROM restart_rollout WHERE server=?)`).get(server, server) as { at: string | null }).at;
|
||||
}
|
||||
|
||||
/** Look up each registered server through the covering submission index. */
|
||||
export function latestGameSubmissions(): Map<string, string | null> {
|
||||
const rows = db().prepare(`SELECT server, MAX(at) AS at FROM (
|
||||
SELECT s.name AS server, (SELECT MAX(submitted_at) FROM server_deployments
|
||||
WHERE server=s.name AND server_deleted_at IS NULL AND action IN ('create','start','restart','rebuild')) AS at
|
||||
FROM servers s
|
||||
UNION ALL SELECT server, requested_at AS at FROM restart_rollout) GROUP BY server`).all() as
|
||||
{ server: string; at: string | null }[];
|
||||
return new Map(rows.map(row => [row.server, row.at]));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user