72 lines
1.4 KiB
Rust
72 lines
1.4 KiB
Rust
use chrono::{DateTime, Utc};
|
|
use serde::{Deserialize, Serialize};
|
|
use std::path::PathBuf;
|
|
use url::Url;
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub enum StorageLocation {
|
|
FileStore { path: PathBuf },
|
|
Link,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct Image {
|
|
pub filename: String,
|
|
pub tags: Vec<String>,
|
|
pub create_date: DateTime<Utc>,
|
|
pub link: String,
|
|
pub created_by: u64,
|
|
pub storage_location: StorageLocation,
|
|
|
|
id: Option<u64>,
|
|
}
|
|
|
|
impl Image {
|
|
pub fn new(
|
|
filename: &str,
|
|
tags: Vec<String>,
|
|
link: Url,
|
|
created_by: u64,
|
|
storage_location: StorageLocation,
|
|
) -> Self {
|
|
Self {
|
|
filename: filename.to_string(),
|
|
tags,
|
|
create_date: Utc::now(),
|
|
link: link.to_string(),
|
|
created_by,
|
|
storage_location,
|
|
id: None,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl j_db::model::JdbModel for Image {
|
|
fn id(&self) -> Option<u64> {
|
|
self.id
|
|
}
|
|
|
|
fn set_id(&mut self, id: u64) {
|
|
self.id = Some(id)
|
|
}
|
|
|
|
fn tree() -> String {
|
|
"Image".to_string()
|
|
}
|
|
}
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub enum ImageData {
|
|
Bytes(Vec<u8>),
|
|
Link(String),
|
|
}
|
|
|
|
impl ImageData {
|
|
pub fn size(&self) -> usize {
|
|
match self {
|
|
ImageData::Bytes(data) => data.len(),
|
|
ImageData::Link(_) => 0,
|
|
}
|
|
}
|
|
}
|