using Core.Blueprint.SQLServer.Entities;
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace Core.Blueprint.SQLServer
{
    /// 
    /// Defines the interface for SQL Server entities, providing common properties for auditing and state management.
    /// 
    public interface IBaseSQLAdapter
    {
        /// 
        /// Gets or sets the identifier for the entity.
        /// 
        [Key]
        [JsonPropertyName("id")]
        int Id { get; }
        /// 
        /// Gets or sets the GUID for the entity.
        /// 
        [JsonPropertyName("guid")]
        string Guid { get; }
        /// 
        /// Gets or sets the timestamp when the entity was created.
        /// 
        [JsonPropertyName("createdAt")]
        DateTime? CreatedAt { get; }
        /// 
        /// Gets or sets the identifier of the user or system that created the entity.
        /// 
        [JsonPropertyName("createdBy")]
        string? CreatedBy { get; set; }
        /// 
        /// Gets or sets the timestamp when the entity was last updated.
        /// 
        [JsonPropertyName("updatedAt")]
        DateTime? UpdatedAt { get; set; }
        /// 
        /// Gets or sets the identifier of the user or system that last updated the entity.
        /// 
        [JsonPropertyName("updatedBy")]
        string? UpdatedBy { get; set; }
        /// 
        /// Gets or sets the status of the entity, indicating whether it is active, inactive, or in another state.
        /// 
        [JsonPropertyName("status")]
        [JsonConverter(typeof(JsonStringEnumConverter))]
        StatusEnum Status { get; set; }
    }
}