diff options
| author | Leonardo Bishop <me@leonardobishop.com> | 2025-08-14 18:07:12 +0100 |
|---|---|---|
| committer | Leonardo Bishop <me@leonardobishop.com> | 2025-08-14 18:07:12 +0100 |
| commit | 4697556cac819c47d068819b9fc9c3b4ea84e279 (patch) | |
| tree | b832d8fc6b643a8b9d0eeca35c1268e1649da731 /api/handlers/favourites.go | |
| parent | dd49c9205bb04844b686b9c3396c40eb49d25826 (diff) | |
Merge confplanner-web and replace fiber with native net/http
Diffstat (limited to 'api/handlers/favourites.go')
| -rw-r--r-- | api/handlers/favourites.go | 54 |
1 files changed, 28 insertions, 26 deletions
diff --git a/api/handlers/favourites.go b/api/handlers/favourites.go index 862d366..502cb43 100644 --- a/api/handlers/favourites.go +++ b/api/handlers/favourites.go @@ -1,56 +1,58 @@ package handlers import ( + "net/http" + "github.com/LMBishop/confplanner/api/dto" "github.com/LMBishop/confplanner/pkg/favourites" - "github.com/gofiber/fiber/v2" + "github.com/LMBishop/confplanner/pkg/session" "github.com/jackc/pgx/v5/pgtype" ) -func CreateFavourite(service favourites.Service) fiber.Handler { - return func(c *fiber.Ctx) error { +func CreateFavourite(service favourites.Service) http.HandlerFunc { + return dto.WrapResponseFunc(func(w http.ResponseWriter, r *http.Request) error { var request dto.CreateFavouritesRequest - if err := readBody(c, &request); err != nil { + if err := dto.ReadDto(r, &request); err != nil { return err } if request.GUID == nil && request.ID == nil { return &dto.ErrorResponse{ - Code: fiber.StatusBadRequest, + Code: http.StatusBadRequest, Message: "One of event GUID or event ID must be specified", } } - uid := c.Locals("uid").(int32) + session := r.Context().Value("session").(*session.UserSession) var uuid pgtype.UUID if request.GUID != nil { if err := uuid.Scan(*request.GUID); err != nil { return &dto.ErrorResponse{ - Code: fiber.StatusBadRequest, + Code: http.StatusBadRequest, Message: "Bad event GUID", } } } - createdFavourite, err := service.CreateFavouriteForUser(uid, uuid, request.ID) + createdFavourite, err := service.CreateFavouriteForUser(session.UserID, uuid, request.ID) if err != nil { return err } return &dto.OkResponse{ - Code: fiber.StatusCreated, + Code: http.StatusCreated, Data: &dto.CreateFavouritesResponse{ ID: createdFavourite.ID, }, } - } + }) } -func GetFavourites(service favourites.Service) fiber.Handler { - return func(c *fiber.Ctx) error { - uid := c.Locals("uid").(int32) +func GetFavourites(service favourites.Service) http.HandlerFunc { + return dto.WrapResponseFunc(func(w http.ResponseWriter, r *http.Request) error { + session := r.Context().Value("session").(*session.UserSession) - favourites, err := service.GetFavouritesForUser(uid) + favourites, err := service.GetFavouritesForUser(session.UserID) if err != nil { return err } @@ -64,41 +66,41 @@ func GetFavourites(service favourites.Service) fiber.Handler { } return &dto.OkResponse{ - Code: fiber.StatusOK, + Code: http.StatusOK, Data: favouritesResponse, } - } + }) } -func DeleteFavourite(service favourites.Service) fiber.Handler { - return func(c *fiber.Ctx) error { +func DeleteFavourite(service favourites.Service) http.HandlerFunc { + return dto.WrapResponseFunc(func(w http.ResponseWriter, r *http.Request) error { var request dto.DeleteFavouritesRequest - if err := readBody(c, &request); err != nil { + if err := dto.ReadDto(r, &request); err != nil { return err } if request.GUID == nil && request.ID == nil { return &dto.ErrorResponse{ - Code: fiber.StatusBadRequest, + Code: http.StatusBadRequest, Message: "One of event GUID or event ID must be specified", } } - uid := c.Locals("uid").(int32) + session := r.Context().Value("session").(*session.UserSession) var err error var uuid pgtype.UUID if err := uuid.Scan(*request.GUID); err != nil { return &dto.ErrorResponse{ - Code: fiber.StatusBadRequest, + Code: http.StatusBadRequest, Message: "Bad event GUID", } } - err = service.DeleteFavouriteForUserByEventDetails(uid, uuid, request.ID) + err = service.DeleteFavouriteForUserByEventDetails(session.UserID, uuid, request.ID) if err != nil { if err == favourites.ErrNotFound { return &dto.ErrorResponse{ - Code: fiber.StatusNotFound, + Code: http.StatusNotFound, Message: "Favourite not found", } } @@ -106,7 +108,7 @@ func DeleteFavourite(service favourites.Service) fiber.Handler { } return &dto.OkResponse{ - Code: fiber.StatusOK, + Code: http.StatusOK, } - } + }) } |
