feat(core, infrastructure): UnitService - массовое получение юнитов

This commit is contained in:
Mikhail Trubnikov
2026-06-01 11:58:08 +10:00
parent 437f996ea8
commit bdcc858bc5
3 changed files with 57 additions and 34 deletions

View File

@@ -226,7 +226,8 @@ namespace PARR.Infrastructure.Redis
// хранили в байтах
try
{
return DeserializeWithCompression<T>(value);
byte[] rawBytes = value!;
return DeserializeWithCompression<T>(rawBytes);
}
catch (Exception ex)
{
@@ -236,7 +237,7 @@ namespace PARR.Infrastructure.Redis
else
{
// хранили в строке
return JsonSerializer.Deserialize<T>(value);
return JsonSerializer.Deserialize<T>(value!);
}
}
@@ -257,33 +258,35 @@ namespace PARR.Infrastructure.Redis
logger.LogDebug("Сформировал {Count} одновременных запросов в кэш", tasks.Count);
// Ждем ответа от текущей порции
RedisValue[] results = await Task.WhenAll(tasks);
RedisValue[] results = await Task.WhenAll(tasks);
// Парсим
foreach (var result in results)
{
if (result.HasValue)
{
if (useCompression)
{
try
{
var item = DeserializeWithCompression<T>((byte[])result);
if (item != null)
allItems.Add(item);
}
catch (Exception ex)
{
throw new InvalidOperationException("Формат данных не байты.", ex);
}
}
else
{
var item = JsonSerializer.Deserialize<T>(result.ToString());
if (item != null)
allItems.Add(item);
}
if (!result.HasValue)
continue;
if (useCompression)
{
// Сжатые данные
try
{
byte[] rawBytes = result!;
var data = DeserializeWithCompression<T>(rawBytes);
if (data != null)
allItems.Add(data!);
}
catch (Exception ex)
{
throw new InvalidOperationException("Формат данных не байты.", ex);
}
}
else
{
// Json
var data = JsonSerializer.Deserialize<T>(result!.ToString());
if (data != null)
allItems.Add(data);
}
}