import { blobSize } from '$lib/server/db/file-blobs.js'; import { json, error } from '@sveltejs/kit'; import { db } from '$lib/server/db/index.js'; import { getDeployment } from '$lib/server/provisioning/index.js'; export async function GET({ params, url }: { params: { id: string }; url?: URL }) { const lifecycle = getDeployment(params.id, { events: url?.searchParams.get('events') === 'recent' ? 'recent' : 'all' }); if (lifecycle) return json(lifecycle); const dep = db() .prepare('SELECT * FROM deployments WHERE id = ?') .get(params.id) as Record | undefined; if (!dep) throw error(404, 'deployment not found'); const servers = db() .prepare('SELECT * FROM deployment_servers WHERE deployment_id = ? ORDER BY server') .all(params.id); // Don't ship blobs in the summary — the client asks for a single file when // it opens the diff viewer. const files = db() .prepare( `SELECT id, server, verb, rel_path, sha256_before, sha256_after, ${blobSize('content_before_hash')} AS size_before, ${blobSize('content_after_hash')} AS size_after FROM deployment_files WHERE deployment_id = ? ORDER BY server, rel_path` ) .all(params.id); const scripts = db() .prepare( `SELECT ds.script_id, s.name AS script_name, s.target_rel_path, ds.script_version_id, sv.version AS script_version, ds.prior_version_id, pv.version AS prior_version FROM deployment_scripts ds LEFT JOIN scripts s ON s.id = ds.script_id LEFT JOIN script_versions sv ON sv.id = ds.script_version_id LEFT JOIN script_versions pv ON pv.id = ds.prior_version_id WHERE ds.deployment_id = ? ORDER BY ds.script_id` ) .all(params.id); return json({ deployment: dep, servers, files, scripts }); }