fix: member/milestone endpoints - role_id column, schema fixes
This commit is contained in:
@@ -252,16 +252,43 @@ def add_project_member(
|
|||||||
).first()
|
).first()
|
||||||
if existing:
|
if existing:
|
||||||
raise HTTPException(status_code=400, detail="User already a member")
|
raise HTTPException(status_code=400, detail="User already a member")
|
||||||
db_member = models.ProjectMember(project_id=project_id, user_id=member.user_id, role=member.role)
|
# Convert role name to role_id
|
||||||
|
role = db.query(Role).filter(Role.name == member.role).first()
|
||||||
|
role_id = role.id if role else None
|
||||||
|
db_member = models.ProjectMember(project_id=project_id, user_id=member.user_id, role_id=role_id)
|
||||||
db.add(db_member)
|
db.add(db_member)
|
||||||
db.commit()
|
db.commit()
|
||||||
db.refresh(db_member)
|
db.refresh(db_member)
|
||||||
return db_member
|
role_name = "developer"
|
||||||
|
if db_member.role_id:
|
||||||
|
role = db.query(Role).filter(Role.id == db_member.role_id).first()
|
||||||
|
if role:
|
||||||
|
role_name = role.name
|
||||||
|
return {
|
||||||
|
"id": db_member.id,
|
||||||
|
"user_id": db_member.user_id,
|
||||||
|
"project_id": db_member.project_id,
|
||||||
|
"role": role_name
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@router.get("/{project_id}/members", response_model=List[schemas.ProjectMemberResponse])
|
@router.get("/{project_id}/members", response_model=List[schemas.ProjectMemberResponse])
|
||||||
def list_project_members(project_id: int, db: Session = Depends(get_db)):
|
def list_project_members(project_id: int, db: Session = Depends(get_db)):
|
||||||
return db.query(models.ProjectMember).filter(models.ProjectMember.project_id == project_id).all()
|
members = db.query(models.ProjectMember).filter(models.ProjectMember.project_id == project_id).all()
|
||||||
|
result = []
|
||||||
|
for m in members:
|
||||||
|
role_name = "developer"
|
||||||
|
if m.role_id:
|
||||||
|
role = db.query(Role).filter(Role.id == m.role_id).first()
|
||||||
|
if role:
|
||||||
|
role_name = role.name
|
||||||
|
result.append({
|
||||||
|
"id": m.id,
|
||||||
|
"user_id": m.user_id,
|
||||||
|
"project_id": m.project_id,
|
||||||
|
"role": role_name
|
||||||
|
})
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
@router.delete("/{project_id}/members/{user_id}", status_code=status.HTTP_204_NO_CONTENT)
|
@router.delete("/{project_id}/members/{user_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||||
|
|||||||
@@ -190,8 +190,11 @@ class ProjectMemberCreate(ProjectMemberBase):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class ProjectMemberResponse(ProjectMemberBase):
|
class ProjectMemberResponse(BaseModel):
|
||||||
id: int
|
id: int
|
||||||
|
user_id: int
|
||||||
|
project_id: int
|
||||||
|
role: str = "dev"
|
||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
from_attributes = True
|
from_attributes = True
|
||||||
@@ -205,7 +208,7 @@ class MilestoneBase(BaseModel):
|
|||||||
|
|
||||||
|
|
||||||
class MilestoneCreate(MilestoneBase):
|
class MilestoneCreate(MilestoneBase):
|
||||||
project_id: int
|
pass
|
||||||
|
|
||||||
|
|
||||||
class MilestoneUpdate(BaseModel):
|
class MilestoneUpdate(BaseModel):
|
||||||
|
|||||||
Reference in New Issue
Block a user