diff --git a/backend/.idea/dataSources.xml b/backend/.idea/dataSources.xml new file mode 100644 index 0000000..8b5266e --- /dev/null +++ b/backend/.idea/dataSources.xml @@ -0,0 +1,12 @@ + + + + + sqlite.xerial + true + org.sqlite.JDBC + jdbc:sqlite:$PROJECT_DIR$/config/db.sqlite + $ProjectFileDir$ + + + \ No newline at end of file diff --git a/backend/app/handlers/deploy.go b/backend/app/handlers/deploy.go index c26c81e..9b8a89d 100644 --- a/backend/app/handlers/deploy.go +++ b/backend/app/handlers/deploy.go @@ -19,11 +19,21 @@ import ( type DeploySiteHandler struct { EnvCfg *envconfig.EnvConfig SiteRepo repository.SiteRepository + GitServerRepo repository.GitServerRepository DeploymentRepo repository.DeploymentRepository } -func NewDeploySiteHandler(envCfg *envconfig.EnvConfig, siteRepo repository.SiteRepository, deploymentRepo repository.DeploymentRepository) *DeploySiteHandler { - return &DeploySiteHandler{EnvCfg: envCfg, SiteRepo: siteRepo, DeploymentRepo: deploymentRepo} +func NewDeploySiteHandler( + envCfg *envconfig.EnvConfig, + siteRepo repository.SiteRepository, + gitServerRepo repository.GitServerRepository, + deploymentRepo repository.DeploymentRepository) *DeploySiteHandler { + return &DeploySiteHandler{ + EnvCfg: envCfg, + SiteRepo: siteRepo, + GitServerRepo: gitServerRepo, + DeploymentRepo: deploymentRepo, + } } func (h *DeploySiteHandler) PostDeploy(c fiber.Ctx) error { @@ -54,6 +64,26 @@ func (h *DeploySiteHandler) PostDeploy(c fiber.Ctx) error { }) } + gitServer, err := h.GitServerRepo.GetGitServer(site.GitServer) + + if err != nil { + if errors.Is(err, sql.ErrNoRows) { + return c.Status(fiber.StatusNotFound).JSON(&models.APIError{ + Message: "Git server not found", + }) + } + log.Println("Error getting git server: ", err) + return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{ + Message: "Unexpected error while getting git server", + }) + } + + if gitServer == nil { + return c.Status(fiber.StatusNotFound).JSON(&models.APIError{ + Message: "Git server not found", + }) + } + deployToken := site.DeployToken if deployToken == "" { log.Println("No deploy token configured for site " + siteId) @@ -103,7 +133,7 @@ func (h *DeploySiteHandler) PostDeploy(c fiber.Ctx) error { site.Owner, site.Repository, site.Branch, - h.EnvCfg.GithubPat, + gitServer.AuthToken, sitePath, ) diff --git a/backend/app/routes/routes.go b/backend/app/routes/routes.go index 89f0320..0ecb90f 100644 --- a/backend/app/routes/routes.go +++ b/backend/app/routes/routes.go @@ -46,7 +46,7 @@ func Register(app *fiber.App, cfg *config.Config, envCfg *envconfig.EnvConfig, d } siteHandler := handlers.NewSiteHandler(siteRepository) - deploySiteHandler := handlers.NewDeploySiteHandler(envCfg, siteRepository, deploymentRepository) + deploySiteHandler := handlers.NewDeploySiteHandler(envCfg, siteRepository, gitServerRepository, deploymentRepository) userHandler := handlers.NewUserHandler(userRepository) gitServerHandler := handlers.NewGitServerHandler(gitServerRepository) deploymentsHandler := handlers.NewDeploymentHandler(deploymentRepository)