namespace ZB.MOM.WW.ScadaBridge.Commons.Messages.Management; public record MgmtDeployArtifactsCommand(int? SiteId = null); /// /// Deploys every deployable instance at one site in a single operation. /// /// /// Distinct from , which ships the /// SYSTEM-WIDE artifact sets (shared scripts, external systems, DB/data /// connections) to a site. This command deploys the site's INSTANCE /// configurations — the same per-instance pipeline /// MgmtDeployInstanceCommand runs, batched. /// /// /// /// Not all-or-nothing: each instance keeps its own deployment id, revision hash, /// operation lock and status record, and a failure on one is reported as a failed /// row while the rest proceed. Individually retryable via the single-instance /// deploy. Additive contract; new fields go on the end with a default. /// /// /// Database id of the target site. Required — this command is never fleet-wide. /// /// Deploy every deployable instance even when its flattened config already matches /// the revision the site is running. Default : an unchanged /// instance is skipped and reported in the summary's SkippedInstances, /// because a redeploy resets static attribute overrides and native alarm state at /// the site. Set it when central's recorded state cannot be trusted — a site whose /// data volume was restored or whose node was rebuilt looks up-to-date from central /// and needs the push anyway. Never overrides the Disabled skip. /// public record MgmtDeploySiteCommand(int SiteId, bool Force = false); public record QueryDeploymentsCommand(int? InstanceId = null, string? Status = null, int Page = 1, int PageSize = 50); /// /// Result wrapper for . /// /// /// The handler used to return a bare row array. It cannot any more: the page size /// is now BOUNDED (a non-positive PageSize no longer means "unlimited" — /// deferred-work register row 87), and a bounded page without a total is a silent /// truncation. is what lets a caller tell "that is all of /// them" from "there is more, ask for page 2". Mirrors /// AuditLogQueryResult / SecuredWriteListResult, the other paged /// management query results. /// /// /// /// and echo the values the server /// actually applied, which are not necessarily the ones requested: both are /// floored/clamped/defaulted server-side, so the echo is the only way a caller /// learns the effective slice. Additive contract; new fields go on the end with a /// default. /// /// /// The requested page of deployment rows, newest first. /// Total rows matching the filter across all pages. /// The 1-based page number actually served. /// The page size actually applied. public record DeploymentQueryResult( IReadOnlyList Deployments, int TotalCount, int Page, int PageSize); public record GetDeploymentDiffCommand(int InstanceId);