ServerAddCommand.cs 998 B

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