from fastapi import FastAPI, Depends from fastapi.middleware.cors import CORSMiddleware from sqlalchemy.orm import Session from app.database import Base, engine, get_db from app.models import User, Address, Report, ServiceRating from app.routers import auth, addresses, eta, reports, admin, staff from app.routers.deps import get_current_user from app.schemas.auth import UserOut # Create all tables on startup Base.metadata.create_all(bind=engine) app = FastAPI( title="Mi Ruta Limpia API", description="Sistema de notificación inteligente de recolección de residuos — Gobierno de Celaya", version="1.0.0", ) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(auth.router, prefix="/api/v1") app.include_router(addresses.router, prefix="/api/v1") app.include_router(eta.router, prefix="/api/v1") app.include_router(reports.router, prefix="/api/v1") app.include_router(admin.router, prefix="/api/v1") app.include_router(staff.router, prefix="/api/v1") @app.get("/api/v1/me", response_model=UserOut, tags=["auth"]) def get_me(user=Depends(get_current_user)): return user @app.get("/health", tags=["system"]) def health(): return {"status": "ok", "service": "Mi Ruta Limpia API"} @app.get("/", tags=["system"]) def root(): return {"message": "Mi Ruta Limpia API — Gobierno de Celaya", "docs": "/docs"}