diff --git a/backend/app/handlers/deploy.go b/backend/app/handlers/deploy.go index c05567f..65e8f0a 100644 --- a/backend/app/handlers/deploy.go +++ b/backend/app/handlers/deploy.go @@ -36,6 +36,17 @@ func NewDeploySiteHandler( } } +func failDeployment(deployId string, repo repository.DeploymentRepository) { + deployUpdateErr := repo.UpdateDeploymentStatus(deployId, models.DeploymentStatusFailed) + if deployUpdateErr != nil { + log.Println("Error updating deployment status to failed: ", deployUpdateErr) + } + deployUpdateErr = repo.UpdateDeploymentFinishTime(deployId, time.Now().UTC()) + if deployUpdateErr != nil { + log.Println("Error updating deployment finish time: ", deployUpdateErr) + } +} + func (h *DeploySiteHandler) PostDeploy(c fiber.Ctx) error { siteId := c.Query("site") if siteId == "" { @@ -124,6 +135,7 @@ func (h *DeploySiteHandler) PostDeploy(c fiber.Ctx) error { if err != nil { log.Println("Error creating deployment: ", err) + failDeployment(deployId, h.DeploymentRepo) return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{ Message: "Failed to create deployment", }) @@ -131,6 +143,7 @@ func (h *DeploySiteHandler) PostDeploy(c fiber.Ctx) error { provider, err := gitprovider.NewProvider(gitServer.Type, gitServer.Protocol, gitServer.BaseUrl, gitServer.AuthToken) if err != nil { + failDeployment(deployId, h.DeploymentRepo) return c.Status(400).JSON(models.APIError{ Message: "Unsupported git provider: " + gitServer.Type, }) @@ -152,15 +165,7 @@ func (h *DeploySiteHandler) PostDeploy(c fiber.Ctx) error { if err != nil { log.Println("Error deploying site: ", err) - - deployUpdateErr := h.DeploymentRepo.UpdateDeploymentStatus(deployId, models.DeploymentStatusFailed) - if deployUpdateErr != nil { - log.Println("Error updating deployment status to failed: ", err) - } - deployUpdateErr = h.DeploymentRepo.UpdateDeploymentFinishTime(deployId, time.Now().UTC()) - if deployUpdateErr != nil { - log.Println("Error updating deployment finish time: ", err) - } + failDeployment(deployId, h.DeploymentRepo) return c.Status(500).JSON(models.APIError{ Message: "Failed to deploy site: " + err.Error(),