use iso8601_timestamp::Timestamp;
use crate::File;
auto_derived_partial!(
pub struct FileHash {
#[serde(rename = "_id")]
pub id: String,
pub processed_hash: String,
pub created_at: Timestamp,
pub bucket_id: String,
pub path: String,
pub iv: String,
pub metadata: Metadata,
pub content_type: String,
pub size: isize,
},
"PartialFileHash"
);
auto_derived!(
#[serde(tag = "type")]
#[derive(Default)]
pub enum Metadata {
#[default]
File,
Text,
Image {
width: isize,
height: isize,
thumbhash: Option<Vec<u8>>,
animated: Option<bool>,
},
Video { width: isize, height: isize },
Audio,
}
);
impl FileHash {
pub fn into_file(
&self,
id: String,
tag: String,
filename: String,
uploader_id: String,
) -> File {
File {
id,
tag,
filename,
hash: Some(self.id.clone()),
uploaded_at: Some(Timestamp::now_utc()),
uploader_id: Some(uploader_id),
used_for: None,
deleted: None,
reported: None,
metadata: self.metadata.clone(),
content_type: self.content_type.clone(),
size: self.size,
message_id: None,
object_id: None,
server_id: None,
user_id: None,
}
}
}