using PARR.Core.Repositories.Base;
using PARR.Domain.Entities.TaskEntities;

namespace PARR.Core.Repositories.Interfaces.TaskRepositories
{
    public interface ITaskRepository : IBaseRepository<TaskItem>
    {
        /// <summary>
        /// Атомарный захват задачи (взять в работу)
        /// </summary>
        /// <param name="taskId"></param>
        /// <returns>Возвращает кол-во обработанных строк</returns>
        Task<int> TaskCaptureAsync(Guid taskId);

        /// <summary>
        /// Обновляет процент выполнения задачи.
        /// Возвращает количество затронутых строк (0 или 1).
        /// </summary>
        /// <param name="taskId">Id задачи</param>
        /// <param name="percent">Процент (0-100)</param>
        /// <returns></returns>
        Task<int> UpdateProgressAsync(Guid taskId, int percent);
    }
}
