diff --git a/src/db/mod.rs b/src/db/mod.rs index 15d953d..0fd9572 100644 --- a/src/db/mod.rs +++ b/src/db/mod.rs @@ -228,6 +228,23 @@ impl DB { Ok(media_items) } + pub async fn is_media_group_exists( + &mut self, + media_group: &str, + ) -> Result> { + use self::schema::media::dsl::*; + let conn = &mut self.pool.get().await.unwrap(); + + let is_exists = media + .filter(media_group_id.eq(media_group)) + .count() + .get_result::(conn) + .await? + > 0; + + Ok(is_exists) + } + pub async fn drop_media(&mut self, literal: &str) -> Result> { use self::schema::media::dsl::*; let conn = &mut self.pool.get().await.unwrap(); diff --git a/src/db/tests.rs b/src/db/tests.rs index 72caecf..fc8f136 100644 --- a/src/db/tests.rs +++ b/src/db/tests.rs @@ -89,3 +89,31 @@ async fn test_drop_media() { // Clean up after test let result = db.drop_media("test_drop_media_literal").await.unwrap(); } + +#[tokio::test] +async fn test_is_media_group_exists() { + let mut db = setup_db().await; + + let media_group = "test_media_group"; + + let exists = db.is_media_group_exists(media_group).await.unwrap(); + assert!(!exists); + + let _ = db + .add_media( + "test_media_group_literal", + "photo", + "file_id_1", + Some(media_group), + ) + .await + .unwrap(); + + let exists = db.is_media_group_exists(media_group).await.unwrap(); + assert!(exists); + + let _ = db.drop_media("test_media_group_literal").await.unwrap(); + + let exists = db.is_media_group_exists(media_group).await.unwrap(); + assert!(!exists); +}