use revolt_result::Result;
use crate::{Emoji, PartialEmoji};
#[cfg(feature = "mongodb")]
mod mongodb;
mod reference;
#[async_trait]
pub trait AbstractEmojis: Sync + Send {
async fn insert_emoji(&self, emoji: &Emoji) -> Result<()>;
async fn fetch_emoji(&self, id: &str) -> Result<Emoji>;
async fn fetch_emoji_by_parent_id(&self, parent_id: &str) -> Result<Vec<Emoji>>;
async fn fetch_emoji_by_parent_ids(&self, parent_ids: &[String]) -> Result<Vec<Emoji>>;
async fn update_emoji(&self, emoji_id: &str, partial: &PartialEmoji) -> Result<()>;
async fn detach_emoji(&self, emoji: &Emoji) -> Result<()>;
}