Add api to get repository metadata

Signed-off-by: Trivernis <trivernis@protonmail.com>
pull/4/head
Trivernis 2 years ago
parent 60140fcd97
commit d8560a180c

@ -1,9 +1,10 @@
use crate::client_api::error::ApiResult;
use crate::client_api::IPCApi;
use crate::types::repo::FrontendState;
use bromine::prelude::*;
use tokio::time::Duration;
use crate::client_api::error::ApiResult;
use crate::client_api::IPCApi;
use crate::types::repo::{FrontendState, RepositoryMetadata};
#[derive(Clone)]
pub struct RepoApi {
ctx: PooledContext,
@ -24,6 +25,14 @@ impl RepoApi {
Self { ctx }
}
/// Returns metadata about the repository
#[tracing::instrument(level = "debug", skip(self))]
pub async fn get_repo_metadata(&self) -> ApiResult<RepositoryMetadata> {
let metadata = self.emit_and_get("repository_metadata", (), Some(Duration::from_secs(2))).await?;
Ok(metadata)
}
/// Returns the state of the frontend that is stored in the repo
#[tracing::instrument(level = "debug", skip(self))]
pub async fn get_frontend_state(&self) -> ApiResult<FrontendState> {

@ -3,7 +3,7 @@ use crate::client_api::ApiClient;
use crate::tauri_plugin::commands::{ApiAccess, AppAccess, BufferAccess};
use crate::tauri_plugin::error::{PluginError, PluginResult};
use crate::tauri_plugin::settings::{save_settings, Repository};
use crate::types::repo::FrontendState;
use crate::types::repo::{FrontendState, RepositoryMetadata};
use serde::{Deserialize, Serialize};
use std::mem;
use std::path::PathBuf;
@ -190,6 +190,14 @@ pub async fn select_repository(
Ok(())
}
#[tauri::command]
pub async fn get_repo_metadata(api_state: ApiAccess<'_>) -> PluginResult<RepositoryMetadata> {
let api = api_state.api().await?;
let metadata = api.repo.get_repo_metadata().await?;
Ok(metadata)
}
#[tauri::command]
pub async fn get_frontend_state(api_state: ApiAccess<'_>) -> PluginResult<Option<String>> {
let api = api_state.api().await?;

@ -63,7 +63,8 @@ impl<R: Runtime> MediarepoPlugin<R> {
get_frontend_state,
set_frontend_state,
get_all_namespaces,
get_files
get_files,
get_repo_metadata
]),
}
}

@ -4,3 +4,15 @@ use serde::{Deserialize, Serialize};
pub struct FrontendState {
pub state: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct RepositoryMetadata {
pub version: String,
pub file_count: u64,
pub tag_count: u64,
pub namespace_count: u64,
pub total_size: u64,
pub image_size: u64,
pub database_size: u64,
pub thumbnail_size: u64,
}
Loading…
Cancel
Save