From ace0d78aea16407abcae93033b01797fa8636f82 Mon Sep 17 00:00:00 2001 From: trivernis Date: Sun, 24 Oct 2021 11:02:24 +0200 Subject: [PATCH] Add request and response types Signed-off-by: trivernis --- mediarepo-api/Cargo.toml | 1 + mediarepo-api/src/types/files.rs | 55 +++++++++++++++++++++++++++ mediarepo-api/src/types/identifier.rs | 5 +++ mediarepo-api/src/types/misc.rs | 5 +++ mediarepo-api/src/types/mod.rs | 4 ++ mediarepo-api/src/types/tags.rs | 6 +++ 6 files changed, 76 insertions(+) create mode 100644 mediarepo-api/src/types/files.rs create mode 100644 mediarepo-api/src/types/identifier.rs create mode 100644 mediarepo-api/src/types/misc.rs create mode 100644 mediarepo-api/src/types/tags.rs diff --git a/mediarepo-api/Cargo.toml b/mediarepo-api/Cargo.toml index 198ff94..edd3ed4 100644 --- a/mediarepo-api/Cargo.toml +++ b/mediarepo-api/Cargo.toml @@ -9,6 +9,7 @@ license = "gpl-3" [dependencies] tracing = "0.1.29" thiserror = "1.0.30" +chrono = "0.4.19" rmp-ipc = {version = "0.7.2", optional=true} tauri = {version = "1.0.0-beta.8", optional=true} diff --git a/mediarepo-api/src/types/files.rs b/mediarepo-api/src/types/files.rs new file mode 100644 index 0000000..4c121b0 --- /dev/null +++ b/mediarepo-api/src/types/files.rs @@ -0,0 +1,55 @@ +use chrono::NaiveDateTime; +use crate::types::identifier::FileIdentifier; + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct AddFileRequest { + pub path: String, +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct ReadFileRequest { + pub id: FileIdentifier, +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct GetFileThumbnailsRequest { + pub id: FileIdentifier, +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct GetFileTagsRequest { + pub id: FileIdentifier, +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct FindFilesByTagsRequest { + pub tags: Vec, +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct TagQuery { + pub negate: bool, + pub name: String, +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct FileMetadataResponse { + pub id: i64, + pub name: Option, + pub comment: Option, + pub hash: String, + pub file_type: u32, + pub mime_type: Option, + pub creation_time: NaiveDateTime, + pub change_time: NaiveDateTime, + pub import_time: NaiveDateTime, +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct ThumbnailMetadataResponse { + pub id: i64, + pub hash: Strin, + pub height: i32, + pub width: i32, + pub mime_type: Option, +} \ No newline at end of file diff --git a/mediarepo-api/src/types/identifier.rs b/mediarepo-api/src/types/identifier.rs new file mode 100644 index 0000000..8617373 --- /dev/null +++ b/mediarepo-api/src/types/identifier.rs @@ -0,0 +1,5 @@ +#[derive(Clone, Debug, Serialize, Deserialize)] +pub enum FileIdentifier { + ID(i64), + Hash(String), +} \ No newline at end of file diff --git a/mediarepo-api/src/types/misc.rs b/mediarepo-api/src/types/misc.rs new file mode 100644 index 0000000..77307cf --- /dev/null +++ b/mediarepo-api/src/types/misc.rs @@ -0,0 +1,5 @@ +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct InfoResponse { + pub name: String, + pub version: String, +} \ No newline at end of file diff --git a/mediarepo-api/src/types/mod.rs b/mediarepo-api/src/types/mod.rs index e69de29..2a5ed7e 100644 --- a/mediarepo-api/src/types/mod.rs +++ b/mediarepo-api/src/types/mod.rs @@ -0,0 +1,4 @@ +pub mod files; +pub mod identifier; +pub mod misc; +pub mod tags; \ No newline at end of file diff --git a/mediarepo-api/src/types/tags.rs b/mediarepo-api/src/types/tags.rs new file mode 100644 index 0000000..252b3d0 --- /dev/null +++ b/mediarepo-api/src/types/tags.rs @@ -0,0 +1,6 @@ +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct TagResponse { + pub id: i64, + pub namespace: Option, + pub name: String, +} \ No newline at end of file