diff --git a/backend/app/api/__pycache__/projects.cpython-312.pyc b/backend/app/api/__pycache__/projects.cpython-312.pyc index 812ab690..10d14ecc 100644 Binary files a/backend/app/api/__pycache__/projects.cpython-312.pyc and b/backend/app/api/__pycache__/projects.cpython-312.pyc differ diff --git a/backend/app/api/projects.py b/backend/app/api/projects.py index 928e9720..22ecba5f 100644 --- a/backend/app/api/projects.py +++ b/backend/app/api/projects.py @@ -54,6 +54,9 @@ def list_project_members(project_id: int, session: Session = Depends(get_session @router.post("/{project_id}/members", response_model=ProjectMember) def add_project_member(project_id: int, payload: ProjectMember, session: Session = Depends(get_session)): + existing = session.exec(select(ProjectMember).where(ProjectMember.project_id == project_id, ProjectMember.employee_id == payload.employee_id)).first() + if existing: + raise HTTPException(status_code=409, detail="Member already added") member = ProjectMember(project_id=project_id, employee_id=payload.employee_id, role=payload.role) session.add(member) session.commit() diff --git a/frontend/src/app/projects/[id]/page.tsx b/frontend/src/app/projects/[id]/page.tsx index 30acfe99..6845cfe2 100644 --- a/frontend/src/app/projects/[id]/page.tsx +++ b/frontend/src/app/projects/[id]/page.tsx @@ -166,6 +166,9 @@ export default function ProjectDetailPage() { ))} + {addMember.error ? ( +