use std::time::SystemTime;
use qubit_metadata::Metadata;
use crate::{
Checksum,
FileKind,
};
#[derive(Clone, Debug, PartialEq)]
pub struct FileMetadata {
pub kind: FileKind,
pub len: Option<u64>,
pub modified_at: Option<SystemTime>,
pub created_at: Option<SystemTime>,
pub accessed_at: Option<SystemTime>,
pub etag: Option<String>,
pub content_type: Option<String>,
pub checksum: Option<Checksum>,
pub user_metadata: Metadata,
pub provider_metadata: Metadata,
}
impl FileMetadata {
#[inline]
#[must_use]
pub fn new(kind: FileKind) -> Self {
Self {
kind,
len: None,
modified_at: None,
created_at: None,
accessed_at: None,
etag: None,
content_type: None,
checksum: None,
user_metadata: Metadata::new(),
provider_metadata: Metadata::new(),
}
}
#[inline]
#[must_use]
pub fn is_directory_like(&self) -> bool {
matches!(self.kind, FileKind::Directory | FileKind::Prefix)
}
}