SystemAddCommand.cs 1023 B

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