health-apps-backend/main.py

77 lines
1.8 KiB
Python

import dotenv
from fastapi import FastAPI
from contextlib import asynccontextmanager
import logging
from fastapi.middleware.cors import CORSMiddleware
from fastapi.security import HTTPBearer
# db
from database import Base, engine
# routers
from apis import api_router
# middleware
from middleware.ErrorHandlerMiddleware import ErrorHandlerMiddleware, configure_exception_handlers
from middleware.CustomRequestTypeMiddleware import TextPlainMiddleware
dotenv.load_dotenv()
# Configure logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
)
logger = logging.getLogger(__name__)
@asynccontextmanager
async def lifespan(app: FastAPI):
logger.info("Starting application")
try:
Base.metadata.create_all(bind=engine)
logger.info("Created database tables")
except Exception as e:
logger.error(f"Error creating database tables: {e}")
raise e
yield
logger.info("Stopping application")
# Define the security scheme
bearer_scheme = HTTPBearer(scheme_name="Bearer Authentication")
app = FastAPI(
lifespan=lifespan,
title="Twillio Voice API",
description="API for Twillio Voice application",
version="1.0.0",
swagger_ui_parameters={"defaultModelsExpandDepth": -1}
)
# CORS middleware
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # Allows all origins
allow_credentials=True,
allow_methods=["*"], # Allows all methods
allow_headers=["*"], # Allows all headers
)
# Custom request type middleware
app.add_middleware(TextPlainMiddleware)
# Error handler middleware
app.add_middleware(ErrorHandlerMiddleware)
# Configure exception handlers
configure_exception_handlers(app)
@app.get("/")
async def hello_world():
return {"Hello": "World"}
# Routes
app.include_router(api_router, prefix="/api")