2026-02-04 16:50:33 +02:00

49 lines
1.4 KiB
Python

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)