package server

import (
	"net/http"

	"play-life-llm/internal/handler"
	"play-life-llm/internal/ollama"
	"play-life-llm/internal/tavily"

	"github.com/gorilla/mux"
)

// Config holds server and client configuration.
type Config struct {
	OllamaHost    string
	TavilyAPIKey  string
	DefaultModel  string
}

// NewRouter returns an HTTP router with /health and /ask registered.
func NewRouter(cfg Config) http.Handler {
	ollamaClient := ollama.NewClient(cfg.OllamaHost)
	tavilyClient := tavily.NewClient(cfg.TavilyAPIKey)

	askHandler := &handler.AskHandler{
		Ollama:        ollamaClient,
		Tavily:        tavilyClient,
		DefaultModel: cfg.DefaultModel,
	}

	r := mux.NewRouter()
	r.HandleFunc("/health", handler.Health).Methods(http.MethodGet)
	r.Handle("/ask", askHandler).Methods(http.MethodPost)
	return r
}
