use chrono::{DateTime, Utc}; #[derive(Clone, Debug, PartialEq, Eq)] pub struct User { pub id: i64, pub username: String, pub password_hash: String, } #[derive(Clone, Debug, PartialEq, Eq)] pub enum DeviceType { Desktop, Laptop, Mobile, Server, Other, } #[derive(Clone, Debug, PartialEq, Eq)] pub struct Device { pub id: String, pub caption: String, pub r#type: DeviceType, pub subscriptions: i64, } #[derive(Clone, Debug, PartialEq, Eq)] pub struct DevicePatch { pub caption: Option, pub r#type: Option, } #[derive(Clone, Debug, PartialEq, Eq)] pub enum EpisodeActionType { Download, Play { started: Option, position: i32, total: Option, }, Delete, New, } #[derive(Clone, Debug, PartialEq, Eq)] pub struct EpisodeAction { pub podcast: String, pub episode: String, pub timestamp: Option>, pub time_changed: DateTime, pub device: Option, pub action: EpisodeActionType, } #[derive(Clone, Debug, PartialEq, Eq)] pub struct Session { pub id: i64, pub last_seen: DateTime, pub user: User, } #[derive(Clone, Debug, PartialEq, Eq)] pub struct Subscription { pub url: String, pub time_changed: DateTime, }