revolt_database/models/files/
ops.rs1use revolt_result::Result;
2
3use crate::File;
4
5use super::FileUsedFor;
6
7mod mongodb;
8mod reference;
9
10#[async_trait]
11pub trait AbstractAttachments: Sync + Send {
12 async fn insert_attachment(&self, attachment: &File) -> Result<()>;
14
15 async fn fetch_attachment(&self, tag: &str, file_id: &str) -> Result<File>;
17
18 async fn fetch_deleted_attachments(&self) -> Result<Vec<File>>;
20
21 async fn fetch_dangling_files(&self) -> Result<Vec<File>>;
23
24 async fn count_file_hash_references(&self, hash: &str) -> Result<usize>;
26
27 async fn find_and_use_attachment(
29 &self,
30 id: &str,
31 tag: &str,
32 used_for: FileUsedFor,
33 uploader_id: String,
34 ) -> Result<File>;
35
36 async fn mark_attachment_as_reported(&self, id: &str) -> Result<()>;
38
39 async fn mark_attachment_as_deleted(&self, id: &str) -> Result<()>;
41
42 async fn mark_attachments_as_deleted(&self, ids: &[String]) -> Result<()>;
44
45 async fn delete_attachment(&self, id: &str) -> Result<()>;
47}