67 lines
1.3 KiB
Rust
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>,
|
|
}
|