20 lines
1.2 KiB
TypeScript
20 lines
1.2 KiB
TypeScript
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<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]));
|
|
}
|