mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 04:14:39 +03:00
Fix tag/studio alias and caption null filtering (#2990)
* Fix null filter for alias/captions * Fix error when selecting is null for captions
This commit is contained in:
@@ -729,7 +729,7 @@ type stringListCriterionHandlerBuilder struct {
|
||||
|
||||
func (m *stringListCriterionHandlerBuilder) handler(criterion *models.StringCriterionInput) criterionHandlerFunc {
|
||||
return func(ctx context.Context, f *filterBuilder) {
|
||||
if criterion != nil && len(criterion.Value) > 0 {
|
||||
if criterion != nil {
|
||||
m.addJoinTable(f)
|
||||
|
||||
stringCriterionHandler(criterion, m.joinTable+"."+m.stringColumn)(ctx, f)
|
||||
|
||||
@@ -1482,10 +1482,13 @@ func createStudios(ctx context.Context, sqb models.StudioReaderWriter, n int, o
|
||||
}
|
||||
|
||||
// add alias
|
||||
// only add aliases for some scenes
|
||||
if i == studioIdxWithMovie || i%5 == 0 {
|
||||
alias := getStudioStringValue(i, "Alias")
|
||||
if err := sqb.UpdateAliases(ctx, created.ID, []string{alias}); err != nil {
|
||||
return fmt.Errorf("error setting studio alias: %s", err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
studioIDs = append(studioIDs, created.ID)
|
||||
studioNames = append(studioNames, created.Name.String)
|
||||
|
||||
@@ -229,8 +229,9 @@ func TestStudioQueryForAutoTag(t *testing.T) {
|
||||
t.Errorf("Error finding studios: %s", err.Error())
|
||||
}
|
||||
|
||||
assert.Len(t, studios, 1)
|
||||
if assert.Len(t, studios, 1) {
|
||||
assert.Equal(t, studioIDs[studioIdxWithMovie], studios[0].ID)
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
@@ -787,7 +788,7 @@ func TestStudioQueryName(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestStudioQueryAlias(t *testing.T) {
|
||||
const studioIdx = 1
|
||||
const studioIdx = studioIdxWithMovie
|
||||
studioName := getStudioStringValue(studioIdx, "Alias")
|
||||
|
||||
aliasCriterion := &models.StringCriterionInput{
|
||||
@@ -800,6 +801,7 @@ func TestStudioQueryAlias(t *testing.T) {
|
||||
}
|
||||
|
||||
verifyFn := func(ctx context.Context, studio *models.Studio) {
|
||||
t.Helper()
|
||||
aliases, err := sqlite.StudioReaderWriter.GetAliases(ctx, studio.ID)
|
||||
if err != nil {
|
||||
t.Errorf("Error querying studios: %s", err.Error())
|
||||
@@ -819,11 +821,18 @@ func TestStudioQueryAlias(t *testing.T) {
|
||||
verifyStudioQuery(t, studioFilter, verifyFn)
|
||||
|
||||
aliasCriterion.Modifier = models.CriterionModifierMatchesRegex
|
||||
aliasCriterion.Value = "studio_.*1_Alias"
|
||||
aliasCriterion.Value = "studio_.*2_Alias"
|
||||
verifyStudioQuery(t, studioFilter, verifyFn)
|
||||
|
||||
aliasCriterion.Modifier = models.CriterionModifierNotMatchesRegex
|
||||
verifyStudioQuery(t, studioFilter, verifyFn)
|
||||
|
||||
aliasCriterion.Modifier = models.CriterionModifierIsNull
|
||||
aliasCriterion.Value = ""
|
||||
verifyStudioQuery(t, studioFilter, verifyFn)
|
||||
|
||||
aliasCriterion.Modifier = models.CriterionModifierNotNull
|
||||
verifyStudioQuery(t, studioFilter, verifyFn)
|
||||
}
|
||||
|
||||
func TestStudioUpdateAlias(t *testing.T) {
|
||||
|
||||
@@ -277,6 +277,13 @@ func TestTagQueryAlias(t *testing.T) {
|
||||
|
||||
aliasCriterion.Modifier = models.CriterionModifierNotMatchesRegex
|
||||
verifyTagQuery(t, tagFilter, nil, verifyFn)
|
||||
|
||||
aliasCriterion.Modifier = models.CriterionModifierIsNull
|
||||
aliasCriterion.Value = ""
|
||||
verifyTagQuery(t, tagFilter, nil, verifyFn)
|
||||
|
||||
aliasCriterion.Modifier = models.CriterionModifierNotNull
|
||||
verifyTagQuery(t, tagFilter, nil, verifyFn)
|
||||
}
|
||||
|
||||
func verifyTagQuery(t *testing.T, tagFilter *models.TagFilterType, findFilter *models.FindFilterType, verifyFn func(ctx context.Context, t *models.Tag)) {
|
||||
|
||||
@@ -28,7 +28,7 @@ export const CaptionsCriterionOption = new CaptionsCriterionOptionType(
|
||||
|
||||
export class CaptionCriterion extends StringCriterion {
|
||||
protected toCriterionInput() {
|
||||
const value = valueToCode(this.value);
|
||||
const value = valueToCode(this.value) ?? "";
|
||||
|
||||
return {
|
||||
value,
|
||||
|
||||
Reference in New Issue
Block a user