public record struct WarehouseId(int Value)
public static implicit operator int(WarehouseId w) => w.Value;
public static implicit operator WarehouseId(int value) => new (value);
public record WarehouseInfo(WarehouseId WarehouseId, string Name, int NumberGoods, decimal SumGoods);
public class WarehousesRepository
public WarehousesRepository(string connectionString) {}
public IAsyncEnumerable<(WarehouseId Id, string WarehouseName)> GetNames(
IEnumerable<WarehouseId> ids,
CancellationToken cancellationToken = default)
=> throw new NotImplementedException("не важно");
public IAsyncEnumerable<(int GoodsId, decimal Price, int Count)> GetGoods(
CancellationToken cancellationToken = default)
=> throw new NotImplementedException("не важно");
public static class DbConfig
public static string ConnectionString => "строка подключения к https://evileg.com/ru/sharecode/yp8ObxA/бд";
public class WarehousesService
public async Task<IEnumerable<WarehouseInfo>> CalculateWarehouseInfo(
IEnumerable<WarehouseId> ids,
CancellationToken cancellationToken)
var result = new List<WarehouseInfo>();
foreach (var warehouseId in ids)
cancellationToken.ThrowIfCancellationRequested();
var warehousesRepository = new WarehousesRepository(DbConfig.ConnectionString);
var name = warehousesRepository.GetNames(new[] { warehouseId })
var goodsList = await warehousesRepository.GetGoods(warehouseId, cancellationToken).ToListAsync();
var count = goodsList.Count();
var sum = goodsList.Sum(x => x.Price);
result.Add(new WarehouseInfo(warehouseId, name, count, sum));