package scraper

import (
	"context"

	"git.leaktechnologies.dev/stu/Goondex/internal/model"
)

// Scraper defines the interface that all scrapers must implement
type Scraper interface {
	// Name returns the scraper's unique identifier
	Name() string

	// SearchPerformers searches for performers by query string
	SearchPerformers(ctx context.Context, query string) ([]model.Performer, error)

	// SearchStudios searches for studios by query string
	SearchStudios(ctx context.Context, query string) ([]model.Studio, error)

	// SearchScenes searches for scenes by query string
	SearchScenes(ctx context.Context, query string) ([]model.Scene, error)

	// GetSceneByID retrieves a scene by its remote ID
	GetSceneByID(ctx context.Context, remoteID string) (*model.Scene, error)

	// GetPerformerByID retrieves a performer by its remote ID
	GetPerformerByID(ctx context.Context, remoteID string) (*model.Performer, error)

	// GetStudioByID retrieves a studio by its remote ID
	GetStudioByID(ctx context.Context, remoteID string) (*model.Studio, error)
}
