Skip to main content

strava_wrapper/models/
segment.rs

1//! Segment and segment-effort resource types.
2
3use super::activity::MetaActivity;
4use super::athlete::MetaAthlete;
5use super::common::{LatLng, PolylineMap};
6use chrono::{DateTime, Utc};
7use serde::{Deserialize, Serialize};
8
9#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct ExplorerResponse {
11    pub segments: Option<Vec<ExplorerSegment>>,
12}
13
14#[derive(Debug, Clone, Serialize, Deserialize)]
15pub struct ExplorerSegment {
16    pub id: Option<i64>,
17    pub name: Option<String>,
18    pub climb_category: Option<i32>,
19    pub climb_category_desc: Option<String>,
20    pub avg_grade: Option<f32>,
21    pub start_latlng: Option<LatLng>,
22    pub end_latlng: Option<LatLng>,
23    pub elev_difference: Option<f32>,
24    pub distance: Option<f32>,
25    pub points: Option<String>,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize)]
29pub struct SummarySegment {
30    pub id: Option<i64>,
31    pub name: Option<String>,
32    pub activity_type: Option<String>,
33    pub distance: Option<f32>,
34    pub average_grade: Option<f32>,
35    pub maximum_grade: Option<f32>,
36    pub elevation_high: Option<f32>,
37    pub elevation_low: Option<f32>,
38    pub start_latlng: Option<LatLng>,
39    pub end_latlng: Option<LatLng>,
40    pub climb_category: Option<i32>,
41    pub city: Option<String>,
42    pub state: Option<String>,
43    pub country: Option<String>,
44    pub private: Option<bool>,
45    pub athlete_pr_effort: Option<SummaryPRSegmentEffort>,
46    pub athlete_segment_stats: Option<SummarySegmentEffort>,
47}
48
49#[derive(Debug, Clone, Serialize, Deserialize)]
50pub struct DetailedSegment {
51    pub id: Option<i64>,
52    pub name: Option<String>,
53    pub activity_type: Option<String>,
54    pub distance: Option<f32>,
55    pub average_grade: Option<f32>,
56    pub maximum_grade: Option<f32>,
57    pub elevation_high: Option<f32>,
58    pub elevation_low: Option<f32>,
59    pub start_latlng: Option<LatLng>,
60    pub end_latlng: Option<LatLng>,
61    pub climb_category: Option<i32>,
62    pub city: Option<String>,
63    pub state: Option<String>,
64    pub country: Option<String>,
65    pub private: Option<bool>,
66    pub athlete_pr_effort: Option<SummaryPRSegmentEffort>,
67    pub athlete_segment_stats: Option<SummarySegmentEffort>,
68    pub created_at: Option<String>,
69    pub updated_at: Option<String>,
70    pub total_elevation_gain: Option<f32>,
71    pub map: Option<PolylineMap>,
72    pub effort_count: Option<i32>,
73    pub athlete_count: Option<i32>,
74    pub hazardous: Option<bool>,
75    pub star_count: Option<i32>,
76}
77
78#[derive(Debug, Clone, Serialize, Deserialize)]
79pub struct SummaryPRSegmentEffort {
80    pub pr_activity_id: Option<i64>,
81    pub pr_elapsed_time: Option<i32>,
82    pub pr_date: Option<DateTime<Utc>>,
83    pub effort_count: Option<i32>,
84}
85
86#[derive(Debug, Clone, Serialize, Deserialize)]
87pub struct SummarySegmentEffort {
88    pub id: Option<i64>,
89    pub activity_id: Option<i64>,
90    pub elapsed_time: Option<i32>,
91    pub start_date: Option<DateTime<Utc>>,
92    pub start_date_local: Option<DateTime<Utc>>,
93    pub distance: Option<f32>,
94    pub is_kom: Option<bool>,
95}
96
97#[derive(Debug, Clone, Serialize, Deserialize)]
98pub struct DetailedSegmentEffort {
99    pub id: Option<i64>,
100    pub activity_id: Option<i64>,
101    pub elapsed_time: Option<i32>,
102    pub start_date: Option<DateTime<Utc>>,
103    pub start_date_local: Option<DateTime<Utc>>,
104    pub distance: Option<f32>,
105    pub is_kom: Option<bool>,
106    pub name: Option<String>,
107    pub activity: Option<MetaActivity>,
108    pub athlete: Option<MetaAthlete>,
109    pub moving_time: Option<i32>,
110    pub start_index: Option<i32>,
111    pub end_index: Option<i32>,
112    pub average_cadence: Option<f32>,
113    pub average_watts: Option<f32>,
114    pub device_watts: Option<bool>,
115    pub average_heartrate: Option<f32>,
116    pub max_heartrate: Option<f32>,
117    pub segment: Option<SummarySegment>,
118    pub kom_rank: Option<i32>,
119    pub pr_rank: Option<i32>,
120    pub hidden: Option<bool>,
121}