feat(core): UnitService - работа с кэш

This commit is contained in:
Mikhail Trubnikov
2026-05-29 17:09:36 +10:00
parent 83df669f84
commit 437f996ea8
8 changed files with 583 additions and 35 deletions

View File

@@ -0,0 +1,40 @@
using Microsoft.Extensions.Logging;
using PARR.Core.Services.UnitService.Interfaces;
using PARR.Domain.DTOs.UnitDto;
namespace PARR.Core.Services.UnitService.Implementations
{
internal class UnitService : IUnitService
{
private readonly ILogger<UnitService> logger;
private readonly UnitCacheService unitCacheService;
public UnitService(
ILogger<UnitService> logger,
UnitCacheService unitCacheService
)
{
this.logger = logger;
this.unitCacheService = unitCacheService;
}
public async Task<UnitInfo?> GetWithCachingAsync(Guid id)
{
return await unitCacheService.GetAsync(id);
}
public async Task<Dictionary<Guid, UnitInfo>> GetWithCachingAsync(IEnumerable<Guid> ids)
{
// Защищаем себя от Multiple Enumeration и убираем дубликаты, если передали List
var uniqueIds = ids as IReadOnlySet<Guid> ?? ids.ToHashSet();
return await unitCacheService.GetAsync(uniqueIds);
}
public async Task RemoveFromCacheAsync(Guid id)
{
await unitCacheService.RemoveFromCacheAsync(id);
}
}
}