Add gitservers to backend
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"errors"
|
||||
"log"
|
||||
"quay/app/models"
|
||||
"quay/app/repository"
|
||||
|
||||
"github.com/gofiber/fiber/v3"
|
||||
)
|
||||
|
||||
type GitServerHandler struct {
|
||||
Repo repository.GitServerRepository
|
||||
}
|
||||
|
||||
func NewGitServerHandler(repo repository.GitServerRepository) *GitServerHandler {
|
||||
return &GitServerHandler{Repo: repo}
|
||||
}
|
||||
|
||||
func (h *GitServerHandler) GetGitServers(c fiber.Ctx) error {
|
||||
gs, err := h.Repo.ListGitServers()
|
||||
if err != nil {
|
||||
log.Println("Error listing gitservers: ", err)
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{Message: "Unexpected error while listing git servers"})
|
||||
}
|
||||
if gs == nil {
|
||||
gs = []models.GitServer{}
|
||||
}
|
||||
return c.JSON(gs)
|
||||
}
|
||||
|
||||
func (h *GitServerHandler) GetGitServer(c fiber.Ctx) error {
|
||||
id := c.Params("id")
|
||||
g, err := h.Repo.GetGitServer(id)
|
||||
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 gitserver: ", err)
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{Message: "Unexpected error while getting git server"})
|
||||
}
|
||||
if g == nil {
|
||||
return c.Status(fiber.StatusNotFound).JSON(&models.APIError{Message: "Git server not found"})
|
||||
}
|
||||
return c.JSON(g)
|
||||
}
|
||||
|
||||
func validateIncomingGitServer(gs *models.GitServer) error {
|
||||
return models.ValidateGitServer(gs)
|
||||
}
|
||||
|
||||
func (h *GitServerHandler) PostGitServer(c fiber.Ctx) error {
|
||||
var gs models.GitServer
|
||||
if err := c.Bind().Body(&gs); err != nil {
|
||||
log.Println("Error parsing body: ", err)
|
||||
return c.Status(fiber.StatusBadRequest).JSON(&models.APIError{Message: "Invalid request body"})
|
||||
}
|
||||
|
||||
if err := validateIncomingGitServer(&gs); err != nil {
|
||||
return c.Status(fiber.StatusBadRequest).JSON(&models.APIError{Message: "Invalid request body: " + err.Error()})
|
||||
}
|
||||
|
||||
if err := h.Repo.CreateGitServer(&gs); err != nil {
|
||||
log.Println("Error creating gitserver: ", err)
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{Message: "Unexpected error while creating git server"})
|
||||
}
|
||||
|
||||
return c.JSON(gs)
|
||||
}
|
||||
|
||||
func (h *GitServerHandler) PutGitServer(c fiber.Ctx) error {
|
||||
id := c.Params("id")
|
||||
if _, err := h.Repo.GetGitServer(id); err != nil {
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
return c.Status(fiber.StatusNotFound).JSON(&models.APIError{Message: "Git server not found"})
|
||||
}
|
||||
log.Println("Error checking gitserver before update: ", err)
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{Message: "Unexpected error while updating git server"})
|
||||
}
|
||||
|
||||
var gs models.GitServer
|
||||
if err := c.Bind().Body(&gs); err != nil {
|
||||
log.Println("Error parsing body: ", err)
|
||||
return c.Status(fiber.StatusBadRequest).JSON(&models.APIError{Message: "Invalid request body"})
|
||||
}
|
||||
|
||||
if err := validateIncomingGitServer(&gs); err != nil {
|
||||
return c.Status(fiber.StatusBadRequest).JSON(&models.APIError{Message: "Invalid request body: " + err.Error()})
|
||||
}
|
||||
|
||||
gs.ID = id
|
||||
if err := h.Repo.UpdateGitServer(&gs); err != nil {
|
||||
log.Println("Error updating gitserver: ", err)
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{Message: "Unexpected error while updating git server"})
|
||||
}
|
||||
|
||||
updated, err := h.Repo.GetGitServer(id)
|
||||
if err != nil {
|
||||
log.Println("Error getting updated gitserver: ", err)
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{Message: "Git server was updated but could not be retrieved"})
|
||||
}
|
||||
|
||||
return c.JSON(updated)
|
||||
}
|
||||
|
||||
func (h *GitServerHandler) DeleteGitServer(c fiber.Ctx) error {
|
||||
id := c.Params("id")
|
||||
if _, err := h.Repo.GetGitServer(id); err != nil {
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
return c.Status(fiber.StatusNotFound).JSON(&models.APIError{Message: "Git server not found"})
|
||||
}
|
||||
log.Println("Error checking gitserver before delete: ", err)
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{Message: "Unexpected error while deleting git server"})
|
||||
}
|
||||
|
||||
if err := h.Repo.DeleteGitServer(id); err != nil {
|
||||
log.Println("Error deleting gitserver: ", err)
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{Message: "Unexpected error while deleting git server"})
|
||||
}
|
||||
|
||||
return c.SendStatus(fiber.StatusNoContent)
|
||||
}
|
||||
Reference in New Issue
Block a user