56 lines
1.4 KiB
Go
56 lines
1.4 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/user"
|
|
)
|
|
|
|
func NewTeamGroup(prefix string, e *echo.Group, service *user.Service, middlewares ...echo.MiddlewareFunc) *echo.Group {
|
|
teamHandler := &TeamHandler{
|
|
userService: service,
|
|
}
|
|
h := e.Group(prefix, middlewares...)
|
|
h.GET("/:team", teamHandler.Get)
|
|
h.PUT("/:team", teamHandler.Update)
|
|
return h
|
|
}
|
|
|
|
type TeamHandler struct {
|
|
userService *user.Service
|
|
}
|
|
|
|
func (h TeamHandler) Get(c *echo.Context) error {
|
|
userID := c.Get(auth.ContextUserIDKey).(string)
|
|
teamID := c.Param("team")
|
|
user, err := h.userService.GetTeam(userID, teamID)
|
|
if err != nil {
|
|
return echo.NewHTTPError(http.StatusUnauthorized, err.Error())
|
|
}
|
|
return c.JSON(http.StatusOK, user)
|
|
}
|
|
|
|
func (h TeamHandler) Update(c *echo.Context) error {
|
|
userID := c.Get(auth.ContextUserIDKey).(string)
|
|
teamID := c.Param("team")
|
|
|
|
var updTeam domain.Team
|
|
if err := c.Bind(&updTeam); err != nil {
|
|
return c.String(http.StatusBadRequest, "bad request")
|
|
}
|
|
|
|
if teamID != updTeam.ID {
|
|
return c.String(http.StatusBadRequest, "bad request")
|
|
}
|
|
|
|
user, err := h.userService.UpdateTeam(userID, &updTeam)
|
|
if err != nil {
|
|
return c.String(http.StatusBadRequest, err.Error())
|
|
}
|
|
|
|
return c.JSON(http.StatusOK, user)
|
|
}
|