37 lines
1.3 KiB
C#
37 lines
1.3 KiB
C#
using System.ComponentModel.DataAnnotations;
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
|
|
namespace Fitness_core_BE.Models
|
|
{
|
|
public class DeviceCommand
|
|
{
|
|
[Key]
|
|
public Guid Id { get; set; }
|
|
public Guid FKClientId { get; set; }
|
|
[ForeignKey("FKClientId")]
|
|
public Client Client { get; set; }
|
|
public Guid? FKDeviceId { get; set; }
|
|
[ForeignKey("FKDeviceId")]
|
|
public AccessDevice? AccessDevice { get; set; }
|
|
|
|
public Guid? FKAccessDeviceBindingId { get; set; }
|
|
[ForeignKey(nameof(FKAccessDeviceBindingId))]
|
|
public AccessDeviceBinding? AccessDeviceBinding { get; set; }
|
|
|
|
// e.g. "AddUser", "WhiteListMember", "BlackListMember"
|
|
public string CommandType { get; set; }
|
|
public string PayloadJson { get; set; }
|
|
|
|
// "Pending" / "InProgress" / "Completed" / "Failed"
|
|
public string Status { get; set; } = "Pending";
|
|
public string? ResultJson { get; set; }
|
|
public int DesiredVersion { get; set; }
|
|
public int AttemptCount { get; set; }
|
|
public int MaxAttempts { get; set; } = 5;
|
|
public DateTime? LeaseExpiresAt { get; set; }
|
|
public DateTime? NextAttemptAt { get; set; }
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
|
public DateTime? ProcessedAt { get; set; }
|
|
}
|
|
}
|