feat: rename segments + create routes from an activity (detail page & dashboard recent activities)
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user