namespace ZB.MOM.WW.GalaxyRepository;

/// <summary>
///     A serializable point-in-time copy of the Galaxy Repository browse data.
///     Holds the raw hierarchy and attribute rowsets — not the materialized
///     protobuf objects — so the restore path runs the exact same
///     materialization as a live refresh. Persisted by
///     <see cref="IGalaxyHierarchySnapshotStore"/> after a successful refresh
///     and reloaded at startup when the Galaxy database is unreachable.
/// </summary>
/// <param name="LastDeployTime">
///     The <c>galaxy.time_of_last_deploy</c> the rowsets were pulled at, or
///     <see langword="null"/> when the Galaxy table reported no deploy. A later
///     live refresh that observes this same timestamp can promote the restored
///     entry to healthy without re-running the heavy queries.
/// </param>
/// <param name="SavedAt">UTC wall-clock when the snapshot was written to disk.</param>
/// <param name="Hierarchy">The persisted object-hierarchy rowset.</param>
/// <param name="Attributes">The persisted attribute rowset.</param>
public sealed record GalaxyHierarchySnapshot(
    DateTimeOffset? LastDeployTime,
    DateTimeOffset SavedAt,
    IReadOnlyList<GalaxyHierarchyRow> Hierarchy,
    IReadOnlyList<GalaxyAttributeRow> Attributes);
