"""Warstwa BAZODANOWA — usługa HTTP. Jedyne zadanie: przyjąć znormalizowane zapytanie z warstwy logicznej, wyszukać dane (w Excelu z cache lub w SQL) i zwrócić je w górę. Nie zna warstwy logicznej ani prezentacji. """ from __future__ import annotations from contextlib import asynccontextmanager from fastapi import FastAPI from app.config import settings from app.models import HealthInfo, SearchQuery, SearchResult from app.providers.factory import build_provider provider = build_provider(settings) @asynccontextmanager async def lifespan(app: FastAPI): provider.warmup() # zbuduj/odśwież indeks i cache przy starcie yield app = FastAPI(title="astrololo · warstwa bazodanowa", lifespan=lifespan) @app.post("/search", response_model=SearchResult) def search(query: SearchQuery) -> SearchResult: return provider.search(query) @app.get("/health", response_model=HealthInfo) def health() -> HealthInfo: return provider.health()