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