Three-pane webmail client. - Backend: FastAPI + async SQLAlchemy + arq worker (Postgres/Redis), IMAP/SMTP sync, threading, search, drafts/outbox with undo, attachments, 2FA. - Frontend: React 18 + Vite + TypeScript + TanStack Query + Tailwind; three-pane UI with rich-text composer, light/dark themes, resizable panels. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
22 lines
721 B
Python
22 lines
721 B
Python
"""Select the active SearchBackend from config (SPEC §8.1, env SEARCH_BACKEND)."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from app.config import get_settings
|
|
from app.search.base import SearchBackend
|
|
from app.search.pg import PgSearchBackend
|
|
|
|
_backend: SearchBackend | None = None
|
|
|
|
|
|
def get_search_backend() -> SearchBackend:
|
|
"""Return the process-wide SearchBackend (``pg`` in M0-M1, ``meili`` in M2)."""
|
|
global _backend
|
|
if _backend is None:
|
|
which = get_settings().search_backend
|
|
if which == "meili":
|
|
# TODO(spec): Meilisearch backend lands in M2.
|
|
raise NotImplementedError("meili backend is implemented in M2")
|
|
_backend = PgSearchBackend()
|
|
return _backend
|