SwitchAddCommand.cs 1000 B

12345678910111213141516171819202122232425262728293031323334
  1. using Microsoft.Extensions.DependencyInjection;
  2. using RackPeek.Domain.Resources.Hardware.Switches;
  3. using RackPeek.Domain.Resources.Models;
  4. using RackPeek.Domain.UseCases;
  5. using Spectre.Console;
  6. using Spectre.Console.Cli;
  7. namespace RackPeek.Commands.Switches;
  8. public class SwitchAddSettings : CommandSettings
  9. {
  10. [CommandArgument(0, "<name>")] public string Name { get; set; } = default!;
  11. }
  12. public class SwitchAddCommand(
  13. IServiceProvider serviceProvider
  14. ) : AsyncCommand<SwitchAddSettings>
  15. {
  16. public override async Task<int> ExecuteAsync(
  17. CommandContext context,
  18. SwitchAddSettings settings,
  19. CancellationToken cancellationToken)
  20. {
  21. using var scope = serviceProvider.CreateScope();
  22. var useCase = scope.ServiceProvider.GetRequiredService<IAddResourceUseCase<Switch>>();
  23. await useCase.ExecuteAsync(
  24. settings.Name
  25. );
  26. AnsiConsole.MarkupLine($"[green]Switch '{settings.Name}' added.[/]");
  27. return 0;
  28. }
  29. }