Sync your own workout data from your "Strong" app
1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4use super::common::{Link, Name};
5
6#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
7pub struct UserResponse {
8 #[serde(rename = "_links")]
9 pub links: Value,
10 #[serde(rename = "_embedded")]
11 pub embedded: Embedded,
12 pub id: String,
13 pub created: String,
14 #[serde(rename = "lastChanged")]
15 pub last_changed: String,
16 pub username: String,
17 pub email: String,
18 #[serde(rename = "emailVerified")]
19 pub email_verified: bool,
20 pub name: Option<String>,
21 pub avatar: Value,
22 pub preferences: Value,
23 #[serde(rename = "legacyPurchase")]
24 pub legacy_purchase: Value,
25 #[serde(rename = "legacyGoals")]
26 pub legacy_goals: Value,
27 #[serde(rename = "startHistoryFromDate")]
28 pub start_history_from_date: String,
29 #[serde(rename = "firstWeekDay")]
30 pub first_week_day: String,
31 #[serde(rename = "availableLogins")]
32 pub available_logins: Vec<Value>,
33 pub migrated: String,
34}
35
36#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
37pub struct Embedded {
38 pub measurement: Option<Vec<Value>>,
39 #[serde(rename = "measuredValue")]
40 pub measured_value: Option<Vec<Value>>,
41 pub template: Option<Vec<Value>>,
42 pub log: Option<Vec<Log>>,
43 pub tag: Option<Vec<Value>>,
44 pub folder: Option<Vec<Value>>,
45 pub widget: Option<Vec<Value>>,
46}
47
48#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
49pub struct Log {
50 #[serde(rename = "_links")]
51 pub links: Value,
52 #[serde(rename = "_embedded")]
53 pub embedded: LogEmbedded,
54 #[serde(rename = "timezoneId")]
55 pub timezone_id: Option<String>,
56 pub id: String,
57 pub created: String,
58 #[serde(rename = "lastChanged")]
59 pub last_changed: String,
60 pub name: Option<Name>,
61 pub access: String,
62 #[serde(rename = "startDate")]
63 pub start_date: Option<String>,
64 #[serde(rename = "endDate")]
65 pub end_date: Option<String>,
66 #[serde(rename = "logType")]
67 pub log_type: String,
68}
69
70#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
71pub struct LogEmbedded {
72 #[serde(rename = "cellSetGroup")]
73 pub cell_set_group: Vec<CellSetGroup>,
74}
75
76#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
77pub struct CellSetGroup {
78 #[serde(rename = "_links")]
79 pub links: CellSetGroupLinks,
80 #[serde(rename = "_embedded")]
81 pub embedded: CellSetGroupEmbedded,
82 pub id: String,
83 #[serde(rename = "cellSets")]
84 pub cell_sets: Vec<CellSet>,
85}
86
87#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
88pub struct CellSetGroupLinks {
89 pub measurement: Option<Link>,
90}
91
92#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
93pub struct CellSetGroupEmbedded {}
94
95#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
96pub struct CellSet {
97 pub id: String,
98 pub cells: Vec<Cell>,
99 #[serde(rename = "isCompleted")]
100 pub is_completed: Option<bool>,
101}
102
103#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
104pub struct Cell {
105 pub id: String,
106 #[serde(rename = "cellType")]
107 pub cell_type: String,
108 pub value: Option<String>,
109}