From ea7a4f8d3389fb959d82b55dd591bca0c67f3fbc Mon Sep 17 00:00:00 2001 From: bnkai <48220860+bnkai@users.noreply.github.com> Date: Sun, 3 Oct 2021 03:00:49 +0300 Subject: [PATCH] Fix Studio -> Stash ID filter (#1793) --- pkg/sqlite/studio.go | 2 +- pkg/sqlite/studio_test.go | 83 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+), 1 deletion(-) diff --git a/pkg/sqlite/studio.go b/pkg/sqlite/studio.go index c2960a95e..746a89b12 100644 --- a/pkg/sqlite/studio.go +++ b/pkg/sqlite/studio.go @@ -199,7 +199,7 @@ func (qb *studioQueryBuilder) makeFilter(studioFilter *models.StudioFilterType) query.handleCriterion(criterionHandlerFunc(func(f *filterBuilder) { if studioFilter.StashID != nil { qb.stashIDRepository().join(f, "studio_stash_ids", "studios.id") - stringCriterionHandler(studioFilter.StashID, "scene_stash_ids.stash_id")(f) + stringCriterionHandler(studioFilter.StashID, "studio_stash_ids.stash_id")(f) } })) diff --git a/pkg/sqlite/studio_test.go b/pkg/sqlite/studio_test.go index bb3dd3e18..8e623e53f 100644 --- a/pkg/sqlite/studio_test.go +++ b/pkg/sqlite/studio_test.go @@ -828,6 +828,89 @@ func TestStudioUpdateAlias(t *testing.T) { } } +// TestStudioQueryFast does a quick test for major errors, no result verification +func TestStudioQueryFast(t *testing.T) { + + tsString := "test" + tsInt := 1 + + testStringCriterion := models.StringCriterionInput{ + Value: tsString, + Modifier: models.CriterionModifierEquals, + } + testIncludesMultiCriterion := models.MultiCriterionInput{ + Value: []string{tsString}, + Modifier: models.CriterionModifierIncludes, + } + testIntCriterion := models.IntCriterionInput{ + Value: tsInt, + Modifier: models.CriterionModifierEquals, + } + + nameFilter := models.StudioFilterType{ + Name: &testStringCriterion, + } + aliasesFilter := models.StudioFilterType{ + Aliases: &testStringCriterion, + } + stashIDFilter := models.StudioFilterType{ + StashID: &testStringCriterion, + } + urlFilter := models.StudioFilterType{ + URL: &testStringCriterion, + } + ratingFilter := models.StudioFilterType{ + Rating: &testIntCriterion, + } + sceneCountFilter := models.StudioFilterType{ + SceneCount: &testIntCriterion, + } + imageCountFilter := models.StudioFilterType{ + SceneCount: &testIntCriterion, + } + parentsFilter := models.StudioFilterType{ + Parents: &testIncludesMultiCriterion, + } + + filters := []models.StudioFilterType{nameFilter, aliasesFilter, stashIDFilter, urlFilter, ratingFilter, sceneCountFilter, imageCountFilter, parentsFilter} + + missingStrings := []string{"image", "stash_id", "details"} + + for _, m := range missingStrings { + filters = append(filters, models.StudioFilterType{ + IsMissing: &m, + }) + } + + sortbyStrings := []string{"scenes_count", "images_count", "galleries_count", "created_at", "updated_at", "name", "random_26819649", "rating"} + + var findFilters []models.FindFilterType + + for _, sb := range sortbyStrings { + findFilters = append(findFilters, models.FindFilterType{ + Q: &tsString, + Page: &tsInt, + PerPage: &tsInt, + Sort: &sb, + }) + + } + + withTxn(func(r models.Repository) error { + sqb := r.Studio() + for _, f := range filters { + for _, ff := range findFilters { + _, _, err := sqb.Query(&f, &ff) + if err != nil { + t.Errorf("Error querying studio: %s", err.Error()) + } + } + } + + return nil + }) +} + // TODO Create // TODO Update // TODO Destroy