1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Serialize, Deserialize, Clone)]
4pub struct File {
5 #[serde(rename = "_id")]
6 pub id: String,
7 pub tag: String,
8 pub filename: String,
9 pub metadata: Metadata,
10 pub content_type: String,
11 pub size: usize,
12 pub deleted: Option<bool>,
13 pub reported: Option<bool>,
14 pub message_id: Option<String>,
15 pub user_id: Option<String>,
16 pub server_id: Option<String>,
17 pub object_id: Option<String>,
18}
19
20#[derive(Debug, Serialize, Deserialize, Clone, Default)]
22#[serde(tag = "type")]
23pub enum Metadata {
24 #[default]
26 File,
27 Text,
29 Image { width: usize, height: usize },
31 Video { width: usize, height: usize },
33 Audio,
35}