124 lines
3.8 KiB
Go
124 lines
3.8 KiB
Go
package handlers
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/labstack/echo/v5"
|
|
"trankilou.fr/lassistanoque/backend/internal/domain"
|
|
"trankilou.fr/lassistanoque/backend/internal/service/auth"
|
|
"trankilou.fr/lassistanoque/backend/internal/service/tool"
|
|
"trankilou.fr/lassistanoque/backend/internal/service/user"
|
|
)
|
|
|
|
func NewToolGroup(
|
|
prefix string,
|
|
e *echo.Group,
|
|
ToolService *tool.Service,
|
|
userService *user.Service,
|
|
middlewares ...echo.MiddlewareFunc) *echo.Group {
|
|
|
|
ToolHandler := &ToolHandler{
|
|
ToolService: ToolService,
|
|
userService: userService,
|
|
}
|
|
Tool := e.Group(prefix, middlewares...)
|
|
|
|
Tool.GET("/:space", ToolHandler.ListTools)
|
|
Tool.GET("/:space/:tool", ToolHandler.GetTool)
|
|
Tool.GET("/:space/:tool/params", ToolHandler.GetToolParams)
|
|
Tool.PUT("/:space", ToolHandler.UpdateTool)
|
|
Tool.POST("/:space", ToolHandler.CreateTool)
|
|
//Tool.DELETE("/:space/:tool", ToolHandler.DeleteTool)
|
|
|
|
return Tool
|
|
}
|
|
|
|
type ToolHandler struct {
|
|
ToolService *tool.Service
|
|
userService *user.Service
|
|
}
|
|
|
|
func (h *ToolHandler) ListTools(c *echo.Context) error {
|
|
userID := c.Get(auth.ContextUserIDKey).(string)
|
|
teamID := c.Param("space")
|
|
Tools, err := h.ToolService.ListTools(userID, teamID)
|
|
if err != nil {
|
|
c.Logger().Error("error listing Tools", "error", err)
|
|
return echo.NewHTTPError(http.StatusBadRequest, "error listing Tools")
|
|
}
|
|
return c.JSON(http.StatusOK, Tools)
|
|
}
|
|
|
|
func (h *ToolHandler) GetTool(c *echo.Context) error {
|
|
userID := c.Get(auth.ContextUserIDKey).(string)
|
|
teamID := c.Param("space")
|
|
ToolID := c.Param("tool")
|
|
Tool, err := h.ToolService.GetTool(userID, teamID, ToolID)
|
|
if err != nil {
|
|
c.Logger().Error("error getting Tool", "error", err)
|
|
return echo.NewHTTPError(http.StatusBadRequest, "error getting Tool")
|
|
}
|
|
return c.JSON(http.StatusOK, Tool)
|
|
}
|
|
|
|
func (h *ToolHandler) GetToolParams(c *echo.Context) error {
|
|
userID := c.Get(auth.ContextUserIDKey).(string)
|
|
teamID := c.Param("space")
|
|
toolID := c.Param("tool")
|
|
tool, err := h.ToolService.GetTool(userID, teamID, toolID)
|
|
if err != nil {
|
|
c.Logger().Error("error getting Tool", "error", err, "teamid", teamID, "toolID", toolID)
|
|
return echo.NewHTTPError(http.StatusBadRequest, "error getting Tool")
|
|
}
|
|
toolImpl := h.ToolService.GetToolImpl(tool.Name)
|
|
return c.JSON(http.StatusOK, toolImpl.Params())
|
|
}
|
|
|
|
func (h *ToolHandler) CreateTool(c *echo.Context) error {
|
|
userID := c.Get(auth.ContextUserIDKey).(string)
|
|
teamID := c.Param("space")
|
|
var Tool domain.Tool
|
|
err := c.Bind(&Tool)
|
|
if err != nil {
|
|
c.Logger().Error("error binding Tool", "error", err)
|
|
return echo.NewHTTPError(http.StatusBadRequest, "error binding Tool")
|
|
}
|
|
Tool.TeamID = teamID
|
|
updTool, err := h.ToolService.CreateTool(userID, &Tool)
|
|
if err != nil {
|
|
c.Logger().Error("error creating Tool", "error", err)
|
|
return echo.NewHTTPError(http.StatusBadRequest, "error creating Tool")
|
|
}
|
|
return c.JSON(http.StatusOK, updTool)
|
|
}
|
|
|
|
func (h *ToolHandler) UpdateTool(c *echo.Context) error {
|
|
userID := c.Get(auth.ContextUserIDKey).(string)
|
|
teamID := c.Param("space")
|
|
var Tool domain.Tool
|
|
err := c.Bind(&Tool)
|
|
if err != nil {
|
|
c.Logger().Error("error binding Tool", "error", err)
|
|
return echo.NewHTTPError(http.StatusBadRequest, "error binding Tool")
|
|
}
|
|
Tool.TeamID = teamID
|
|
updTool, err := h.ToolService.UpdateTool(userID, &Tool)
|
|
if err != nil {
|
|
c.Logger().Error("error updating Tool", "error", err)
|
|
return echo.NewHTTPError(http.StatusBadRequest, "error updating Tool")
|
|
}
|
|
return c.JSON(http.StatusOK, updTool)
|
|
}
|
|
|
|
// func (h *ToolHandler) DeleteTool(c *echo.Context) error {
|
|
// userID := c.Get(auth.ContextUserIDKey).(string)
|
|
// teamID := c.Param("space")
|
|
// ToolID := c.Param("tool")
|
|
// err := h.ToolService.DeleteTool(userID, teamID, ToolID)
|
|
// if err != nil {
|
|
// c.Logger().Error("error creating Tool", "error", err)
|
|
// return echo.NewHTTPError(http.StatusBadRequest, "error creating Tool")
|
|
// }
|
|
// return c.JSON(http.StatusOK, ToolID)
|
|
// }
|