#nullable enable
using System.ComponentModel.DataAnnotations;
using Bit.Core.Auth.Models.Data;
using Duende.IdentityServer.Models;

namespace Bit.Core.Auth.Entities;

public class Grant : IGrant
{
    public Grant() { }

    public Grant(PersistedGrant pGrant)
    {
        Key = pGrant.Key;
        Type = pGrant.Type;
        SubjectId = pGrant.SubjectId;
        SessionId = pGrant.SessionId;
        ClientId = pGrant.ClientId;
        Description = pGrant.Description;
        CreationDate = pGrant.CreationTime;
        ExpirationDate = pGrant.Expiration;
        ConsumedDate = pGrant.ConsumedTime;
        Data = pGrant.Data;
    }

    public int Id { get; set; }
    [MaxLength(200)]
    public string Key { get; set; } = null!;
    [MaxLength(50)]
    public string Type { get; set; } = null!;
    [MaxLength(200)]
    public string? SubjectId { get; set; }
    [MaxLength(100)]
    public string? SessionId { get; set; }
    [MaxLength(200)]
    public string ClientId { get; set; } = null!;
    [MaxLength(200)]
    public string? Description { get; set; }
    public DateTime CreationDate { get; set; } = DateTime.UtcNow;
    public DateTime? ExpirationDate { get; set; }
    public DateTime? ConsumedDate { get; set; }
    public string Data { get; set; } = null!;
}
