package port

import (
	"context"

	"git.threesix.ai/jordan/persona-community-5/services/persona-api/internal/domain"
)

// PersonaRepository defines the interface for persona persistence operations.
type PersonaRepository interface {
	// Create stores a new persona.
	Create(ctx context.Context, persona *domain.Persona) error

	// GetByID returns a persona by ID.
	// Returns domain.ErrPersonaNotFound if not found.
	GetByID(ctx context.Context, id domain.PersonaID) (*domain.Persona, error)

	// List returns personas with pagination.
	List(ctx context.Context, limit, offset int) ([]*domain.Persona, error)

	// Update persists changes to an existing persona.
	// Returns domain.ErrPersonaNotFound if not found.
	Update(ctx context.Context, persona *domain.Persona) error
}
