using Prefab.Domain.Common; namespace Prefab.Domain.Events; /// /// Event raised whenever a generic attribute is added, updated, or removed from an entity. /// /// The entity that owns the attribute. /// The attribute key. /// The attribute value involved in the change. /// Indicates the type of mutation performed. public record GenericAttributeChangedEvent(object Entity, string Key, object? Value, GenericAttributeChangeType ChangeType) : Event; /// /// Represents the types of mutations that can occur for a generic attribute. /// public enum GenericAttributeChangeType { /// Attribute was added for the first time. Add, /// Attribute was updated with a new value. Update, /// Attribute was removed. Remove }