feat(api,core,dal): RobotTasks - вынесение логики в Core, оптимизация взятия задания роботом
This commit is contained in:
@@ -102,6 +102,22 @@ namespace PARR.DAL.Repositories
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public async Task<bool> SetInProgressStatusAsync(Guid id)
|
||||
{
|
||||
// Если задание все еще в статусе Wait (RobotStatusEnum.Wait), установить ему статус "InProgress"
|
||||
|
||||
// Выполняем атомарный UPDATE напрямую в базе данных
|
||||
var affectedRows = await EntitySet.Where(t => t.Id == id && t.RobotStatusCode == (int)RobotStatusEnum.Wait)
|
||||
.ExecuteUpdateAsync(s => s
|
||||
.SetProperty(t => t.RobotStatusCode, (int)RobotStatusEnum.InProgress)
|
||||
.SetProperty(t => t.LastRobotStatusUpdated, DateTimeOffset.UtcNow)
|
||||
);
|
||||
|
||||
return affectedRows > 0;
|
||||
}
|
||||
|
||||
|
||||
public RobotConfiguration GetFromTemplateByRobotCode(RobotsEnum robotsEnum, Template template)
|
||||
{
|
||||
var config = template.RobotConfigurations.FirstOrDefault(t => t.RobotCode == (int)robotsEnum);
|
||||
@@ -117,7 +133,7 @@ namespace PARR.DAL.Repositories
|
||||
|
||||
|
||||
// Поиск невыполненных заданий и установка им статуса ошибки робота
|
||||
public async Task FindUnfulfilledTaskAndSetRobotErrorStatusAsync(int robotAttemptsNumber, TimeSpan robotWaitTime)
|
||||
public async Task MarkExpiredTasksAsFailedAsync(int robotAttemptsNumber, TimeSpan robotWaitTime)
|
||||
{
|
||||
//Ищем `RobotStatusCode` = 22 и `LastStatusUpdated` истекло и `AttemptsNumber` >= допустимого значения из настроек,
|
||||
//ставим всем этим записям `RobotStatusCode`= 33
|
||||
|
||||
Reference in New Issue
Block a user