Files
booking-service/app/main.py

56 lines
1.5 KiB
Python

"""BookingService — microservizio prenotazioni FastAPI.
Container Docker autonomo, DB dedicato, zero dipendenze dal resto.
Google OAuth2 per admin con vincolo dominio.
"""
import logging
from pathlib import Path
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse
from app.config import get_settings
from app.routers import public, admin, auth, customers
from app.routers import settings as settings_router
logging.basicConfig(level=logging.INFO, format="%(asctime)s %(name)s %(levelname)s %(message)s")
settings = get_settings()
app = FastAPI(
title=settings.app_name,
version="1.3.0",
docs_url="/api/docs",
redoc_url=None,
)
app.add_middleware(
CORSMiddleware,
allow_origins=settings.cors_origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app.include_router(auth.router)
app.include_router(public.router)
app.include_router(admin.router)
app.include_router(customers.router)
app.include_router(settings_router.router)
@app.get("/api/health")
def health():
return {"status": "ok", "service": settings.app_name, "version": "1.3.0"}
FRONTEND_DIR = Path("/app/frontend")
if FRONTEND_DIR.exists():
app.mount("/static", StaticFiles(directory=str(FRONTEND_DIR)), name="static")
@app.get("/")
def serve_index():
return FileResponse(str(FRONTEND_DIR / "index.html"))
@app.get("/admin")
def serve_admin():
return FileResponse(str(FRONTEND_DIR / "admin.html"))