package members import ( "context" "shared-album/internal/models" ) // Repository is the persistence contract for the members domain. type Repository interface { Role(ctx context.Context, albumID, userID string) (string, error) List(ctx context.Context, albumID string) ([]models.AlbumMember, error) Add(ctx context.Context, albumID, userID, role string, invitedBy *string) error UpdateRole(ctx context.Context, albumID, userID, role string) error Remove(ctx context.Context, albumID, userID string) error CreateInvite(ctx context.Context, inv *models.Invite) error GetInviteByToken(ctx context.Context, token string) (*models.Invite, error) IncrementUses(ctx context.Context, id string) error }