Skip to main content

toggl_track/
models.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct User {
6    pub id: i64,
7    pub email: String,
8    #[serde(default)]
9    pub fullname: Option<String>,
10    #[serde(default)]
11    pub default_workspace_id: Option<i64>,
12    #[serde(default)]
13    pub timezone: Option<String>,
14    #[serde(default)]
15    pub beginning_of_week: Option<i64>,
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct TimeEntry {
20    pub id: i64,
21    #[serde(default)]
22    pub workspace_id: Option<i64>,
23    #[serde(default)]
24    pub project_id: Option<i64>,
25    #[serde(default)]
26    pub task_id: Option<i64>,
27    #[serde(default)]
28    pub billable: Option<bool>,
29    pub start: DateTime<Utc>,
30    #[serde(default)]
31    pub stop: Option<DateTime<Utc>>,
32    pub duration: i64,
33    #[serde(default)]
34    pub description: Option<String>,
35    #[serde(default)]
36    pub tags: Option<Vec<String>>,
37    #[serde(default)]
38    pub tag_ids: Option<Vec<i64>>,
39    #[serde(default)]
40    pub duronly: Option<bool>,
41    #[serde(default)]
42    pub at: Option<DateTime<Utc>>,
43    #[serde(default)]
44    pub server_deleted_at: Option<DateTime<Utc>>,
45    #[serde(default)]
46    pub user_id: Option<i64>,
47    #[serde(default)]
48    pub uid: Option<i64>,
49    #[serde(default)]
50    pub wid: Option<i64>,
51    #[serde(default)]
52    pub pid: Option<i64>,
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize)]
56pub struct Project {
57    pub id: i64,
58    #[serde(default)]
59    pub workspace_id: Option<i64>,
60    #[serde(default)]
61    pub client_id: Option<i64>,
62    pub name: String,
63    #[serde(default)]
64    pub is_private: Option<bool>,
65    #[serde(default)]
66    pub active: Option<bool>,
67    #[serde(default)]
68    pub at: Option<DateTime<Utc>>,
69    #[serde(default)]
70    pub created_at: Option<DateTime<Utc>>,
71    #[serde(default)]
72    pub color: Option<String>,
73    #[serde(default)]
74    pub billable: Option<bool>,
75    #[serde(default)]
76    pub template: Option<bool>,
77    #[serde(default)]
78    pub auto_estimates: Option<bool>,
79    #[serde(default)]
80    pub estimated_hours: Option<i64>,
81    #[serde(default)]
82    pub rate: Option<f64>,
83    #[serde(default)]
84    pub currency: Option<String>,
85}
86
87#[derive(Debug, Clone, Serialize, Deserialize)]
88pub struct Workspace {
89    pub id: i64,
90    pub name: String,
91    #[serde(default)]
92    pub premium: Option<bool>,
93    #[serde(default)]
94    pub admin: Option<bool>,
95    #[serde(default)]
96    pub default_hourly_rate: Option<f64>,
97    #[serde(default)]
98    pub default_currency: Option<String>,
99    #[serde(default)]
100    pub only_admins_may_create_projects: Option<bool>,
101    #[serde(default)]
102    pub only_admins_see_billable_rates: Option<bool>,
103    #[serde(default)]
104    pub rounding: Option<i32>,
105    #[serde(default)]
106    pub rounding_minutes: Option<i32>,
107    #[serde(default)]
108    pub at: Option<DateTime<Utc>>,
109    #[serde(default)]
110    pub logo_url: Option<String>,
111}