package port

import (
	"context"
	"time"
)

// PreferenceRow represents a single preference row from the database.
type PreferenceRow struct {
	UserID    string
	Key       string
	Value     string
	CreatedAt time.Time
	UpdatedAt time.Time
}

// PreferenceRepository defines the interface for preference persistence operations.
type PreferenceRepository interface {
	// GetByUserID returns all stored preferences for a user.
	// Returns an empty slice (not an error) if no preferences exist.
	GetByUserID(ctx context.Context, userID string) ([]PreferenceRow, error)

	// Upsert creates or updates a single preference for a user.
	Upsert(ctx context.Context, userID string, key string, value string) error
}
