use serde::{Deserialize, Serialize};
use crate::api;
use crate::model::metadata::generic_metadata::GenericMetadata;
use crate::model::{Commit, CommitEntry, EntryDataType, LocalRepository};
use crate::view::entry::ResourceVersion;
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct CLIMetadataEntry {
pub filename: String,
pub last_updated: Option<Commit>,
pub hash: String,
pub size: u64,
pub data_type: EntryDataType,
pub mime_type: String,
pub extension: String,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct MetadataEntry {
pub filename: String,
pub is_dir: bool,
pub latest_commit: Option<Commit>,
pub resource: Option<ResourceVersion>,
pub size: u64,
pub data_type: EntryDataType,
pub mime_type: String,
pub extension: String,
pub metadata: Option<GenericMetadata>,
}
impl MetadataEntry {
pub fn from_commit_entry(
repo: &LocalRepository,
entry: Option<CommitEntry>,
commit: &Commit,
) -> Option<MetadataEntry> {
entry.as_ref()?;
match api::local::metadata::from_commit_entry(repo, &entry.unwrap(), commit) {
Ok(metadata) => Some(metadata),
Err(_) => None,
}
}
}