otter/gpodder/src/models.rs

67 lines
1.3 KiB
Rust

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<String>,
pub r#type: Option<DeviceType>,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum EpisodeActionType {
Download,
Play {
started: Option<i32>,
position: i32,
total: Option<i32>,
},
Delete,
New,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct EpisodeAction {
pub podcast: String,
pub episode: String,
pub timestamp: Option<DateTime<Utc>>,
pub time_changed: DateTime<Utc>,
pub device: Option<String>,
pub action: EpisodeActionType,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Session {
pub id: i64,
pub last_seen: DateTime<Utc>,
pub user: User,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Subscription {
pub url: String,
pub time_changed: DateTime<Utc>,
}