using Extrudex.Domain.Base;

namespace Extrudex.Domain.Entities;

/// <summary>
/// Optional modifier/additive for a material (e.g., "Carbon Fiber", "Glass Fiber",
/// "Wood Fill", "Glow-in-the-Dark"). Not every spool has a modifier.
/// </summary>
public class MaterialModifier : AuditableEntity
{
    /// <summary>
    /// Human-readable name of the modifier (e.g., "Carbon Fiber", "Wood Fill").
    /// </summary>
    public string Name { get; set; } = string.Empty;

    /// <summary>
    /// Foreign key to the parent MaterialBase. A modifier belongs to exactly one base material.
    /// </summary>
    public Guid MaterialBaseId { get; set; }

    /// <summary>
    /// Navigation to the parent MaterialBase.
    /// </summary>
    public MaterialBase MaterialBase { get; set; } = null!;

    /// <summary>
    /// Navigation collection of spools with this modifier.
    /// </summary>
    public ICollection<Spool> Spools { get; set; } = new List<Spool>();
}