Browse Source

refact: transform uninstall marketplace item API endpoint into a scheduled endpoint

Matheus Marques Polillo 9 tháng trước cách đây
mục cha
commit
25a84b791b

+ 1 - 1
src/presentation/api/controller/marketplace.go

@@ -172,6 +172,6 @@ func (controller *MarketplaceController) DeleteInstalledItem(c echo.Context) err
 	}
 
 	return apiHelper.ServiceResponseWrapper(
-		c, controller.marketplaceService.DeleteInstalledItem(requestBody),
+		c, controller.marketplaceService.DeleteInstalledItem(requestBody, true),
 	)
 }

+ 1 - 1
src/presentation/cli/controller/marketplace.go

@@ -153,7 +153,7 @@ func (controller *MarketplaceController) DeleteInstalledItem() *cobra.Command {
 			}
 
 			cliHelper.ServiceResponseWrapper(
-				controller.marketplaceService.DeleteInstalledItem(requestBody),
+				controller.marketplaceService.DeleteInstalledItem(requestBody, false),
 			)
 		},
 	}

+ 30 - 0
src/presentation/service/marketplace.go

@@ -1,6 +1,7 @@
 package service
 
 import (
+	"strconv"
 	"strings"
 
 	"github.com/alessio/shellescape"
@@ -166,6 +167,7 @@ func (service *MarketplaceService) ReadInstalledItems() ServiceOutput {
 
 func (service *MarketplaceService) DeleteInstalledItem(
 	input map[string]interface{},
+	shouldSchedule bool,
 ) ServiceOutput {
 	requiredParams := []string{"installedId"}
 
@@ -189,6 +191,34 @@ func (service *MarketplaceService) DeleteInstalledItem(
 		}
 	}
 
+	if shouldSchedule {
+		cliCmd := infraEnvs.InfiniteOsBinary + " mktplace delete"
+		installParams := []string{
+			"--installedId", installedId.String(),
+			"--shouldUninstallServices", strconv.FormatBool(shouldUninstallServices),
+		}
+
+		cliCmd += " " + strings.Join(installParams, " ")
+
+		scheduledTaskCmdRepo := scheduledTaskInfra.NewScheduledTaskCmdRepo(service.persistentDbSvc)
+		taskName, _ := valueObject.NewScheduledTaskName("DeleteMarketplaceCatalogItem")
+		taskCmd, _ := valueObject.NewUnixCommand(cliCmd)
+		taskTag, _ := valueObject.NewScheduledTaskTag("marketplace")
+		taskTags := []valueObject.ScheduledTaskTag{taskTag}
+		timeoutSeconds := uint16(600)
+
+		scheduledTaskCreateDto := dto.NewCreateScheduledTask(
+			taskName, taskCmd, taskTags, &timeoutSeconds, nil,
+		)
+
+		err = useCase.CreateScheduledTask(scheduledTaskCmdRepo, scheduledTaskCreateDto)
+		if err != nil {
+			return NewServiceOutput(InfraError, err.Error())
+		}
+
+		return NewServiceOutput(Created, "DeleteMarketplaceCatalogItemScheduled")
+	}
+
 	deleteMarketplaceInstalledItem := dto.NewDeleteMarketplaceInstalledItem(
 		installedId, shouldUninstallServices,
 	)