CoolFace
Modelpublic

aigenrec/luminabackend

sourceHugging Faceupdated 10mo agoView on Hugging Face
0likes
projects.py82 linesDownload Raw Back to endpoints
1from fastapi import APIRouter, HTTPException, Depends, status2from services.project_service import project_service3from models.schemas import ProjectCreate, ProjectResponse4from typing import List, Any5from api.deps import get_current_user6 7router = APIRouter()8 9@router.post("/", response_model=ProjectResponse)10async def create_project(11    project_in: ProjectCreate,12    current_user: dict = Depends(get_current_user)13):14    """15    Create a new project.16    """17    try:18        project = await project_service.create_project(user_id=current_user["id"], name=project_in.name)19        return project20    except Exception as e:21        raise HTTPException(status_code=500, detail=str(e))22 23@router.get("/", response_model=List[Any]) 24async def get_projects(25    current_user: dict = Depends(get_current_user)26):27    """28    Get all projects for the current user.29    """30    try:31        projects = await project_service.get_projects(user_id=current_user["id"])32        return projects33    except Exception as e:34        raise HTTPException(status_code=500, detail=str(e))35 36@router.get("/{project_id}", response_model=ProjectResponse)37async def get_project(38    project_id: str,39    current_user: dict = Depends(get_current_user)40):41    """42    Get project details.43    """44    try:45        project = await project_service.get_project(project_id)46        if not project:47            raise HTTPException(status_code=404, detail="Project not found")48        49        # Authorization Check: Ensure project belongs to user50        if project["user_id"] != current_user["id"]:51             raise HTTPException(status_code=403, detail="Not authorized to access this project")52             53        return project54    except HTTPException as he:55        raise he56    except Exception as e:57        raise HTTPException(status_code=500, detail=str(e))58 59@router.delete("/{project_id}", status_code=status.HTTP_204_NO_CONTENT)60async def delete_project(61    project_id: str,62    current_user: dict = Depends(get_current_user)63):64    """65    Delete a project.66    """67    try:68        project = await project_service.get_project(project_id)69        if not project:70            raise HTTPException(status_code=404, detail="Project not found")71        72        if project["user_id"] != current_user["id"]:73             raise HTTPException(status_code=403, detail="Not authorized to delete this project")74             75        success = await project_service.delete_project(project_id)76        if not success:77            raise HTTPException(status_code=500, detail="Failed to delete project")78            79    except HTTPException as he:80        raise he81    except Exception as e:82        raise HTTPException(status_code=500, detail=str(e))