aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-01-20 00:50:20 +0100
committermetamuffin <metamuffin@disroot.org>2024-01-20 00:50:20 +0100
commit46c251655db7bb3d9aa814b1a5dde85336b0b9b1 (patch)
treeab0696f2c92e8854ce6aa0737877cc15184bd8b6 /common
parent1c37d32a0985ff7390313833345b9299f9f0b196 (diff)
downloadjellything-46c251655db7bb3d9aa814b1a5dde85336b0b9b1.tar
jellything-46c251655db7bb3d9aa814b1a5dde85336b0b9b1.tar.bz2
jellything-46c251655db7bb3d9aa814b1a5dde85336b0b9b1.tar.zst
replace sled with redb
Diffstat (limited to 'common')
-rw-r--r--common/src/lib.rs32
-rw-r--r--common/src/stream.rs3
-rw-r--r--common/src/user.rs13
3 files changed, 23 insertions, 25 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,
diff --git a/common/src/stream.rs b/common/src/stream.rs
index 4aa51d3..7b56d0e 100644
--- a/common/src/stream.rs
+++ b/common/src/stream.rs
@@ -1,3 +1,4 @@
+use bincode::{Decode, Encode};
/*
This file is part of jellything (https://codeberg.org/metamuffin/jellything)
which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
@@ -18,7 +19,7 @@ pub struct StreamSpec {
}
#[rustfmt::skip]
-#[derive(Debug, Clone, Copy, Deserialize, Serialize, PartialEq, Eq, Hash)]
+#[derive(Debug, Clone, Copy, Deserialize, Serialize, PartialEq, Eq, Hash, Encode, Decode)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(feature = "rocket", derive(FromFormField, UriDisplayQuery))]
pub enum StreamFormat {
diff --git a/common/src/user.rs b/common/src/user.rs
index 5f012dd..b3360c2 100644
--- a/common/src/user.rs
+++ b/common/src/user.rs
@@ -4,6 +4,7 @@
Copyright (C) 2023 metamuffin <metamuffin.org>
*/
use crate::{stream::StreamFormat, user};
+use bincode::{Decode, Encode};
#[cfg(feature = "rocket")]
use rocket::{FromFormField, UriDisplayQuery};
use serde::{Deserialize, Serialize};
@@ -12,7 +13,7 @@ use std::{
fmt::Display,
};
-#[derive(Debug, Clone, Serialize, Deserialize)]
+#[derive(Debug, Clone, Serialize, Deserialize, Encode, Decode)]
pub struct User {
pub name: String,
pub display_name: String,
@@ -22,12 +23,12 @@ pub struct User {
pub permissions: PermissionSet,
}
-#[derive(Debug, Clone, Serialize, Deserialize)]
+#[derive(Debug, Clone, Serialize, Deserialize, Encode, Decode)]
pub struct NodeUserData {
pub watched: WatchedState,
}
-#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Encode, Decode)]
#[serde(rename_all = "snake_case")]
pub enum WatchedState {
None,
@@ -44,7 +45,7 @@ pub struct CreateSessionParams {
pub drop_permissions: Option<HashSet<UserPermission>>,
}
-#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Encode, Decode)]
#[cfg_attr(feature = "rocket", derive(FromFormField, UriDisplayQuery))]
#[serde(rename_all = "snake_case")]
pub enum Theme {
@@ -61,10 +62,10 @@ impl Theme {
];
}
-#[derive(Debug, Clone, Serialize, Deserialize, Default)]
+#[derive(Debug, Clone, Serialize, Deserialize, Default, Encode, Decode)]
pub struct PermissionSet(pub HashMap<UserPermission, bool>);
-#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
+#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash, Encode, Decode)]
#[serde(rename_all = "snake_case")]
pub enum UserPermission {
Admin,