feat(dal): Модели и сервисы для работы с Task
This commit is contained in:
47
PARR.DAL/Models/Task/Task.cs
Normal file
47
PARR.DAL/Models/Task/Task.cs
Normal file
@@ -0,0 +1,47 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using PARR.DAL.Context;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.Models.Base;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace PARR.DAL.Models.Task
|
||||
{
|
||||
[Table("Tasks", Schema = DataContextSettings.Task)]
|
||||
[Comment("Таблица заданий")]
|
||||
public class Task : IBase
|
||||
{
|
||||
[Key]
|
||||
public Guid Id { get; set; }
|
||||
|
||||
public DateTimeOffset DateCreated { get; set; }
|
||||
|
||||
public DateTimeOffset? DateModified { get; set; }
|
||||
|
||||
public TaskTypeEnum TypeCode { get; set; }
|
||||
|
||||
public TaskTaskStatusEnum StatusCode { get; set; }
|
||||
|
||||
public string? Payload { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Кол-во попыток
|
||||
/// </summary>
|
||||
public int RetryCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дата завершения (устанавливается или когда Успех или когда Ошибка)
|
||||
/// </summary>
|
||||
public DateTimeOffset? ProcessedAt { 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>();
|
||||
}
|
||||
}
|
||||
32
PARR.DAL/Models/Task/TaskError.cs
Normal file
32
PARR.DAL/Models/Task/TaskError.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using PARR.DAL.Context;
|
||||
using PARR.DAL.Models.Base;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace PARR.DAL.Models.Task
|
||||
{
|
||||
[Table("Errors", Schema = DataContextSettings.Task)]
|
||||
[Comment("Таблица ошибок заданий")]
|
||||
public class TaskError : IBase
|
||||
{
|
||||
[Key]
|
||||
public Guid Id { get; set; }
|
||||
|
||||
public DateTimeOffset DateCreated { get; set; }
|
||||
|
||||
[NotMapped]
|
||||
public DateTimeOffset? DateModified { get; set; }
|
||||
|
||||
public Guid TaskId { get; set; }
|
||||
|
||||
public int AttemptNumber { get; set; }
|
||||
|
||||
public required string ErrorMessage { get; set; }
|
||||
|
||||
public string? StackTrace { get; set; }
|
||||
|
||||
[ForeignKey(nameof(TaskId))]
|
||||
public Task? Task { get; set; }
|
||||
}
|
||||
}
|
||||
23
PARR.DAL/Models/Task/TaskStatus.cs
Normal file
23
PARR.DAL/Models/Task/TaskStatus.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using PARR.DAL.Context;
|
||||
using PARR.DAL.Contracts;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace PARR.DAL.Models.Task
|
||||
{
|
||||
[Table("Statuses", Schema = DataContextSettings.Task)]
|
||||
[Comment("Таблица статусов заданий")]
|
||||
public class TaskStatus
|
||||
{
|
||||
[Key]
|
||||
public TaskTaskStatusEnum Code { get; set; }
|
||||
|
||||
public required string Name { get; set; }
|
||||
|
||||
public required string Description { get; set; }
|
||||
|
||||
|
||||
public ICollection<Task> Tasks { get; set; } = new HashSet<Task>();
|
||||
}
|
||||
}
|
||||
28
PARR.DAL/Models/Task/TaskType.cs
Normal file
28
PARR.DAL/Models/Task/TaskType.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using PARR.DAL.Context;
|
||||
using PARR.DAL.Contracts;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace PARR.DAL.Models.Task
|
||||
{
|
||||
[Table("Types", Schema = DataContextSettings.Task)]
|
||||
[Comment("Таблица типов заданий")]
|
||||
public class TaskType
|
||||
{
|
||||
[Key]
|
||||
public TaskTypeEnum Code { get; set; }
|
||||
|
||||
public required string Name { get; set; }
|
||||
|
||||
public required string Description { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Максимальное кол-во попыток
|
||||
/// </summary>
|
||||
public int MaxRetries { get; set; }
|
||||
|
||||
|
||||
public ICollection<Task> Tasks { get; set; } = new HashSet<Task>();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user