Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI | |
| from fastapi.middleware.cors import CORSMiddleware | |
| from app.core.sql_config import connect_to_database, disconnect_from_database | |
| from app.routers.appointment import router as appointment_router | |
| from app.routers.cart import router as cart_router | |
| from app.auth.middleware import add_security_middleware | |
| import logging | |
| from app.utils.logger import setup_logger | |
| # Configure logging | |
| logging.basicConfig( | |
| level=logging.INFO, | |
| format="%(asctime)s - %(levelname)s - %(message)s" | |
| ) | |
| logger = setup_logger(__name__) | |
| app = FastAPI( | |
| title="Bookings / Appointment Management", | |
| description="A microservice to manage bookings, appointments, and cart drafts", | |
| version="1.0.0" | |
| ) | |
| # Add CORS middleware for testing phase - permissive settings | |
| app.add_middleware( | |
| CORSMiddleware, | |
| # Allow any localhost (IPv4/IPv6) with any port | |
| allow_origin_regex=r"^https?://(localhost|127\.0\.0\.1|\[::1\])(:\d+)?$", | |
| allow_credentials=True, | |
| allow_methods=["*"], # Allows all methods (GET, POST, PUT, DELETE, etc.) | |
| allow_headers=["*"], # Allows all headers | |
| ) | |
| # Add security middleware | |
| add_security_middleware(app) | |
| # Startup event to initialize database connection | |
| async def startup(): | |
| try: | |
| await connect_to_database() | |
| logger.info("Database connected successfully.") | |
| # Log all registered routes | |
| for route in app.router.routes: | |
| logger.info(f"Registered route: {route.path}") | |
| except Exception as e: | |
| logger.error(f"Error connecting to the database: {e}") | |
| # Shutdown event to close database connection | |
| async def shutdown(): | |
| try: | |
| await disconnect_from_database() | |
| logger.info("Database disconnected successfully.") | |
| except Exception as e: | |
| logger.error(f"Error disconnecting from the database: {e}") | |
| # Include appointment router | |
| app.include_router( | |
| appointment_router, | |
| prefix="/api/v1/appointments", | |
| tags=["Appointments"], | |
| ) | |
| # Include cart router | |
| app.include_router( | |
| cart_router, | |
| prefix="/api/v1/cart", | |
| tags=["Cart Management"], | |
| ) |