Files
border-red-post-nalati/backend/app/main.py

26 lines
1.1 KiB
Python

from contextlib import asynccontextmanager
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from sqlalchemy import text
from app.core.config import settings
from app.db.session import Base, engine
from app.models import KnowledgeItem # noqa: F401
from app.api.routes import health, chat, knowledge
@asynccontextmanager
async def lifespan(app: FastAPI):
# Convenience for local bootstrap. Use Alembic migrations before production.
with engine.begin() as connection:
connection.execute(text("CREATE EXTENSION IF NOT EXISTS vector"))
Base.metadata.create_all(bind=engine)
yield
app = FastAPI(title=settings.app_name, version="0.1.0", lifespan=lifespan)
app.add_middleware(CORSMiddleware, allow_origins=settings.cors_origin_list, allow_credentials=True, allow_methods=["*"], allow_headers=["*"])
app.include_router(health.router, prefix=settings.api_prefix)
app.include_router(chat.router, prefix=settings.api_prefix)
app.include_router(knowledge.router, prefix=settings.api_prefix)
@app.get("/")
def root():
return {"message": "Nalati Tourism QA API", "docs": "/docs"}