"""Search resource — full-text message search across sessions.

Backed by ``src/modules/search/search.controller.ts`` (``GET /search``).
The active search provider (built-in DB full-text or a plugin) answers; if none
is configured the server returns 501.
"""

from __future__ import annotations

from typing import TYPE_CHECKING

from ..types import SearchQueryParams, SearchResults

if TYPE_CHECKING:
    from .._http import HttpExecutor


class SearchResource:
    def __init__(self, http: "HttpExecutor") -> None:
        self._http = http

    def search(self, params: SearchQueryParams) -> SearchResults:
        """Search messages across sessions. ``q`` is required; all other fields optional."""
        return self._http.request("GET", "/api/search", query=params)
