from fastapi import FastAPI, Depends, HTTPException from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import FileResponse from sqlalchemy.orm import Session from app.core.config import settings from app.routers import auth, admin, learner from app.deps import get_current_user, get_db from app.models import Upload import uvicorn app = FastAPI(title="Lomda Hub", redirect_slashes=False) origins = [o.strip() for o in settings.cors_origins.split(",") if o.strip()] app.add_middleware( CORSMiddleware, allow_origins=origins or ["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(auth.router) app.include_router(admin.router) app.include_router(learner.router) @app.get("/") def root(): return {"status": "ok"} @app.get("/me") def me(user=Depends(get_current_user)): return {"id": user.id, "email": user.email, "role": user.role} @app.get("/uploads/{upload_id}") def serve_upload(upload_id: int, db: Session = Depends(get_db), user=Depends(get_current_user)): upload = db.get(Upload, upload_id) if not upload: raise HTTPException(status_code=404, detail="Upload not found") return FileResponse(upload.file_path, media_type=upload.content_type, filename=upload.filename) if __name__ == "__main__": uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)