| 1234567891011121314151617181920212223242526272829303132333435 |
- using RackPeek.Domain.Helpers;
- namespace RackPeek.Domain.Resources.SystemResources.UseCases;
- public record SystemDescription(
- string Name,
- string? Type,
- string? Os,
- int Cores,
- int RamGb,
- int TotalStorageGb,
- string? RunsOn
- );
- public class DescribeSystemUseCase(ISystemRepository repository) : IUseCase
- {
- public async Task<SystemDescription> ExecuteAsync(string name)
- {
- name = Normalize.SystemName(name);
- ThrowIfInvalid.ResourceName(name);
- var system = await repository.GetByNameAsync(name);
- if (system is null)
- throw new NotFoundException($"System '{name}' not found.");
- return new SystemDescription(
- system.Name,
- system.Type,
- system.Os,
- system.Cores ?? 0,
- system.Ram ?? 0,
- system.Drives?.Sum(d => d.Size) ?? 0,
- system.RunsOn
- );
- }
- }
|