From 6085bed8dec6aa0e82944ac7e5c0b2555b9d8806 Mon Sep 17 00:00:00 2001 From: trivernis Date: Thu, 6 Jan 2022 20:38:28 +0100 Subject: [PATCH] Update API types for new database schema Signed-off-by: trivernis --- mediarepo-api/Cargo.toml | 2 +- mediarepo-api/src/client_api/file.rs | 18 +++++++++------- mediarepo-api/src/client_api/tag.rs | 4 ++-- .../src/tauri_plugin/commands/file.rs | 11 +++++----- .../src/tauri_plugin/commands/tag.rs | 4 ++-- .../src/tauri_plugin/custom_schemes.rs | 8 +++---- mediarepo-api/src/types/files.rs | 21 +++++++++++++++---- mediarepo-api/src/types/identifier.rs | 6 +++--- 8 files changed, 46 insertions(+), 28 deletions(-) diff --git a/mediarepo-api/Cargo.toml b/mediarepo-api/Cargo.toml index 96e1387..57a9813 100644 --- a/mediarepo-api/Cargo.toml +++ b/mediarepo-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mediarepo-api" -version = "0.16.0" +version = "0.17.0" edition = "2018" license = "gpl-3" diff --git a/mediarepo-api/src/client_api/file.rs b/mediarepo-api/src/client_api/file.rs index 419289f..078663b 100644 --- a/mediarepo-api/src/client_api/file.rs +++ b/mediarepo-api/src/client_api/file.rs @@ -1,9 +1,9 @@ use crate::client_api::error::ApiResult; use crate::client_api::IPCApi; use crate::types::files::{ - AddFileRequestHeader, FileMetadataResponse, FileOSMetadata, FilterExpression, FindFilesRequest, - GetFileThumbnailOfSizeRequest, GetFileThumbnailsRequest, ReadFileRequest, SortKey, - ThumbnailMetadataResponse, UpdateFileNameRequest, + AddFileRequestHeader, FileBasicDataResponse, FileMetadataResponse, FileOSMetadata, + FilterExpression, FindFilesRequest, GetFileThumbnailOfSizeRequest, GetFileThumbnailsRequest, + ReadFileRequest, SortKey, ThumbnailMetadataResponse, UpdateFileNameRequest, }; use crate::types::identifier::FileIdentifier; use async_trait::async_trait; @@ -42,22 +42,26 @@ impl FileApi { /// Returns all known files #[tracing::instrument(level = "debug", skip(self))] - pub async fn all_files(&self) -> ApiResult> { + pub async fn all_files(&self) -> ApiResult> { self.emit_and_get("all_files", ()).await } /// Returns a file by identifier - pub async fn get_file(&self, id: FileIdentifier) -> ApiResult { + pub async fn get_file(&self, id: FileIdentifier) -> ApiResult { self.emit_and_get("get_file", id).await } + pub async fn get_file_metadata(&self, id: FileIdentifier) -> ApiResult { + self.emit_and_get("get_file_metadata", id).await + } + /// Searches for a file by a list of tags #[tracing::instrument(level = "debug", skip(self))] pub async fn find_files( &self, filters: Vec, sort_expression: Vec, - ) -> ApiResult> { + ) -> ApiResult> { self.emit_and_get( "find_files", FindFilesRequest { @@ -129,7 +133,7 @@ impl FileApi { metadata: FileOSMetadata, tags: Vec, bytes: Vec, - ) -> ApiResult { + ) -> ApiResult { let payload = TandemPayload::new( AddFileRequestHeader { metadata, tags }, BytePayload::new(bytes), diff --git a/mediarepo-api/src/client_api/tag.rs b/mediarepo-api/src/client_api/tag.rs index 6541b6a..24dd43e 100644 --- a/mediarepo-api/src/client_api/tag.rs +++ b/mediarepo-api/src/client_api/tag.rs @@ -50,8 +50,8 @@ impl TagApi { /// 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 }) + pub async fn get_tags_for_files(&self, hashes: Vec) -> ApiResult> { + self.emit_and_get("tags_for_files", GetFilesTagsRequest { ids: hashes }) .await } diff --git a/mediarepo-api/src/tauri_plugin/commands/file.rs b/mediarepo-api/src/tauri_plugin/commands/file.rs index f3d1c20..58c3be4 100644 --- a/mediarepo-api/src/tauri_plugin/commands/file.rs +++ b/mediarepo-api/src/tauri_plugin/commands/file.rs @@ -2,7 +2,8 @@ use crate::tauri_plugin::commands::{ApiAccess, BufferAccess}; use crate::tauri_plugin::error::PluginResult; use crate::tauri_plugin::utils::system_time_to_naive_date_time; use crate::types::files::{ - FileMetadataResponse, FileOSMetadata, FilterExpression, SortKey, ThumbnailMetadataResponse, + FileBasicDataResponse, FileMetadataResponse, FileOSMetadata, FilterExpression, SortKey, + ThumbnailMetadataResponse, }; use crate::types::identifier::FileIdentifier; use serde::{Deserialize, Serialize}; @@ -18,7 +19,7 @@ pub struct AddFileOptions { } #[tauri::command] -pub async fn get_all_files(api_state: ApiAccess<'_>) -> PluginResult> { +pub async fn get_all_files(api_state: ApiAccess<'_>) -> PluginResult> { let api = api_state.api().await?; let all_files = api.file.all_files().await?; @@ -30,7 +31,7 @@ pub async fn add_local_file( api_state: ApiAccess<'_>, metadata: FileOSMetadata, options: AddFileOptions, -) -> PluginResult { +) -> PluginResult { let api = api_state.api().await?; let path = PathBuf::from(&metadata.path); let mut tags = Vec::new(); @@ -66,7 +67,7 @@ pub async fn find_files( filters: Vec, sort_by: Vec, api_state: ApiAccess<'_>, -) -> PluginResult> { +) -> PluginResult> { let api = api_state.api().await?; let files = api.file.find_files(filters, sort_by).await?; @@ -111,7 +112,7 @@ pub async fn read_file( let api = api_state.api().await?; let content = api .file - .read_file(FileIdentifier::Hash(hash.clone())) + .read_file(FileIdentifier::CID(hash.clone())) .await?; Ok(content) diff --git a/mediarepo-api/src/tauri_plugin/commands/tag.rs b/mediarepo-api/src/tauri_plugin/commands/tag.rs index d54bfa7..4da2a22 100644 --- a/mediarepo-api/src/tauri_plugin/commands/tag.rs +++ b/mediarepo-api/src/tauri_plugin/commands/tag.rs @@ -24,11 +24,11 @@ pub async fn get_tags_for_file( #[tauri::command] pub async fn get_tags_for_files( - hashes: Vec, + ids: Vec, api_state: ApiAccess<'_>, ) -> PluginResult> { let api = api_state.api().await?; - let tags = api.tag.get_tags_for_files(hashes).await?; + let tags = api.tag.get_tags_for_files(ids).await?; Ok(tags) } diff --git a/mediarepo-api/src/tauri_plugin/custom_schemes.rs b/mediarepo-api/src/tauri_plugin/custom_schemes.rs index d02f25f..1419b98 100644 --- a/mediarepo-api/src/tauri_plugin/custom_schemes.rs +++ b/mediarepo-api/src/tauri_plugin/custom_schemes.rs @@ -69,12 +69,12 @@ async fn content_scheme(app: &AppHandle, request: &Request) -> Re let api = api_state.api().await?; let file = api .file - .get_file(FileIdentifier::Hash(hash.to_string())) + .get_file(FileIdentifier::CID(hash.to_string())) .await?; - let mime = file.mime_type.unwrap_or("image/png".to_string()); + let mime = file.mime_type; let bytes = api .file - .read_file(FileIdentifier::Hash(hash.to_string())) + .read_file(FileIdentifier::CID(hash.to_string())) .await?; tracing::debug!("Received {} content bytes", bytes.len()); buf_state.add_entry(hash.to_string(), mime.clone(), bytes.clone()); @@ -121,7 +121,7 @@ async fn thumb_scheme(app: &AppHandle, request: &Request) -> Resu let (thumb, bytes) = api .file .get_thumbnail_of_size( - FileIdentifier::Hash(hash.to_string()), + FileIdentifier::CID(hash.to_string()), ((height as f32 * 0.8) as u32, (width as f32 * 0.8) as u32), ((height as f32 * 1.2) as u32, (width as f32 * 1.2) as u32), ) diff --git a/mediarepo-api/src/types/files.rs b/mediarepo-api/src/types/files.rs index 14a245f..7ba65df 100644 --- a/mediarepo-api/src/types/files.rs +++ b/mediarepo-api/src/types/files.rs @@ -26,7 +26,7 @@ pub struct GetFileTagsRequest { #[derive(Clone, Debug, Serialize, Deserialize)] pub struct GetFilesTagsRequest { - pub hashes: Vec, + pub ids: Vec, } #[derive(Clone, Debug, Serialize, Deserialize)] @@ -74,13 +74,26 @@ pub enum SortDirection { impl Eq for SortDirection {} #[derive(Clone, Debug, Serialize, Deserialize)] -pub struct FileMetadataResponse { +pub struct FileBasicDataResponse { pub id: i64, + pub status: FileStatus, + pub cid: String, + pub mime_type: String, +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub enum FileStatus { + Imported, + Archived, + Deleted, +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct FileMetadataResponse { + pub file_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, diff --git a/mediarepo-api/src/types/identifier.rs b/mediarepo-api/src/types/identifier.rs index b8df84e..7afef60 100644 --- a/mediarepo-api/src/types/identifier.rs +++ b/mediarepo-api/src/types/identifier.rs @@ -1,7 +1,7 @@ -use serde::{Serialize, Deserialize}; +use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Serialize, Deserialize)] pub enum FileIdentifier { ID(i64), - Hash(String), -} \ No newline at end of file + CID(String), +}