From af104dedec788051253dfd85d10251093c3ea00e Mon Sep 17 00:00:00 2001 From: trivernis Date: Thu, 4 Nov 2021 20:16:18 +0100 Subject: [PATCH] Add api to get tags for a list of file hashes Signed-off-by: trivernis --- mediarepo-api/Cargo.toml | 2 +- mediarepo-api/src/client_api/tag.rs | 9 ++++++++- mediarepo-api/src/types/files.rs | 5 +++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/mediarepo-api/Cargo.toml b/mediarepo-api/Cargo.toml index 2a06a8d..a6488ae 100644 --- a/mediarepo-api/Cargo.toml +++ b/mediarepo-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mediarepo-api" -version = "0.1.0" +version = "0.2.0" edition = "2018" license = "gpl-3" diff --git a/mediarepo-api/src/client_api/tag.rs b/mediarepo-api/src/client_api/tag.rs index 05ceda6..bdc2165 100644 --- a/mediarepo-api/src/client_api/tag.rs +++ b/mediarepo-api/src/client_api/tag.rs @@ -1,6 +1,6 @@ use crate::client_api::error::ApiResult; use crate::client_api::IPCApi; -use crate::types::files::GetFileTagsRequest; +use crate::types::files::{GetFileTagsRequest, GetFilesTagsRequest}; use crate::types::identifier::FileIdentifier; use crate::types::tags::TagResponse; use async_trait::async_trait; @@ -45,4 +45,11 @@ impl TagApi { ) .await } + + /// Returns a list of all tags that are assigned to the list of files + #[tracing::instrument(level = "debug", skip_all)] + pub async fn get_tags_for_files(&self, hashes: Vec) -> ApiResult> { + self.emit_and_get("tags_for_files", GetFilesTagsRequest { hashes }) + .await + } } diff --git a/mediarepo-api/src/types/files.rs b/mediarepo-api/src/types/files.rs index ad4e813..b8dcd1c 100644 --- a/mediarepo-api/src/types/files.rs +++ b/mediarepo-api/src/types/files.rs @@ -22,6 +22,11 @@ pub struct GetFileTagsRequest { pub id: FileIdentifier, } +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct GetFilesTagsRequest { + pub hashes: Vec, +} + #[derive(Clone, Debug, Serialize, Deserialize)] pub struct FindFilesByTagsRequest { pub tags: Vec,