aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/favourites
diff options
context:
space:
mode:
authorLeonardo Bishop <me@leonardobishop.com>2025-08-23 22:29:28 +0100
committerLeonardo Bishop <me@leonardobishop.com>2025-08-23 22:29:28 +0100
commitecc6a55aba7bb35fc778e7a53848396b88214151 (patch)
tree1b37a2dc5f4594155114da1ae0c4529d20a4c548 /pkg/favourites
parent8f7dec8ba6b2f9bde01afd0a110596ebbd43e0ed (diff)
Add multiple conferences feature
Diffstat (limited to 'pkg/favourites')
-rw-r--r--pkg/favourites/service.go63
1 files changed, 42 insertions, 21 deletions
diff --git a/pkg/favourites/service.go b/pkg/favourites/service.go
index cba249e..f73f400 100644
--- a/pkg/favourites/service.go
+++ b/pkg/favourites/service.go
@@ -12,9 +12,10 @@ import (
)
type Service interface {
- GetFavouritesForUser(id int32) (*[]sqlc.Favourite, error)
- CreateFavouriteForUser(id int32, eventGuid pgtype.UUID, eventId *int32) (*sqlc.Favourite, error)
- DeleteFavouriteForUserByEventDetails(id int32, eventGuid pgtype.UUID, eventId *int32) error
+ GetAllFavouritesForUser(id int32) (*[]sqlc.Favourite, error)
+ GetFavouritesForUserConference(id int32, conference int32) (*[]sqlc.Favourite, error)
+ CreateFavouriteForUser(id int32, eventGUID pgtype.UUID, eventID *int32, conferenceID int32) (*sqlc.Favourite, error)
+ DeleteFavouriteForUserByEventDetails(id int32, eventGUID pgtype.UUID, eventID *int32, conferenceID int32) error
}
var (
@@ -32,21 +33,22 @@ func NewService(pool *pgxpool.Pool) Service {
}
}
-func (s *service) CreateFavouriteForUser(id int32, eventGuid pgtype.UUID, eventId *int32) (*sqlc.Favourite, error) {
+func (s *service) CreateFavouriteForUser(userID int32, eventGUID pgtype.UUID, eventID *int32, conferenceID int32) (*sqlc.Favourite, error) {
queries := sqlc.New(s.pool)
- var pgEventId pgtype.Int4
- if eventId != nil {
- pgEventId = pgtype.Int4{
- Int32: *eventId,
+ var pgEventID pgtype.Int4
+ if eventID != nil {
+ pgEventID = pgtype.Int4{
+ Int32: *eventID,
Valid: true,
}
}
favourite, err := queries.CreateFavourite(context.Background(), sqlc.CreateFavouriteParams{
- UserID: id,
- EventGuid: eventGuid,
- EventID: pgEventId,
+ UserID: userID,
+ EventGuid: eventGUID,
+ EventID: pgEventID,
+ ConferenceID: conferenceID,
})
if err != nil {
return nil, fmt.Errorf("could not create favourite: %w", err)
@@ -55,10 +57,10 @@ func (s *service) CreateFavouriteForUser(id int32, eventGuid pgtype.UUID, eventI
return &favourite, nil
}
-func (s *service) GetFavouritesForUser(id int32) (*[]sqlc.Favourite, error) {
+func (s *service) GetAllFavouritesForUser(userID int32) (*[]sqlc.Favourite, error) {
queries := sqlc.New(s.pool)
- favourites, err := queries.GetFavouritesForUser(context.Background(), id)
+ favourites, err := queries.GetFavouritesForUser(context.Background(), userID)
if err != nil {
if errors.Is(err, pgx.ErrNoRows) {
empty := make([]sqlc.Favourite, 0)
@@ -70,20 +72,39 @@ func (s *service) GetFavouritesForUser(id int32) (*[]sqlc.Favourite, error) {
return &favourites, nil
}
-func (s *service) DeleteFavouriteForUserByEventDetails(id int32, eventGuid pgtype.UUID, eventId *int32) error {
+func (s *service) GetFavouritesForUserConference(userID int32, conferenceID int32) (*[]sqlc.Favourite, error) {
queries := sqlc.New(s.pool)
- var pgEventId pgtype.Int4
- if eventId != nil {
- pgEventId = pgtype.Int4{
- Int32: *eventId,
+ favourites, err := queries.GetFavouritesForUserConference(context.Background(), sqlc.GetFavouritesForUserConferenceParams{
+ UserID: userID,
+ ConferenceID: conferenceID,
+ })
+ if err != nil {
+ if errors.Is(err, pgx.ErrNoRows) {
+ empty := make([]sqlc.Favourite, 0)
+ return &empty, nil
+ }
+ return nil, fmt.Errorf("could not fetch user: %w", err)
+ }
+
+ return &favourites, nil
+}
+
+func (s *service) DeleteFavouriteForUserByEventDetails(id int32, eventGUID pgtype.UUID, eventID *int32, conferenceID int32) error {
+ queries := sqlc.New(s.pool)
+
+ var pgEventID pgtype.Int4
+ if eventID != nil {
+ pgEventID = pgtype.Int4{
+ Int32: *eventID,
Valid: true,
}
}
rowsAffected, err := queries.DeleteFavouriteByEventDetails(context.Background(), sqlc.DeleteFavouriteByEventDetailsParams{
- EventGuid: eventGuid,
- EventID: pgEventId,
- UserID: id,
+ EventGuid: eventGUID,
+ EventID: pgEventID,
+ UserID: id,
+ ConferenceID: conferenceID,
})
if err != nil {
return fmt.Errorf("could not delete favourite: %w", err)