feat(core, dal): WorkloadCacheService - методы для работы с кэшем отчетности workload

This commit is contained in:
Mikhail Trubnikov
2026-05-05 14:52:17 +10:00
parent a89605d02a
commit 7d42a80556
10 changed files with 380 additions and 27 deletions

View File

@@ -1,18 +1,28 @@
using Microsoft.Extensions.Logging;
using PARR.Core.Repositories.Interfaces.TaskRepositories;
using PARR.Core.Services.Workload.Implementations;
using PARR.Domain.Entities.TaskEntities;
using PARR.Domain.Enums;
namespace PARR.Core.Services.TaskServices.Handlers
{
/// <summary>
/// Обработчик задачаи формирования отчета по загруженности (формирование КЭШ).
/// Обработчик задачи формирования отчета по загруженности (формирование КЭШ).
/// Формируется КЭШ шаблонов с ЗО и РГ
/// </summary>
public class WorkloadReportHandler : BaseTaskHandler
{
private readonly WorkloadCacheService workloadCacheService;
public WorkloadReportHandler(ITaskRepository taskRepository, ITaskErrorRepository taskErrorRepository, ILogger<WorkloadReportHandler> logger)
: base(taskRepository, taskErrorRepository, logger) { }
public WorkloadReportHandler(
ITaskRepository taskRepository,
ITaskErrorRepository taskErrorRepository,
ILogger<WorkloadReportHandler> logger,
WorkloadCacheService workloadCacheService)
: base(taskRepository, taskErrorRepository, logger)
{
this.workloadCacheService = workloadCacheService;
}
public override TaskTypeEnum SupportedType => TaskTypeEnum.Workload;
@@ -25,15 +35,23 @@ namespace PARR.Core.Services.TaskServices.Handlers
// ? new ReportPayload()
// : JsonSerializer.Deserialize<ReportPayload>(task.Payload);
//todo: тут логика построения отчета
// тут логика построения отчета
await workloadCacheService.DeleteWorkloadCacheAsync();
await workloadCacheService.DeleteTemplateCacheAsync();
await workloadCacheService.CreateTemplateCacheAsync();
await System.Threading.Tasks.Task.CompletedTask;
//await System.Threading.Tasks.Task.CompletedTask;
// return HandlerResult.Success();
return HandlerResult.Success();
return HandlerResult.Failure("Тут капец какая ошибка! Просто жуть", new Exception("А это я создал эксепшен!!!"));
//return HandlerResult.Failure("Тут капец какая ошибка! Просто жуть", new Exception("А это я создал эксепшен!!!"));
}
protected override Task OnSuccessAsync(TaskItem task, HandlerResult result)
{
// Пример хука: отправка уведомления после успеха
return base.OnSuccessAsync(task, result);
}
}
}