namespace AyCode.Core.Serializers.Toons;

/// <summary>
/// Defines type relationship constants for Toon serialization.
/// These string values are directly used in the serialized output.
/// </summary>
public static class ToonTypeRelation
{
    /// <summary>
    /// No special type relationship.
    /// </summary>
    public const string None = "";

    /// <summary>
    /// This type is a base class/interface for other types.
    /// Example: Order is base-of OrderDto
    /// </summary>
    public const string BaseOf = "base-of";

    public const string Entity = "entity";
    /// <summary>
    /// This type is derived from another type.
    /// Example: OrderDto is derived-from Order
    /// </summary>
    public const string DerivedFrom = "derived-from";

    /// <summary>
    /// This type is a Data Transfer Object representation of another type.
    /// Example: OrderDto is dto-of Order
    /// </summary>
    public const string DtoOf = "dto-of";

    /// <summary>
    /// This type is a Model representation of another type.
    /// Example: OrderModel is model-of Order
    /// </summary>
    public const string ModelOf = "model-of";

    /// <summary>
    /// This type is a ViewModel representation of another type.
    /// Example: OrderViewModel is view-model-of Order
    /// </summary>
    public const string ViewModelOf = "view-model-of";

    /// <summary>
    /// This type is a projection/subset of another type.
    /// Example: OrderSummary is projection-of Order
    /// </summary>
    public const string ProjectionOf = "projection-of";
}
