// Package client provides a Go client for Devour server.
package client

import (
	"context"
	"net/http"
)

// Client is a Devour API client.
type Client struct {
	baseURL    string
	httpClient *http.Client
}

// New creates a new Devour client.
func New(baseURL string) *Client {
	return &Client{
		baseURL:    baseURL,
		httpClient: &http.Client{},
	}
}

// Query searches indexed documents.
func (c *Client) Query(ctx context.Context, query string, limit int) (*QueryResponse, error) {
	// TODO: Implement HTTP request to /query
	return nil, nil
}

// AddDocuments adds documents to the index.
func (c *Client) AddDocuments(ctx context.Context, docs []*Document) error {
	// TODO: Implement HTTP request to /documents
	return nil
}

// Status returns index status.
func (c *Client) Status(ctx context.Context) (*Status, error) {
	// TODO: Implement HTTP request to /status
	return nil, nil
}

// QueryResponse represents a query response.
type QueryResponse struct {
	Query   string        `json:"query"`
	Results []interface{} `json:"results"`
	Total   int           `json:"total"`
	TookMs  int64         `json:"took_ms"`
}

// Document represents a document.
type Document struct {
	ID       string                 `json:"id"`
	Content  string                 `json:"content"`
	Metadata map[string]interface{} `json:"metadata,omitempty"`
}

// Status represents index status.
type Status struct {
	Healthy       bool `json:"healthy"`
	DocumentCount int  `json:"document_count"`
	ChunkCount    int  `json:"chunk_count"`
}
