fix: member/milestone endpoints - role_id column, schema fixes
This commit is contained in:
@@ -252,16 +252,43 @@ def add_project_member(
|
||||
).first()
|
||||
if existing:
|
||||
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.commit()
|
||||
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])
|
||||
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)
|
||||
|
||||
@@ -190,8 +190,11 @@ class ProjectMemberCreate(ProjectMemberBase):
|
||||
pass
|
||||
|
||||
|
||||
class ProjectMemberResponse(ProjectMemberBase):
|
||||
class ProjectMemberResponse(BaseModel):
|
||||
id: int
|
||||
user_id: int
|
||||
project_id: int
|
||||
role: str = "dev"
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
@@ -205,7 +208,7 @@ class MilestoneBase(BaseModel):
|
||||
|
||||
|
||||
class MilestoneCreate(MilestoneBase):
|
||||
project_id: int
|
||||
pass
|
||||
|
||||
|
||||
class MilestoneUpdate(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user