using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace Lactose.Models;

/// <summary>
/// Represents a person with associated metadata and navigation properties.
/// </summary>
public class Person {
    /// <summary>
    /// Gets or sets the unique identifier for the person.
    /// </summary>
    [Key]
    public Guid Id { get; set; }

    /// <summary>
    /// Gets or sets the name of the person.
    /// </summary>
    [Column(TypeName = "VARCHAR(255)")]
    public string Name { get; set; } = string.Empty;

    /// <summary>
    /// Gets or sets the creation date and time of the person record.
    /// </summary>
    [Required]
    public DateTime CreatedAt { get; set; } = DateTime.Now;

    /// <summary>
    /// Gets or sets the date and time when the person record was last updated.
    /// </summary>
    public DateTime? UpdatedAt { get; set; }

    /// <summary>
    /// Gets or sets the date and time when the person record was deleted.
    /// </summary>
    public DateTime? DeletedAt { get; set; }

#region Navigation Properties

    /// <summary>
    /// Gets or sets the list of faces associated with the person.
    /// </summary>
    public List<Face>? Faces { get; set; }

    /// <summary>
    /// Gets or sets the list of albums associated with the person.
    /// </summary>
    public List<Album>? Albums { get; set; }

#endregion
}