From d80a17f16a474183ae545a67e9ac9431ea1bc311 Mon Sep 17 00:00:00 2001 From: Robin Dittmar Date: Thu, 20 Aug 2026 15:28:51 +0200 Subject: [PATCH] feat: added "IsUserInList" to list repository --- internal/domain/list.go | 1 + internal/repository/list.go | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/internal/domain/list.go b/internal/domain/list.go index 6c938f9..c603377 100644 --- a/internal/domain/list.go +++ b/internal/domain/list.go @@ -26,6 +26,7 @@ type ListRepository interface { CreateList(ctx context.Context, name string, userIDs []string) (*List, error) AddUserToList(ctx context.Context, listID string, userID string) error RemoveUserFromList(ctx context.Context, listID string, userID string) error + IsUserInList(ctx context.Context, listID string, userID string) (bool, error) CreateListItem(ctx context.Context, listID string, title string) (*ListItem, error) UpdateListItem(ctx context.Context, listItemID string, title string, isCompleted bool) error } diff --git a/internal/repository/list.go b/internal/repository/list.go index 7e7a7ea..7433864 100644 --- a/internal/repository/list.go +++ b/internal/repository/list.go @@ -82,6 +82,20 @@ func (r *ListRepo) RemoveUserFromList(ctx context.Context, listID string, userID return nil } +func (r *ListRepo) IsUserInList(ctx context.Context, listID string, userID string) (bool, error) { + var cnt int + + err := r.db.QueryRowContext(ctx, + "SELECT COUNT(*) FROM list_users WHERE list_id = $1 AND user_id = $2", + listID, userID, + ).Scan(&cnt) + if err != nil { + return false, fmt.Errorf("failed to check if user is in list: %w", err) + } + + return cnt > 0, nil +} + func (r *ListRepo) CreateListItem(ctx context.Context, listID string, title string) (*domain.ListItem, error) { l := &domain.ListItem{Title: title}