using Quadarax.Application.QLiberace.Common.Entities.Base;
using Quadarax.Application.QLiberace.Processor.Enums;
namespace Quadarax.Application.QLiberace.Processor.Entities
{
public abstract class BaseQueue : QlbrcEntityTenantCode
{
///
/// Reference to data collection
///
public long DataId { get; set; }
///
/// Reference to status history collection
///
public long StatusHistoryId { get; set; }
///
/// Owner (abstract) key identifier. Usually entity code
///
public string Owner { get; set; } = null!;
///
/// Owner worker identifier who processing task
///
public string AffinityWorker { get; set; } = null!;
///
/// Defines item priority (default = 100). Higher value represents lower priority. Priority is used to ordering gathering data.
///
public int Priority { get; set; }
///
/// Defines Fully qualified name of provider class to execute item.
///
public string Provider { get; set; } = null!;
///
/// Record status
///
public QueueStatusEnum Status { get; set; }
///
/// Record processing from datetime
///
public DateTime StartFrom { get; set; }
///
/// Record processing to datetime. If overflow then record is expired.
///
public DateTime? StartTo { get; set; }
///
/// Last status change timestamp
///
public DateTime LastStatusChanged { get; set; }
///
/// Record created timestamp
///
public DateTime Created { get; set; }
//public virtual QueueData RootData { get; set; } = null!;
//public virtual StatusHistory RootStatusHistory { get; set; } = null!;
public virtual void CloneFrom(BaseQueue source)
{
Id = source.Id;
DataId = source.DataId;
StatusHistoryId = source.StatusHistoryId;
Owner = source.Owner;
AffinityWorker = source.AffinityWorker;
Status = source.Status;
StartFrom = source.StartFrom;
StartTo = source.StartTo;
LastStatusChanged = source.LastStatusChanged;
Created = source.Created;
Modified = source.Modified;
Modifier = source.Modifier;
TenantCode = source.TenantCode;
Priority = source.Priority;
Provider = source.Provider;
}
}
}