53 lines
1.3 KiB
Rust
53 lines
1.3 KiB
Rust
use crate::value_objects::{Checksum, DateTimeStamp, SystemId};
|
|
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
|
|
pub enum AssetType {
|
|
Image,
|
|
Video,
|
|
LivePhoto,
|
|
}
|
|
|
|
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
|
|
pub struct SourceReference {
|
|
pub volume_id: SystemId,
|
|
pub relative_path: String,
|
|
pub checksum: Checksum,
|
|
}
|
|
|
|
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
|
|
pub struct Asset {
|
|
pub asset_id: SystemId,
|
|
pub source_reference: SourceReference,
|
|
pub asset_type: AssetType,
|
|
pub mime_type: String,
|
|
pub file_size: u64,
|
|
pub is_processed: bool,
|
|
pub owner_user_id: SystemId,
|
|
pub created_at: DateTimeStamp,
|
|
}
|
|
|
|
impl Asset {
|
|
pub fn new(
|
|
source_reference: SourceReference,
|
|
asset_type: AssetType,
|
|
mime_type: impl Into<String>,
|
|
file_size: u64,
|
|
owner: SystemId,
|
|
) -> Self {
|
|
Self {
|
|
asset_id: SystemId::new(),
|
|
source_reference,
|
|
asset_type,
|
|
mime_type: mime_type.into(),
|
|
file_size,
|
|
is_processed: false,
|
|
owner_user_id: owner,
|
|
created_at: DateTimeStamp::now(),
|
|
}
|
|
}
|
|
|
|
pub fn mark_processed(&mut self) {
|
|
self.is_processed = true;
|
|
}
|
|
}
|