118 lines
3.5 KiB
Go
118 lines
3.5 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"
|
|
"trankilou.fr/lassistanoque/backend/internal/service/user"
|
|
)
|
|
|
|
func NewAgentGroup(
|
|
prefix string,
|
|
e *echo.Group,
|
|
agentService *agent.Service,
|
|
userService *user.Service,
|
|
middlewares ...echo.MiddlewareFunc) *echo.Group {
|
|
|
|
agentHandler := &AgentHandler{
|
|
agentService: agentService,
|
|
userService: userService,
|
|
}
|
|
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
|
|
userService *user.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", "error", 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", "error", 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", "error", 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", "error", 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", "error", 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", "error", 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", "error", err)
|
|
return echo.NewHTTPError(http.StatusBadRequest, "error creating agent")
|
|
}
|
|
return c.JSON(http.StatusOK, agentID)
|
|
}
|
|
|
|
type DefaulAgentRequest struct {
|
|
AgentID string `json:"AgentId"`
|
|
}
|
|
type DefaulAgentResponse struct {
|
|
NewDefaultAgentID *string `json:"newDefaultAgentId"`
|
|
OldDefaultAgentID *string `json:"oldDefaultAgentId"`
|
|
}
|