feat: switch backend indexing to code-first identifiers
This commit is contained in:
@@ -48,10 +48,10 @@ def _find_milestone(db, identifier, project_id: int = None) -> Milestone | None:
|
||||
return q.first()
|
||||
|
||||
|
||||
def _serialize_milestone(milestone):
|
||||
"""Serialize milestone with JSON fields and code."""
|
||||
def _serialize_milestone(db, milestone):
|
||||
"""Serialize milestone with JSON fields and code-first identifiers."""
|
||||
project = db.query(models.Project).filter(models.Project.id == milestone.project_id).first()
|
||||
return {
|
||||
"id": milestone.id,
|
||||
"title": milestone.title,
|
||||
"description": milestone.description,
|
||||
"status": milestone.status.value if hasattr(milestone.status, 'value') else milestone.status,
|
||||
@@ -59,9 +59,9 @@ def _serialize_milestone(milestone):
|
||||
"planned_release_date": milestone.planned_release_date,
|
||||
"depend_on_milestones": json.loads(milestone.depend_on_milestones) if milestone.depend_on_milestones else [],
|
||||
"depend_on_tasks": json.loads(milestone.depend_on_tasks) if milestone.depend_on_tasks else [],
|
||||
"project_id": milestone.project_id,
|
||||
"milestone_code": milestone.milestone_code,
|
||||
"code": milestone.milestone_code,
|
||||
"project_code": project.project_code if project else None,
|
||||
"created_by_id": milestone.created_by_id,
|
||||
"started_at": milestone.started_at,
|
||||
"created_at": milestone.created_at,
|
||||
@@ -76,7 +76,7 @@ def list_milestones(project_id: str, db: Session = Depends(get_db), current_user
|
||||
raise HTTPException(status_code=404, detail="Project not found")
|
||||
check_project_role(db, current_user.id, project.id, min_role="viewer")
|
||||
milestones = db.query(Milestone).filter(Milestone.project_id == project.id).all()
|
||||
return [_serialize_milestone(m) for m in milestones]
|
||||
return [_serialize_milestone(db, m) for m in milestones]
|
||||
|
||||
|
||||
@router.post("", response_model=schemas.MilestoneResponse, status_code=status.HTTP_201_CREATED)
|
||||
@@ -101,7 +101,7 @@ def create_milestone(project_id: str, milestone: schemas.MilestoneCreate, db: Se
|
||||
db.add(db_milestone)
|
||||
db.commit()
|
||||
db.refresh(db_milestone)
|
||||
return _serialize_milestone(db_milestone)
|
||||
return _serialize_milestone(db, db_milestone)
|
||||
|
||||
|
||||
@router.get("/{milestone_id}", response_model=schemas.MilestoneResponse)
|
||||
@@ -113,7 +113,7 @@ def get_milestone(project_id: str, milestone_id: str, db: Session = Depends(get_
|
||||
milestone = _find_milestone(db, milestone_id, project.id)
|
||||
if not milestone:
|
||||
raise HTTPException(status_code=404, detail="Milestone not found")
|
||||
return _serialize_milestone(milestone)
|
||||
return _serialize_milestone(db, milestone)
|
||||
|
||||
|
||||
@router.patch("/{milestone_id}", response_model=schemas.MilestoneResponse)
|
||||
@@ -163,7 +163,7 @@ def update_milestone(project_id: str, milestone_id: str, milestone: schemas.Mile
|
||||
setattr(db_milestone, key, value)
|
||||
db.commit()
|
||||
db.refresh(db_milestone)
|
||||
return _serialize_milestone(db_milestone)
|
||||
return _serialize_milestone(db, db_milestone)
|
||||
|
||||
|
||||
@router.delete("/{milestone_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||
|
||||
Reference in New Issue
Block a user