Files
parr_api/PARR.Domain/Entities/TaskEntities/TaskItem.cs

63 lines
2.1 KiB
C#

using Microsoft.EntityFrameworkCore;
using PARR.Domain.Constants;
using PARR.Domain.Entities.Attributes;
using PARR.Domain.Entities.Base;
using PARR.Domain.Entities.Base.History;
using PARR.Domain.Enums;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace PARR.Domain.Entities.TaskEntities
{
[Table("Tasks", Schema = DatabaseSchemas.Task)]
[Comment("Таблица заданий")]
public class TaskItem : IBaseEntity, IHistoryInitiator
{
[Key]
public Guid Id { get; set; }
public DateTimeOffset DateCreated { get; set; }
[ManualControl]
public DateTimeOffset? DateModified { get; set; }
public TaskTypeEnum TypeCode { get; set; }
public TaskItemStatusEnum StatusCode { get; set; }
public string? Payload { get; set; }
/// <summary>
/// Кол-во попыток
/// </summary>
public int RetryCount { get; set; }
/// <summary>
/// Дата завершения (устанавливается или когда Успех или когда Ошибка)
/// </summary>
public DateTimeOffset? ProcessedAt { get; set; }
/// <summary>
/// Процент выполнения задачи (0-100).
/// null = ожидает начала, 100 = успешно завершена.
/// При ошибке сохраняется последнее значение.
/// </summary>
[Comment("Процент выполнения задачи")]
public int? ProgressPercent { get; set; }
public string? InitiatorIp { get; set; }
public ParrComponentsEnum? InitiatorParrComponentId { get; set; }
public string? InitiatorComment { get; set; }
[ForeignKey(nameof(TypeCode))]
public TaskType? TaskType { get; set; }
[ForeignKey(nameof(StatusCode))]
public TaskStatus? TaskStatus { get; set; }
public ICollection<TaskError> TaskErrors { get; set; } = new HashSet<TaskError>();
}
}