Files

49 lines
1.6 KiB
C#

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);
}
public async Task RemoveFromCacheAsync(IEnumerable<Guid> ids)
{
// Защищаем себя от Multiple Enumeration и убираем дубликаты, если передали List
var uniqueIds = ids as IReadOnlySet<Guid> ?? ids.ToHashSet();
await unitCacheService.RemoveFromCacheAsync(uniqueIds);
}
}
}