namespace ZB.MOM.WW.GalaxyRepository;

/// <summary>
///     One row from <see cref="GalaxyRepository.GetHierarchyAsync"/>: a deployed Galaxy
///     <c>gobject</c> with its hierarchy parent and template-derivation chain.
/// </summary>
public sealed class GalaxyHierarchyRow
{
    /// <summary>Gets the Galaxy object identifier.</summary>
    public int GobjectId { get; init; }

    /// <summary>Gets the tag name.</summary>
    public string TagName { get; init; } = string.Empty;

    /// <summary>Gets the contained name.</summary>
    public string ContainedName { get; init; } = string.Empty;

    /// <summary>Gets the browse name.</summary>
    public string BrowseName { get; init; } = string.Empty;

    /// <summary>Gets the parent Galaxy object identifier.</summary>
    public int ParentGobjectId { get; init; }

    /// <summary>Gets a value indicating whether this is an area.</summary>
    public bool IsArea { get; init; }

    /// <summary>Gets the category identifier.</summary>
    public int CategoryId { get; init; }

    /// <summary>Gets the Galaxy object identifier of the host.</summary>
    public int HostedByGobjectId { get; init; }

    /// <summary>Gets the template derivation chain.</summary>
    public IReadOnlyList<string> TemplateChain { get; init; } = Array.Empty<string>();
}
