GetHardwareUseCaseSummary.cs 868 B

123456789101112131415161718192021222324252627
  1. namespace RackPeek.Domain.Resources.Hardware;
  2. public sealed class HardwareSummary {
  3. public HardwareSummary(
  4. int totalHardware,
  5. IReadOnlyDictionary<string, int> hardwareByKind) {
  6. TotalHardware = totalHardware;
  7. HardwareByKind = hardwareByKind;
  8. }
  9. public int TotalHardware { get; }
  10. public IReadOnlyDictionary<string, int> HardwareByKind { get; }
  11. }
  12. public class GetHardwareUseCaseSummary(IHardwareRepository repository) : IUseCase {
  13. public async Task<HardwareSummary> ExecuteAsync() {
  14. Task<int> totalCountTask = repository.GetCountAsync();
  15. Task<Dictionary<string, int>> kindCountTask = repository.GetKindCountAsync();
  16. await Task.WhenAll(totalCountTask, kindCountTask);
  17. return new HardwareSummary(
  18. totalCountTask.Result,
  19. kindCountTask.Result
  20. );
  21. }
  22. }