namespace ZB.MOM.WW.GalaxyRepository;

/// <summary>One row from <see cref="GalaxyRepository.GetAttributesAsync"/>.</summary>
public sealed class GalaxyAttributeRow
{
    /// <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 attribute name.</summary>
    public string AttributeName { get; init; } = string.Empty;

    /// <summary>Gets the full tag reference.</summary>
    public string FullTagReference { get; init; } = string.Empty;

    /// <summary>Gets the MXAccess data type code.</summary>
    public int MxDataType { get; init; }

    /// <summary>Gets the data type name.</summary>
    public string? DataTypeName { get; init; }

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

    /// <summary>Gets the array dimension, if applicable.</summary>
    public int? ArrayDimension { get; init; }

    /// <summary>Gets the MXAccess attribute category code.</summary>
    public int MxAttributeCategory { get; init; }

    /// <summary>Gets the security classification code.</summary>
    public int SecurityClassification { get; init; }

    /// <summary>Gets a value indicating whether this is historized.</summary>
    public bool IsHistorized { get; init; }

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