Try subquery for excluding tags
This commit is contained in:
@@ -374,9 +374,14 @@ impl TagDao for SqliteTagDao {
|
|||||||
) -> anyhow::Result<Vec<String>> {
|
) -> anyhow::Result<Vec<String>> {
|
||||||
use diesel::dsl::*;
|
use diesel::dsl::*;
|
||||||
|
|
||||||
|
let exclude_subquery = tagged_photo::table
|
||||||
|
.filter(tagged_photo::tag_id.eq_any(exclude_tag_ids.clone()))
|
||||||
|
.select(tagged_photo::photo_name)
|
||||||
|
.into_boxed();
|
||||||
|
|
||||||
tagged_photo::table
|
tagged_photo::table
|
||||||
.filter(tagged_photo::tag_id.eq_any(tag_ids.clone()))
|
.filter(tagged_photo::tag_id.eq_any(tag_ids.clone()))
|
||||||
.filter(tagged_photo::tag_id.ne_all(exclude_tag_ids))
|
.filter(tagged_photo::photo_name.ne_all(exclude_subquery))
|
||||||
.group_by(tagged_photo::photo_name)
|
.group_by(tagged_photo::photo_name)
|
||||||
.select((tagged_photo::photo_name, count(tagged_photo::tag_id)))
|
.select((tagged_photo::photo_name, count(tagged_photo::tag_id)))
|
||||||
// .having(count_distinct(tagged_photo::tag_id).eq(tag_ids.len() as i64))
|
// .having(count_distinct(tagged_photo::tag_id).eq(tag_ids.len() as i64))
|
||||||
|
|||||||
Reference in New Issue
Block a user