AccessPointAddCommand.cs 1011 B

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