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 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 { 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])); }