use std::path::PathBuf;
use crate::StorageError;
use crate::metadata::FileInfo;
use crate::metadata::GeneMetadata;
use crate::traits::backend::StorageBackend;
pub trait Metadata {
fn new(name_id: &str) -> Self;
fn new_fileinfo(
&self,
key: &str,
filetype: &str,
data_shape: (usize, usize),
nnz: Option<usize>,
size_bytes: Option<u64>,
) -> FileInfo;
async fn seed_metadata<B: StorageBackend>(
name_id: &str,
nitems: usize,
nfeatures: usize,
storage: &B,
) -> Result<GeneMetadata, StorageError>;
fn add_file(self, key: &str, info: FileInfo) -> Self;
fn with_base(self, base_path: PathBuf) -> Self;
fn with_dimensions(self, rows: usize, cols: usize) -> Self;
}