From e9c68897d7eba2dc28fc3454f80587d2d6537ac2 Mon Sep 17 00:00:00 2001 From: InfiniteTF Date: Sat, 9 May 2020 04:21:08 +0200 Subject: [PATCH] Add is-missing tags filter (#526) --- pkg/models/querybuilder_scene.go | 2 ++ pkg/models/querybuilder_scene_test.go | 22 +++++++++++++++++++ .../models/list-filter/criteria/is-missing.ts | 1 + 3 files changed, 25 insertions(+) diff --git a/pkg/models/querybuilder_scene.go b/pkg/models/querybuilder_scene.go index ad70c6230..c96fbdec4 100644 --- a/pkg/models/querybuilder_scene.go +++ b/pkg/models/querybuilder_scene.go @@ -317,6 +317,8 @@ func (qb *SceneQueryBuilder) Query(sceneFilter *SceneFilterType, findFilter *Fin whereClauses = append(whereClauses, "performers_join.scene_id IS NULL") case "date": whereClauses = append(whereClauses, "scenes.date IS \"\" OR scenes.date IS \"0001-01-01\"") + case "tags": + whereClauses = append(whereClauses, "tags_join.scene_id IS NULL") default: whereClauses = append(whereClauses, "scenes."+*isMissingFilter+" IS NULL") } diff --git a/pkg/models/querybuilder_scene_test.go b/pkg/models/querybuilder_scene_test.go index d6c4de511..06a03a26f 100644 --- a/pkg/models/querybuilder_scene_test.go +++ b/pkg/models/querybuilder_scene_test.go @@ -497,6 +497,28 @@ func TestSceneQueryIsMissingDate(t *testing.T) { } } +func TestSceneQueryIsMissingTags(t *testing.T) { + sqb := models.NewSceneQueryBuilder() + isMissing := "tags" + sceneFilter := models.SceneFilterType{ + IsMissing: &isMissing, + } + + q := getSceneStringValue(sceneIdxWithTwoTags, titleField) + findFilter := models.FindFilterType{ + Q: &q, + } + + scenes, _ := sqb.Query(&sceneFilter, &findFilter) + + assert.Len(t, scenes, 0) + + findFilter.Q = nil + scenes, _ = sqb.Query(&sceneFilter, &findFilter) + + assert.True(t, len(scenes) > 0) +} + func TestSceneQueryIsMissingRating(t *testing.T) { sqb := models.NewSceneQueryBuilder() isMissing := "rating" diff --git a/ui/v2.5/src/models/list-filter/criteria/is-missing.ts b/ui/v2.5/src/models/list-filter/criteria/is-missing.ts index 128276a91..9f317ceb3 100644 --- a/ui/v2.5/src/models/list-filter/criteria/is-missing.ts +++ b/ui/v2.5/src/models/list-filter/criteria/is-missing.ts @@ -18,6 +18,7 @@ export class SceneIsMissingCriterion extends IsMissingCriterion { "studio", "movie", "performers", + "tags", ]; }