namespace ZB.MOM.WW.ScadaBridge.Commons.Messages.Management;

public record ListSitesCommand;
public record GetSiteCommand(int SiteId);
public record CreateSiteCommand(string Name, string SiteIdentifier, string? Description, string? NodeAAddress = null, string? NodeBAddress = null, string? GrpcNodeAAddress = null, string? GrpcNodeBAddress = null);
public record UpdateSiteCommand(int SiteId, string Name, string? Description, string? NodeAAddress = null, string? NodeBAddress = null, string? GrpcNodeAAddress = null, string? GrpcNodeBAddress = null);
public record DeleteSiteCommand(int SiteId);
public record ListAreasCommand(int SiteId);
public record CreateAreaCommand(int SiteId, string Name, int? ParentAreaId);
public record DeleteAreaCommand(int AreaId);
public record UpdateAreaCommand(int AreaId, string Name);

/// <summary>
/// Re-parents an area within its own site. <c>NewParentAreaId == null</c> moves the
/// area to the site root. Rejected by the handler for self-parent, descendant-parent
/// (cycle), cross-site parent, and sibling name collision at the target level.
/// </summary>
public record MoveAreaCommand(int AreaId, int? NewParentAreaId);
