namespace TakeoutSaaS.Shared.Abstractions.Entities;

/// <summary>
/// 审计实体基类：提供创建、更新时间以及软删除时间。
/// </summary>
public abstract class AuditableEntityBase : EntityBase, IAuditableEntity
{
    /// <summary>
    /// 创建时间（UTC）。
    /// </summary>
    public DateTime CreatedAt { get; set; }

    /// <summary>
    /// 最近一次更新时间（UTC），从未更新时为 null。
    /// </summary>
    public DateTime? UpdatedAt { get; set; }

    /// <summary>
    /// 软删除时间（UTC），未删除时为 null。
    /// </summary>
    public DateTime? DeletedAt { get; set; }

    /// <summary>
    /// 创建人用户标识，匿名或系统操作时为 null。
    /// </summary>
    public long? CreatedBy { get; set; }

    /// <summary>
    /// 最后更新人用户标识，匿名或系统操作时为 null。
    /// </summary>
    public long? UpdatedBy { get; set; }

    /// <summary>
    /// 删除人用户标识（软删除），未删除时为 null。
    /// </summary>
    public long? DeletedBy { get; set; }
}
