|  | from contextlib import asynccontextmanager | 
					
						
						|  |  | 
					
						
						|  | 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 * | 
					
						
						|  |  | 
					
						
						|  | @asynccontextmanager | 
					
						
						|  | async def lifespan(app: FastAPI): | 
					
						
						|  |  | 
					
						
						|  | await create_db_and_tables() | 
					
						
						|  | yield | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | app = FastAPI(lifespan=lifespan) | 
					
						
						|  |  | 
					
						
						|  | 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}!"} | 
					
						
						|  |  |