// codeberg.org/mapleopentech/monorepo/cloud/maplefile-backend/internal/domain/blockedemail/interface.go
package blockedemail

import (
	"context"

	"github.com/gocql/gocql"
)

// BlockedEmailRepository defines the interface for blocked email data access
type BlockedEmailRepository interface {
	// Create adds a new blocked email entry
	Create(ctx context.Context, blockedEmail *BlockedEmail) error

	// Get retrieves a specific blocked email entry
	Get(ctx context.Context, userID gocql.UUID, blockedEmail string) (*BlockedEmail, error)

	// List retrieves all blocked emails for a user
	List(ctx context.Context, userID gocql.UUID) ([]*BlockedEmail, error)

	// Delete removes a blocked email entry
	Delete(ctx context.Context, userID gocql.UUID, blockedEmail string) error

	// IsBlocked checks if an email is blocked by a user
	IsBlocked(ctx context.Context, userID gocql.UUID, email string) (bool, error)

	// Count returns the number of blocked emails for a user
	Count(ctx context.Context, userID gocql.UUID) (int, error)
}
