feat: rename segments + create routes from an activity (detail page & dashboard recent activities)
Build and push images / validate (push) Successful in 9s
Build and push images / build-backend (push) Successful in 1m15s
Build and push images / build-worker (push) Successful in 6s
Build and push images / build-frontend (push) Successful in 10s

This commit is contained in:
2026-06-23 11:45:19 +01:00
parent 156ce60aa0
commit 4272c5dc4c
5 changed files with 153 additions and 15 deletions
+27
View File
@@ -22,6 +22,10 @@ class SegmentCreate(BaseModel):
end_distance_m: float
class SegmentUpdate(BaseModel):
name: Optional[str] = None
class EffortOut(BaseModel):
activity_id: int
activity_name: str
@@ -203,6 +207,29 @@ async def get_segment(
)
@router.patch("/{segment_id}", response_model=SegmentOut)
async def update_segment(
segment_id: int,
body: SegmentUpdate,
db: AsyncSession = Depends(get_db),
current_user: User = Depends(get_current_user),
):
seg = await _own_segment(segment_id, current_user.id, db)
if body.name is not None and body.name.strip():
seg.name = body.name.strip()
await db.commit()
await db.refresh(seg)
agg = (await db.execute(
select(func.count(SegmentEffort.id), func.min(SegmentEffort.duration_s))
.where(SegmentEffort.segment_id == seg.id)
)).one()
return SegmentOut(
id=seg.id, name=seg.name, sport_type=seg.sport_type, polyline=seg.polyline,
distance_m=seg.distance_m, created_from_activity_id=seg.created_from_activity_id,
effort_count=agg[0] or 0, best_s=agg[1],
)
@router.delete("/{segment_id}", status_code=204)
async def delete_segment(
segment_id: int,