|
|
|
|
|
from contextlib import asynccontextmanager |
|
|
from fastapi import FastAPI, Request, Form |
|
|
from fastapi.responses import HTMLResponse |
|
|
from fastapi.templating import Jinja2Templates |
|
|
from api.endpoints import router |
|
|
from db.initializer import initialize_dbs |
|
|
from models.initializer import initialize_models |
|
|
from service.search import search |
|
|
|
|
|
templates = Jinja2Templates(directory="templates") |
|
|
|
|
|
@asynccontextmanager |
|
|
async def lifespan(app: FastAPI): |
|
|
initialize_dbs() |
|
|
initialize_models(app) |
|
|
yield |
|
|
|
|
|
app = FastAPI(lifespan=lifespan) |
|
|
app.include_router(router) |
|
|
|
|
|
@app.get("/", response_class=HTMLResponse) |
|
|
def index(request: Request): |
|
|
return templates.TemplateResponse("index.html", {"request": request, "results": None}) |
|
|
|
|
|
@app.post("/demo", response_class=HTMLResponse) |
|
|
def demo(request: Request, query: str = Form(...)): |
|
|
results = search(query) |
|
|
return templates.TemplateResponse("index.html", {"request": request, "results": results, "query": query}) |
|
|
|
|
|
|
|
|
|