aboutsummaryrefslogtreecommitdiff
path: root/common/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'common/src/lib.rs')
-rw-r--r--common/src/lib.rs32
1 files changed, 14 insertions, 18 deletions
diff --git a/common/src/lib.rs b/common/src/lib.rs
index c126e65..a58dc48 100644
--- a/common/src/lib.rs
+++ b/common/src/lib.rs
@@ -14,14 +14,13 @@ pub mod user;
pub use chrono;
use bincode::{Decode, Encode};
-use chrono::{DateTime, Utc};
#[cfg(feature = "rocket")]
use rocket::{FromFormField, UriDisplayQuery};
use serde::{Deserialize, Serialize};
use std::{collections::BTreeMap, path::PathBuf};
-#[derive(Debug, Clone, Deserialize, Serialize, Default)]
+#[derive(Debug, Clone, Deserialize, Serialize, Default, Encode, Decode)]
pub struct Node {
#[serde(default)]
pub public: NodePublic,
@@ -30,7 +29,7 @@ pub struct Node {
}
#[rustfmt::skip]
-#[derive(Debug, Clone, Deserialize, Serialize, Default)]
+#[derive(Debug, Clone, Deserialize, Serialize, Default, Encode,Decode)]
pub struct NodePrivate {
#[serde(default)] pub id: Option<String>,
#[serde(default)] pub poster: Option<AssetLocation>,
@@ -39,7 +38,7 @@ pub struct NodePrivate {
}
#[rustfmt::skip]
-#[derive(Debug, Clone, Deserialize, Serialize, Default)]
+#[derive(Debug, Clone, Deserialize, Serialize, Default, Encode, Decode)]
pub struct NodePublic {
#[serde(default)] pub kind: Option<NodeKind>,
#[serde(default)] pub title: Option<String>,
@@ -48,20 +47,20 @@ pub struct NodePublic {
#[serde(default)] pub children: Vec<String>,
#[serde(default)] pub tagline: Option<String>,
#[serde(default)] pub description: Option<String>,
- #[serde(default)] pub release_date: Option<DateTime<Utc>>,
+ #[serde(default)] pub release_date: Option<i64>,
#[serde(default)] pub index: Option<usize>,
#[serde(default)] pub media: Option<MediaInfo>,
#[serde(default)] pub ratings: BTreeMap<Rating, f64>,
#[serde(default)] pub federated: Option<String>,
}
-#[derive(Debug, Clone, Deserialize, Serialize, Default)]
+#[derive(Debug, Clone, Deserialize, Serialize, Default, Encode, Decode)]
pub struct ImportOptions {
pub id: String,
pub sources: Vec<ImportSource>,
}
-#[derive(Debug, Clone, Deserialize, Serialize)]
+#[derive(Debug, Clone, Deserialize, Serialize, Encode, Decode)]
#[serde(rename_all = "snake_case")]
pub enum ImportSource {
Override(Node),
@@ -85,7 +84,7 @@ pub enum ImportSource {
},
}
-#[derive(Debug, Clone, Deserialize, Serialize, Hash, PartialEq, Eq)]
+#[derive(Debug, Clone, Deserialize, Serialize, Hash, PartialEq, Eq, Encode, Decode)]
#[serde(rename_all = "snake_case")]
pub enum AssetLocation {
Cache(PathBuf),
@@ -96,7 +95,7 @@ pub enum AssetLocation {
}
#[rustfmt::skip]
-#[derive(Debug, Clone, Copy, Deserialize, Serialize, PartialEq, Eq, Default)]
+#[derive(Debug, Clone, Copy, Deserialize, Serialize, PartialEq, Eq, Default, Encode,Decode)]
#[cfg_attr(feature = "rocket", derive(FromFormField, UriDisplayQuery))]
#[serde(rename_all = "snake_case")]
pub enum NodeKind {
@@ -110,18 +109,13 @@ pub enum NodeKind {
#[cfg_attr(feature = "rocket", field(value = "episode"))] Episode,
}
-#[derive(Debug, Clone, Deserialize, Serialize)]
+#[derive(Debug, Clone, Deserialize, Serialize, Encode, Decode)]
#[serde(rename_all = "snake_case")]
pub enum TrackSource {
Local(LocalTrack),
Remote(usize),
}
-pub enum PublicMediaSource {
- Local,
- Remote(String),
-}
-
pub type TrackID = usize;
#[derive(Debug, Clone, Deserialize, Serialize, Encode, Decode, Hash)]
@@ -131,7 +125,7 @@ pub struct LocalTrack {
pub codec_private: Option<Vec<u8>>,
}
-#[derive(Debug, Clone, Deserialize, Serialize)]
+#[derive(Debug, Clone, Deserialize, Serialize, Encode, Decode)]
pub struct MediaInfo {
pub duration: f64, // in seconds
pub tracks: Vec<SourceTrack>,
@@ -157,7 +151,9 @@ pub struct SourceTrack {
pub federated: Vec<String>,
}
-#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, PartialOrd, Ord, Hash)]
+#[derive(
+ Debug, Clone, Deserialize, Serialize, PartialEq, Eq, PartialOrd, Ord, Hash, Encode, Decode,
+)]
#[serde(rename_all = "snake_case")]
pub enum Rating {
Imdb,
@@ -186,7 +182,7 @@ pub enum SourceTrackKind {
}
#[rustfmt::skip]
-#[derive(Debug, Clone, Copy)]
+#[derive(Debug, Clone, Copy, Encode, Decode)]
#[cfg_attr(feature = "rocket", derive(FromFormField, UriDisplayQuery))]
pub enum AssetRole {
#[cfg_attr(feature = "rocket", field(value = "poster"))] Poster,