diff --git a/mediarepo-daemon/mediarepo-model/src/file.rs b/mediarepo-daemon/mediarepo-model/src/file.rs index 8163a2f..739f5a7 100644 --- a/mediarepo-daemon/mediarepo-model/src/file.rs +++ b/mediarepo-daemon/mediarepo-model/src/file.rs @@ -15,6 +15,7 @@ use mediarepo_database::entities::namespace; use mediarepo_database::entities::tag; use mime::Mime; use sea_orm::prelude::*; +use sea_orm::sea_query::{Expr, Query}; use sea_orm::{Condition, DatabaseConnection, Set}; use sea_orm::{JoinType, QuerySelect}; use tokio::io::BufReader; @@ -85,12 +86,20 @@ impl File { tag_ids: Vec, ) -> RepoResult> { let mut condition = Condition::all(); + for tag in tag_ids { - condition = condition.add(hash_tag::Column::TagId.eq(tag)); + condition = condition.add( + hash::Column::Id.in_subquery( + Query::select() + .expr(Expr::col(hash_tag::Column::HashId)) + .from(hash_tag::Entity) + .cond_where(hash_tag::Column::TagId.eq(tag)) + .to_owned(), + ), + ); } let results: Vec<(hash::Model, Option)> = hash::Entity::find() .find_also_related(file::Entity) - .join(JoinType::Join, hash_tag::Relation::Hash.def().rev()) .filter(condition) .group_by(file::Column::Id) .all(&db) diff --git a/mediarepo-daemon/src/main.rs b/mediarepo-daemon/src/main.rs index da0aeb0..d5d90fb 100644 --- a/mediarepo-daemon/src/main.rs +++ b/mediarepo-daemon/src/main.rs @@ -97,7 +97,7 @@ fn build_logger() { .unwrap_or(LevelFilter::Info), ) .write_style(WriteStyle::Always) - .filter_module("sqlx", log::LevelFilter::Warn) + //.filter_module("sqlx", log::LevelFilter::Warn) .filter_module("tokio", log::LevelFilter::Info) .filter_module("tracing", log::LevelFilter::Warn) .init();