mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-03 08:57:54 +00:00
Ok fixed compilation issues.
This commit is contained in:
1 parent
da62443522
commit
775d867add
2 files changed
+31
-32
No files matched your search
@@ -17,14 +17,14 @@ pub trait FileDescriptor {
|
||||
}
|
||||
// this will be the type of file
|
||||
// e.g requires! a period .safetensors .bin .jpg
|
||||
fn get_suffix(&self)->&str {
|
||||
return "implement".to_string().as_ref();
|
||||
fn get_suffix(&self)->String {
|
||||
return "implement".to_string();
|
||||
}
|
||||
// This will be the prefix of the media type or the weights type.
|
||||
// name of the weights or the name of the media type
|
||||
// vall-e_prompt, loRA, sd15, sdxl when implmenting add to the end
|
||||
fn get_prefix(&self)->&str {
|
||||
return "implement".to_string().as_ref();
|
||||
fn get_prefix(&self)->String {
|
||||
return "implement".to_string();
|
||||
}
|
||||
|
||||
// This will be ensure that the right bucket is picked
|
||||
@@ -33,21 +33,21 @@ pub trait FileDescriptor {
|
||||
}
|
||||
}
|
||||
|
||||
pub struct FileBucketDirectory<'a> {
|
||||
file_object_hash: &'a str,
|
||||
cloud_directory_hash: &'a str,
|
||||
remote_cloud_base_directory: &'a str,
|
||||
full_remote_cloud_file_path: &'a str,
|
||||
file_name: &'a str,
|
||||
pub struct FileBucketDirectory {
|
||||
file_object_hash: String,
|
||||
cloud_directory_hash: String,
|
||||
remote_cloud_base_directory: String,
|
||||
full_remote_cloud_file_path: String,
|
||||
file_name: String,
|
||||
file_descriptor: Box<dyn FileDescriptor>
|
||||
}
|
||||
|
||||
impl FileBucketDirectory<'_> {
|
||||
pub fn generate_new(file_descriptor: impl FileDescriptor) -> Self {
|
||||
impl FileBucketDirectory {
|
||||
pub fn generate_new(file_descriptor: Box<dyn FileDescriptor>) -> Self {
|
||||
Self::from_object_hash(file_descriptor)
|
||||
}
|
||||
|
||||
fn from_object_hash(file_descriptor: impl FileDescriptor) -> Self {
|
||||
fn from_object_hash(file_descriptor: Box<dyn FileDescriptor>) -> Self {
|
||||
let cloud_path_entropy = crockford_entropy_lower(32);
|
||||
let file_name_entropy = crockford_entropy_lower(32);
|
||||
|
||||
@@ -55,21 +55,21 @@ impl FileBucketDirectory<'_> {
|
||||
let middle = hashed_directory_path_long_string::hashed_directory_path_long_string(cloud_path_entropy.as_ref());
|
||||
|
||||
// gets you cloud bucket path e.g weights/a/b/c/d/clould_path_entropy
|
||||
let remote_cloud_base_directory = format!("{}/{}{}", file_descriptor.remote_directory_path().as_ref(), middle, cloud_path_entropy.as_ref());
|
||||
let remote_cloud_base_directory = format!("{}/{}{}", file_descriptor.remote_directory_path(), middle, cloud_path_entropy);
|
||||
|
||||
// gets you name of the file with suffix and prefix and entropy in the centre
|
||||
let file_name = format!("{}_{}.{}", file_descriptor.get_prefix(), file_name_entropy.as_ref(), file_descriptor.get_suffix());
|
||||
let file_name = format!("{}_{}.{}", file_descriptor.get_prefix(), file_name_entropy, file_descriptor.get_suffix());
|
||||
// note: no longer optional because it's easy to know what it would be in the db explicit is better than implcit.
|
||||
|
||||
// This is the full path you upload to.
|
||||
let full_remote_cloud_file_path = format!("{}/{}", remote_cloud_base_directory , file_name);
|
||||
Self {
|
||||
file_object_hash: file_name_entropy.as_ref(),
|
||||
cloud_directory_hash: cloud_path_entropy.as_ref(),
|
||||
remote_cloud_base_directory: remote_cloud_base_directory.as_ref(),
|
||||
full_remote_cloud_file_path: full_remote_cloud_file_path.as_ref(),
|
||||
file_name:file_name.as_ref(),
|
||||
file_descriptor:Box::new(file_descriptor)
|
||||
file_object_hash: file_name_entropy,
|
||||
cloud_directory_hash: cloud_path_entropy,
|
||||
remote_cloud_base_directory: remote_cloud_base_directory,
|
||||
full_remote_cloud_file_path: full_remote_cloud_file_path,
|
||||
file_name:file_name,
|
||||
file_descriptor:file_descriptor
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ struct WebFileManager {
|
||||
|
||||
impl WebFileManager {
|
||||
// bucket_client:BucketClients
|
||||
fn new(file_descriptor: dyn FileDescriptor) -> WebFileManager {
|
||||
fn new(file_descriptor: Box<dyn FileDescriptor>) -> WebFileManager {
|
||||
WebFileManager {
|
||||
// bucket_client: bucket_client,
|
||||
file_descriptor: file_descriptor
|
||||
@@ -30,18 +30,19 @@ impl WebFileManager {
|
||||
|
||||
|
||||
// also include bucket details here
|
||||
pub fn download_file(&self, system_file_path:String) -> Result<(),AnyhowError> {
|
||||
// pub fn download_file(&self, system_file_path:String) -> Result<(),AnyhowError> {
|
||||
|
||||
}
|
||||
// }
|
||||
// return error or success with meta data.
|
||||
pub fn upload_file(&self, system_file_path:String) -> Result<FileMetaData,AnyhowError> {
|
||||
|
||||
let file_descriptor = self.file_descriptor.clone();
|
||||
|
||||
// let bucket_client = self.bucket_client.clone();
|
||||
if file_descriptor.is_public() {
|
||||
if self.file_descriptor.is_public() {
|
||||
|
||||
}
|
||||
Ok(Self::get_file_meta_data(system_file_path.clone()))
|
||||
let result = Self::get_file_meta_data(system_file_path.clone())?;
|
||||
Ok(result)
|
||||
}
|
||||
|
||||
// Retrieve the metadata from the file
|
||||
@@ -49,14 +50,15 @@ impl WebFileManager {
|
||||
let file_size_bytes = file_size(system_file_path.clone())?;
|
||||
let sha256_checksum = sha256_hash_file(system_file_path.clone())?;
|
||||
|
||||
let bytes = file_read_bytes(system_file_path)?;
|
||||
let mimetype = get_mimetype_for_bytes(&bytes).unwrap_or("application/octet-stream");
|
||||
|
||||
|
||||
FileMetaData {
|
||||
Ok(FileMetaData {
|
||||
file_size_bytes: file_size_bytes,
|
||||
sha256_checksum: sha256_checksum,
|
||||
mimetype: mimetype.to_string()
|
||||
};
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,9 +68,6 @@ impl WebFileManager {
|
||||
|
||||
// should be able to take prefix suffix and entrpy to generate a file descriptor
|
||||
|
||||
// should return this once properly uploaded.
|
||||
// let file_size_bytes = file_size(weight_file_path.clone())?;
|
||||
// let sha256_checksum = sha256_hash_file(weight_file_path.clone())?;
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
|
||||
Reference in new issue
Block a user