feat(managementservice): MgmtDeployArea — Deployer-only, scoped by the area's owning site (fail-closed on an unknown area), long-running like MgmtDeploySite (Gitea #40)

This commit is contained in:
Joseph Doherty
2026-10-22 14:10:53 -04:00
parent eb1c9ea7f9
commit f72c72c52f
7 changed files with 154 additions and 5 deletions
@@ -31,6 +31,21 @@ public record MgmtDeployArtifactsCommand(int? SiteId = null);
/// and needs the push anyway. Never overrides the Disabled skip.
/// </param>
public record MgmtDeploySiteCommand(int SiteId, bool Force = false);
/// <summary>
/// Bulk-deploys every instance in one area SUBTREE — the area plus every area
/// nested beneath it at any depth — with exactly the rules of
/// <see cref="MgmtDeploySiteCommand"/>: Disabled instances are always skipped,
/// up-to-date ones are skipped unless <see cref="Force"/> is set, and the batch is
/// not all-or-nothing. Answers with the same site deployment summary. Deployer-only,
/// site-scoped by the area's owning site (Gitea #40).
/// </summary>
/// <param name="AreaId">Database id of the subtree's root area.</param>
/// <param name="Force">
/// Redeploy instances whose config already matches the deployed revision. Never
/// overrides the Disabled skip. Same meaning as <see cref="MgmtDeploySiteCommand.Force"/>.
/// </param>
public record MgmtDeployAreaCommand(int AreaId, bool Force = false);
public record QueryDeploymentsCommand(int? InstanceId = null, string? Status = null, int Page = 1, int PageSize = 50);
/// <summary>