aboutsummaryrefslogtreecommitdiffstats
path: root/api/handlers/favourites.go
diff options
context:
space:
mode:
Diffstat (limited to 'api/handlers/favourites.go')
-rw-r--r--api/handlers/favourites.go54
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,
}
- }
+ })
}