using ZB.MOM.WW.OtOpcUa.Configuration.Enums;
namespace ZB.MOM.WW.OtOpcUa.Configuration.Entities;
///
/// Top-level deployment unit. 1 or 2 members.
/// Per config-db-schema.md ServerCluster table.
///
public sealed class ServerCluster
{
/// Stable logical ID, e.g. "LINE3-OPCUA".
public required string ClusterId { get; set; }
public required string Name { get; set; }
/// UNS level 1. Canonical org value: "zb" per decision #140.
public required string Enterprise { get; set; }
/// UNS level 2, e.g. "warsaw-west".
public required string Site { get; set; }
public byte NodeCount { get; set; }
public required RedundancyMode RedundancyMode { get; set; }
public bool Enabled { get; set; } = true;
public string? Notes { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public required string CreatedBy { get; set; }
public DateTime? ModifiedAt { get; set; }
public string? ModifiedBy { get; set; }
// Navigation
public ICollection Nodes { get; set; } = [];
public ICollection Namespaces { get; set; } = [];
public ICollection Generations { get; set; } = [];
}