|
from contextlib import asynccontextmanager |
|
from fastapi.middleware.cors import CORSMiddleware |
|
from fastapi import Depends, FastAPI |
|
|
|
from .db import User, create_db_and_tables |
|
from .schemas import UserCreate, UserRead, UserUpdate |
|
from .users import auth_backend, current_active_user, fastapi_users |
|
from .llm import llm_router |
|
|
|
@asynccontextmanager |
|
async def lifespan(app: FastAPI): |
|
|
|
await create_db_and_tables() |
|
yield |
|
|
|
|
|
|
|
|
|
app = FastAPI( |
|
docs_url="/", |
|
title="OpenGenAI", |
|
description="Your Excellect AI Physician", |
|
lifespan=lifespan |
|
) |
|
|
|
app.add_middleware( |
|
CORSMiddleware, |
|
allow_origins=["*"], |
|
allow_credentials=True, |
|
allow_methods=["*"], |
|
allow_headers=["*"], |
|
) |
|
|
|
app.include_router( |
|
fastapi_users.get_auth_router(auth_backend), prefix="/auth/jwt", tags=["auth"] |
|
) |
|
app.include_router( |
|
llm_router, |
|
tags=["llm"] |
|
) |
|
app.include_router( |
|
fastapi_users.get_register_router(UserRead, UserCreate), |
|
prefix="/auth", |
|
tags=["auth"], |
|
) |
|
app.include_router( |
|
fastapi_users.get_reset_password_router(), |
|
prefix="/auth", |
|
tags=["auth"], |
|
) |
|
app.include_router( |
|
fastapi_users.get_verify_router(UserRead), |
|
prefix="/auth", |
|
tags=["auth"], |
|
) |
|
app.include_router( |
|
fastapi_users.get_users_router(UserRead, UserUpdate), |
|
prefix="/users", |
|
tags=["users"], |
|
) |
|
|
|
|
|
@app.get("/authenticated-route") |
|
async def authenticated_route(user: User = Depends(current_active_user)): |
|
return {"message": f"Hello {user.email}!"} |
|
|