You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mediarepo/mediarepo-daemon/mediarepo-logic/src/dao/tag/delete_implications.rs

29 lines
854 B
Rust

use mediarepo_core::error::RepoResult;
use mediarepo_database::entities::tag_implication;
use sea_orm::{prelude::*, Condition};
use crate::dto::DeleteTagImplicationDto;
use super::TagDao;
impl TagDao {
pub async fn delete_implications(
&self,
implications: Vec<DeleteTagImplicationDto>,
) -> RepoResult<()> {
let filter_condition = implications
.into_iter()
.map(|i| {
Condition::all()
.add(tag_implication::Column::TagId.eq(i.tag_id))
.add(tag_implication::Column::ImpliedTagId.eq(i.implied_tag_id))
})
.fold(Condition::any(), |acc, val| acc.add(val));
tag_implication::Entity::delete_many()
.filter(filter_condition)
.exec(&self.ctx.db)
.await?;
Ok(())
}
}