1package store
2
3import (
4 "context"
5
6 "github.com/charmbracelet/soft-serve/server/access"
7 "github.com/charmbracelet/soft-serve/server/db"
8 "github.com/charmbracelet/soft-serve/server/db/models"
9)
10
11// CollaboratorStore is an interface for managing collaborators.
12type CollaboratorStore interface {
13 GetCollabByUsernameAndRepo(ctx context.Context, h db.Handler, username string, repo string) (models.Collab, error)
14 AddCollabByUsernameAndRepo(ctx context.Context, h db.Handler, username string, repo string, level access.AccessLevel) error
15 RemoveCollabByUsernameAndRepo(ctx context.Context, h db.Handler, username string, repo string) error
16 ListCollabsByRepo(ctx context.Context, h db.Handler, repo string) ([]models.Collab, error)
17 ListCollabsByRepoAsUsers(ctx context.Context, h db.Handler, repo string) ([]models.User, error)
18}