using Microsoft.EntityFrameworkCore;
using DD.Persistence.Models;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace DD.Persistence.Database.Model;

/// <summary>
/// Часть записи, описывающая изменение
/// </summary>
public class ChangeLog : IChangeLog, IWithSectionPart
{
    [Key, Comment("Ключ записи")]
    public Guid Id { get; set; }

    [Comment("Дискриминатор таблицы")]
    public Guid IdDiscriminator { get; set; }

    [Comment("Автор изменения")]
    public Guid IdAuthor { get; set; }

    [Comment("Редактор")]
    public Guid? IdEditor { get; set; }

    [Comment("Дата создания записи")]
    public DateTimeOffset Creation { get; set; }

    [Comment("Дата устаревания (например при удалении)")]
    public DateTimeOffset? Obsolete { get; set; }

    [Comment("Id заменяющей записи")]
    public Guid? IdNext { get; set; }

    [Comment("Глубина забоя на дату начала интервала")]
    public double DepthStart { get; set; }

    [Comment("Глубина забоя на дату окончания интервала")]
    public double DepthEnd { get; set; }

    [Comment("Ключ секции")]
    public Guid IdSection { get; set; }

    [Column(TypeName = "jsonb"), Comment("Значение")]
    public required IDictionary<string, object> Value { get; set; }
}