forked from jmug/stoatchat
37 lines
838 B
Rust
37 lines
838 B
Rust
use crate::{
|
|
events::client::EventV1,
|
|
models::{emoji::EmojiParent, Emoji},
|
|
Database, Result,
|
|
};
|
|
|
|
impl Emoji {
|
|
/// Get parent id
|
|
fn parent(&self) -> &str {
|
|
match &self.parent {
|
|
EmojiParent::Server { id } => id,
|
|
}
|
|
}
|
|
|
|
/// Create an emoji
|
|
pub async fn create(&self, db: &Database) -> Result<()> {
|
|
db.insert_emoji(self).await?;
|
|
EventV1::EmojiCreate(self.clone())
|
|
.p(self.parent().to_string())
|
|
.await;
|
|
|
|
Ok(())
|
|
}
|
|
|
|
/// Delete an emoji
|
|
pub async fn delete(self, db: &Database) -> Result<()> {
|
|
EventV1::EmojiDelete {
|
|
id: self.id.to_string(),
|
|
}
|
|
.p(self.parent().to_string())
|
|
.await;
|
|
|
|
db.mark_attachment_as_deleted(&self.id).await?;
|
|
db.delete_emoji(&self).await
|
|
}
|
|
}
|