using Microsoft.EntityFrameworkCore;
using PARR.Domain.Constants;
using PARR.Domain.Enums;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace PARR.Domain.Entities.TaskEntities
{
    [Table("Types", Schema = DatabaseSchemas.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; }

        /// <summary>
        /// Максимальное время выполнения
        /// </summary>
        public int MaxExecutionTimeMinutes { get; set; }

        /// <summary>
        /// Одновременно может быть только одна задача или несколько
        /// </summary>
        public bool IsSingleton { get; set; }

        /// <summary>
        /// Сколько дней хранить в БД
        /// </summary>
        public int RetentionDays { get; set; }


        public ICollection<TaskItem> Tasks { get; set; } = new HashSet<TaskItem>();
    }
}
