Rebuild beta and campaign file activations
This commit is contained in:
@@ -190,14 +190,17 @@ export function listServers(): ServerRow[] {
|
||||
}
|
||||
|
||||
/** Beta ownership lasts until explicit closure, regardless of test outcome or stage. */
|
||||
export function activeBetaRemovalBlocker(server: string): string | null {
|
||||
export function activeBetaRemovalBlocker(server: string, activationId?: string): string | null {
|
||||
const betas = db()
|
||||
.prepare(
|
||||
`SELECT b.id FROM beta_servers bs JOIN betas b ON b.id = bs.beta_id
|
||||
WHERE bs.server = ? AND bs.server_deleted_at IS NULL AND b.state IN ('running', 'ready-promote')
|
||||
AND NOT EXISTS (SELECT 1 FROM provisioning_sources s WHERE s.operation_id=?
|
||||
AND s.kind='beta' AND s.source_id=CAST(b.id AS TEXT) AND s.server=bs.server
|
||||
AND bs.provisioning_id=s.operation_id)
|
||||
ORDER BY b.id`
|
||||
)
|
||||
.all(server) as { id: number }[];
|
||||
.all(server, activationId ?? null) as { id: number }[];
|
||||
if (!betas.length) return null;
|
||||
return `${server} is linked to active beta${betas.length === 1 ? '' : 's'} ${betas.map((beta) => '#' + beta.id).join(', ')}. Promote or roll back the beta${betas.length === 1 ? '' : 's'} before destroying or rebuilding this server.`;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user