fixed blocking issues
This commit is contained in:
+107
-40
@@ -20,7 +20,9 @@ func NewHandler(service Service) *Handler {
|
||||
}
|
||||
}
|
||||
|
||||
// RegisterRoutes registers kanban routes on the provided group (e.g. /admin/v1/kanban).
|
||||
// RegisterRoutes registers kanban routes on the Echo group passed by the caller.
|
||||
// The caller MUST mount a /kanban subgroup first (e.g. adminV1.Group("/kanban") or v1.Group("/kanban"))
|
||||
// so paths resolve to .../kanban/boards, not .../boards.
|
||||
func (h *Handler) RegisterRoutes(router *echo.Group) {
|
||||
router.POST("/boards", h.CreateBoard)
|
||||
router.GET("/boards", h.GetBoardsByUser)
|
||||
@@ -66,8 +68,8 @@ func (h *Handler) CreateBoard(c echo.Context) error {
|
||||
req.UserID = ownerID
|
||||
|
||||
board, err := h.service.CreateBoard(c.Request().Context(), req)
|
||||
if err != nil {
|
||||
return response.InternalServerError(c, "Failed to create board")
|
||||
if err := handleServiceError(c, err, "Failed to create board"); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return response.Created(c, board, "Board created successfully")
|
||||
@@ -87,9 +89,14 @@ func (h *Handler) CreateBoard(c echo.Context) error {
|
||||
func (h *Handler) GetBoardByID(c echo.Context) error {
|
||||
id := c.Param("id")
|
||||
|
||||
board, err := h.service.GetBoardByID(c.Request().Context(), id)
|
||||
if err != nil {
|
||||
return response.InternalServerError(c, "Failed to get board")
|
||||
ownerID, exists := ownerIDFromContext(c)
|
||||
if !exists {
|
||||
return response.Unauthorized(c, "User not authenticated")
|
||||
}
|
||||
|
||||
board, err := h.service.GetBoardByID(c.Request().Context(), id, ownerID)
|
||||
if err := handleServiceError(c, err, "Failed to get board"); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return response.Success(c, board, "Board retrieved successfully")
|
||||
@@ -111,8 +118,8 @@ func (h *Handler) GetBoardsByUser(c echo.Context) error {
|
||||
}
|
||||
|
||||
boards, err := h.service.GetBoardsByUserID(c.Request().Context(), ownerID)
|
||||
if err != nil {
|
||||
return response.InternalServerError(c, "Failed to get boards")
|
||||
if err := handleServiceError(c, err, "Failed to get boards"); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return response.Success(c, boards, "Boards retrieved successfully")
|
||||
@@ -135,8 +142,8 @@ func (h *Handler) GetDefaultBoard(c echo.Context) error {
|
||||
}
|
||||
|
||||
board, err := h.service.GetDefaultBoard(c.Request().Context(), ownerID)
|
||||
if err != nil {
|
||||
return response.InternalServerError(c, "Failed to get default board")
|
||||
if err := handleServiceError(c, err, "Failed to get default board"); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return response.Success(c, board, "Default board retrieved successfully")
|
||||
@@ -163,9 +170,14 @@ func (h *Handler) UpdateBoard(c echo.Context) error {
|
||||
|
||||
req.ID = c.Param("id")
|
||||
|
||||
board, err := h.service.UpdateBoard(c.Request().Context(), req)
|
||||
if err != nil {
|
||||
return response.InternalServerError(c, "Failed to update board")
|
||||
ownerID, exists := ownerIDFromContext(c)
|
||||
if !exists {
|
||||
return response.Unauthorized(c, "User not authenticated")
|
||||
}
|
||||
|
||||
board, err := h.service.UpdateBoard(c.Request().Context(), req, ownerID)
|
||||
if err := handleServiceError(c, err, "Failed to update board"); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return response.Success(c, board, "Board updated successfully")
|
||||
@@ -185,8 +197,13 @@ func (h *Handler) UpdateBoard(c echo.Context) error {
|
||||
func (h *Handler) DeleteBoard(c echo.Context) error {
|
||||
id := c.Param("id")
|
||||
|
||||
if err := h.service.DeleteBoard(c.Request().Context(), id); err != nil {
|
||||
return response.InternalServerError(c, "Failed to delete board")
|
||||
ownerID, exists := ownerIDFromContext(c)
|
||||
if !exists {
|
||||
return response.Unauthorized(c, "User not authenticated")
|
||||
}
|
||||
|
||||
if err := h.service.DeleteBoard(c.Request().Context(), id, ownerID); err != nil {
|
||||
return handleServiceError(c, err, "Failed to delete board")
|
||||
}
|
||||
|
||||
return c.NoContent(http.StatusNoContent)
|
||||
@@ -209,9 +226,14 @@ func (h *Handler) CreateColumn(c echo.Context) error {
|
||||
return response.ValidationError(c, "Invalid request data", err.Error())
|
||||
}
|
||||
|
||||
column, err := h.service.CreateColumn(c.Request().Context(), req)
|
||||
if err != nil {
|
||||
return response.InternalServerError(c, "Failed to create column")
|
||||
ownerID, exists := ownerIDFromContext(c)
|
||||
if !exists {
|
||||
return response.Unauthorized(c, "User not authenticated")
|
||||
}
|
||||
|
||||
column, err := h.service.CreateColumn(c.Request().Context(), req, ownerID)
|
||||
if err := handleServiceError(c, err, "Failed to create column"); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return response.Created(c, column, "Column created successfully")
|
||||
@@ -238,9 +260,14 @@ func (h *Handler) UpdateColumn(c echo.Context) error {
|
||||
|
||||
req.ID = c.Param("id")
|
||||
|
||||
column, err := h.service.UpdateColumn(c.Request().Context(), req)
|
||||
if err != nil {
|
||||
return response.InternalServerError(c, "Failed to update column")
|
||||
ownerID, exists := ownerIDFromContext(c)
|
||||
if !exists {
|
||||
return response.Unauthorized(c, "User not authenticated")
|
||||
}
|
||||
|
||||
column, err := h.service.UpdateColumn(c.Request().Context(), req, ownerID)
|
||||
if err := handleServiceError(c, err, "Failed to update column"); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return response.Success(c, column, "Column updated successfully")
|
||||
@@ -260,8 +287,13 @@ func (h *Handler) UpdateColumn(c echo.Context) error {
|
||||
func (h *Handler) DeleteColumn(c echo.Context) error {
|
||||
id := c.Param("id")
|
||||
|
||||
if err := h.service.DeleteColumn(c.Request().Context(), id); err != nil {
|
||||
return response.InternalServerError(c, "Failed to delete column")
|
||||
ownerID, exists := ownerIDFromContext(c)
|
||||
if !exists {
|
||||
return response.Unauthorized(c, "User not authenticated")
|
||||
}
|
||||
|
||||
if err := h.service.DeleteColumn(c.Request().Context(), id, ownerID); err != nil {
|
||||
return handleServiceError(c, err, "Failed to delete column")
|
||||
}
|
||||
|
||||
return c.NoContent(http.StatusNoContent)
|
||||
@@ -284,8 +316,13 @@ func (h *Handler) ReorderColumns(c echo.Context) error {
|
||||
return response.ValidationError(c, "Invalid request data", err.Error())
|
||||
}
|
||||
|
||||
if err := h.service.ReorderColumns(c.Request().Context(), req); err != nil {
|
||||
return response.InternalServerError(c, "Failed to reorder columns")
|
||||
ownerID, exists := ownerIDFromContext(c)
|
||||
if !exists {
|
||||
return response.Unauthorized(c, "User not authenticated")
|
||||
}
|
||||
|
||||
if err := h.service.ReorderColumns(c.Request().Context(), req, ownerID); err != nil {
|
||||
return handleServiceError(c, err, "Failed to reorder columns")
|
||||
}
|
||||
|
||||
return response.Success(c, map[string]string{"message": "Columns reordered successfully"}, "Columns reordered successfully")
|
||||
@@ -327,9 +364,14 @@ func (h *Handler) CreateCard(c echo.Context) error {
|
||||
}
|
||||
}
|
||||
|
||||
card, err := h.service.CreateCard(c.Request().Context(), req)
|
||||
if err != nil {
|
||||
return response.InternalServerError(c, "Failed to create card")
|
||||
ownerID, exists := ownerIDFromContext(c)
|
||||
if !exists {
|
||||
return response.Unauthorized(c, "User not authenticated")
|
||||
}
|
||||
|
||||
card, err := h.service.CreateCard(c.Request().Context(), req, ownerID)
|
||||
if err := handleServiceError(c, err, "Failed to create card"); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return response.Created(c, card, "Card created successfully")
|
||||
@@ -349,9 +391,14 @@ func (h *Handler) CreateCard(c echo.Context) error {
|
||||
func (h *Handler) GetCardByID(c echo.Context) error {
|
||||
id := c.Param("id")
|
||||
|
||||
card, err := h.service.GetCardByID(c.Request().Context(), id)
|
||||
if err != nil {
|
||||
return response.InternalServerError(c, "Failed to get card")
|
||||
ownerID, exists := ownerIDFromContext(c)
|
||||
if !exists {
|
||||
return response.Unauthorized(c, "User not authenticated")
|
||||
}
|
||||
|
||||
card, err := h.service.GetCardByID(c.Request().Context(), id, ownerID)
|
||||
if err := handleServiceError(c, err, "Failed to get card"); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return response.Success(c, card, "Card retrieved successfully")
|
||||
@@ -385,9 +432,14 @@ func (h *Handler) UpdateCard(c echo.Context) error {
|
||||
}
|
||||
}
|
||||
|
||||
card, err := h.service.UpdateCard(c.Request().Context(), req)
|
||||
if err != nil {
|
||||
return response.InternalServerError(c, "Failed to update card")
|
||||
ownerID, exists := ownerIDFromContext(c)
|
||||
if !exists {
|
||||
return response.Unauthorized(c, "User not authenticated")
|
||||
}
|
||||
|
||||
card, err := h.service.UpdateCard(c.Request().Context(), req, ownerID)
|
||||
if err := handleServiceError(c, err, "Failed to update card"); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return response.Success(c, card, "Card updated successfully")
|
||||
@@ -407,8 +459,13 @@ func (h *Handler) UpdateCard(c echo.Context) error {
|
||||
func (h *Handler) DeleteCard(c echo.Context) error {
|
||||
id := c.Param("id")
|
||||
|
||||
if err := h.service.DeleteCard(c.Request().Context(), id); err != nil {
|
||||
return response.InternalServerError(c, "Failed to delete card")
|
||||
ownerID, exists := ownerIDFromContext(c)
|
||||
if !exists {
|
||||
return response.Unauthorized(c, "User not authenticated")
|
||||
}
|
||||
|
||||
if err := h.service.DeleteCard(c.Request().Context(), id, ownerID); err != nil {
|
||||
return handleServiceError(c, err, "Failed to delete card")
|
||||
}
|
||||
|
||||
return c.NoContent(http.StatusNoContent)
|
||||
@@ -432,8 +489,13 @@ func (h *Handler) MoveCard(c echo.Context) error {
|
||||
return response.ValidationError(c, "Invalid request data", err.Error())
|
||||
}
|
||||
|
||||
if err := h.service.MoveCard(c.Request().Context(), req); err != nil {
|
||||
return response.InternalServerError(c, "Failed to move card")
|
||||
ownerID, exists := ownerIDFromContext(c)
|
||||
if !exists {
|
||||
return response.Unauthorized(c, "User not authenticated")
|
||||
}
|
||||
|
||||
if err := h.service.MoveCard(c.Request().Context(), req, ownerID); err != nil {
|
||||
return handleServiceError(c, err, "Failed to move card")
|
||||
}
|
||||
|
||||
return response.Success(c, map[string]string{"message": "Card moved successfully"}, "Card moved successfully")
|
||||
@@ -456,8 +518,13 @@ func (h *Handler) ReorderCards(c echo.Context) error {
|
||||
return response.ValidationError(c, "Invalid request data", err.Error())
|
||||
}
|
||||
|
||||
if err := h.service.ReorderCards(c.Request().Context(), req); err != nil {
|
||||
return response.InternalServerError(c, "Failed to reorder cards")
|
||||
ownerID, exists := ownerIDFromContext(c)
|
||||
if !exists {
|
||||
return response.Unauthorized(c, "User not authenticated")
|
||||
}
|
||||
|
||||
if err := h.service.ReorderCards(c.Request().Context(), req, ownerID); err != nil {
|
||||
return handleServiceError(c, err, "Failed to reorder cards")
|
||||
}
|
||||
|
||||
return response.Success(c, map[string]string{"message": "Cards reordered successfully"}, "Cards reordered successfully")
|
||||
|
||||
Reference in New Issue
Block a user