101 lines
3.1 KiB
Go
101 lines
3.1 KiB
Go
package handlers
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/labstack/echo/v5"
|
|
"trankilou.fr/lassistanoque/backend/internal/domain"
|
|
"trankilou.fr/lassistanoque/backend/internal/service/agent"
|
|
"trankilou.fr/lassistanoque/backend/internal/service/auth"
|
|
)
|
|
|
|
func NewAgentGroup(prefix string, e *echo.Group, service *agent.Service, middlewares ...echo.MiddlewareFunc) *echo.Group {
|
|
agentHandler := &AgentHandler{
|
|
agentService: service,
|
|
}
|
|
agent := e.Group(prefix, middlewares...)
|
|
|
|
agent.GET("/:space", agentHandler.ListAgents)
|
|
agent.GET("/:space/:agent", agentHandler.GetAgent)
|
|
agent.PUT("/:space", agentHandler.UpdateAgent)
|
|
agent.POST("/:space", agentHandler.CreateAgent)
|
|
agent.DELETE("/:space/:agent", agentHandler.DeleteAgent)
|
|
|
|
return agent
|
|
}
|
|
|
|
type AgentHandler struct {
|
|
agentService *agent.Service
|
|
}
|
|
|
|
func (h *AgentHandler) ListAgents(c *echo.Context) error {
|
|
userID := c.Get(auth.ContextUserIDKey).(string)
|
|
teamID := c.Param("space")
|
|
agents, err := h.agentService.ListAgents(userID, teamID)
|
|
if err != nil {
|
|
c.Logger().Error("error listing agents", err)
|
|
return echo.NewHTTPError(http.StatusBadRequest, "error listing agents")
|
|
}
|
|
return c.JSON(http.StatusOK, agents)
|
|
}
|
|
|
|
func (h *AgentHandler) GetAgent(c *echo.Context) error {
|
|
userID := c.Get(auth.ContextUserIDKey).(string)
|
|
teamID := c.Param("space")
|
|
agentID := c.Param("agent")
|
|
agent, err := h.agentService.GetAgent(userID, teamID, agentID)
|
|
if err != nil {
|
|
c.Logger().Error("error getting agent: %s", err)
|
|
return echo.NewHTTPError(http.StatusBadRequest, "error getting agent")
|
|
}
|
|
return c.JSON(http.StatusOK, agent)
|
|
}
|
|
|
|
func (h *AgentHandler) CreateAgent(c *echo.Context) error {
|
|
userID := c.Get(auth.ContextUserIDKey).(string)
|
|
teamID := c.Param("space")
|
|
var agent domain.Agent
|
|
err := c.Bind(&agent)
|
|
if err != nil {
|
|
c.Logger().Error("error binding agent : %s", err)
|
|
return echo.NewHTTPError(http.StatusBadRequest, "error binding agent")
|
|
}
|
|
agent.TeamID = teamID
|
|
updagent, err := h.agentService.CreateAgent(userID, &agent)
|
|
if err != nil {
|
|
c.Logger().Error("error creating agent: %s", err)
|
|
return echo.NewHTTPError(http.StatusBadRequest, "error creating agent")
|
|
}
|
|
return c.JSON(http.StatusOK, updagent)
|
|
}
|
|
|
|
func (h *AgentHandler) UpdateAgent(c *echo.Context) error {
|
|
userID := c.Get(auth.ContextUserIDKey).(string)
|
|
teamID := c.Param("space")
|
|
var agent domain.Agent
|
|
err := c.Bind(&agent)
|
|
if err != nil {
|
|
c.Logger().Error("error binding agent : %s", err)
|
|
return echo.NewHTTPError(http.StatusBadRequest, "error binding agent")
|
|
}
|
|
agent.TeamID = teamID
|
|
updagent, err := h.agentService.UpdateAgent(userID, &agent)
|
|
if err != nil {
|
|
c.Logger().Error("error updating agent: %s", err)
|
|
return echo.NewHTTPError(http.StatusBadRequest, "error updating agent")
|
|
}
|
|
return c.JSON(http.StatusOK, updagent)
|
|
}
|
|
|
|
func (h *AgentHandler) DeleteAgent(c *echo.Context) error {
|
|
userID := c.Get(auth.ContextUserIDKey).(string)
|
|
teamID := c.Param("space")
|
|
agentID := c.Param("agent")
|
|
err := h.agentService.DeleteAgent(userID, teamID, agentID)
|
|
if err != nil {
|
|
c.Logger().Error("error creating agent: %s", err)
|
|
return echo.NewHTTPError(http.StatusBadRequest, "error creating agent")
|
|
}
|
|
return c.JSON(http.StatusOK, agentID)
|
|
}
|