Update Performer gender filter (#4419)

* Update Performer gender filter

Updated the Performer gender filter to allow selection of multiple genders (`IS`) or performers with no gender specified (`IS NULL`).

* Add default modifier for circumcised
* Handle existing saved filters
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
This commit is contained in:
OFP
2024-01-15 22:47:33 -05:00
committed by GitHub
parent 45e2e12594
commit 75099b38a8
5 changed files with 47 additions and 7 deletions

View File

@@ -56,8 +56,9 @@ func (e GenderEnum) MarshalGQL(w io.Writer) {
}
type GenderCriterionInput struct {
Value *GenderEnum `json:"value"`
Modifier CriterionModifier `json:"modifier"`
Value GenderEnum `json:"value"`
ValueList []GenderEnum `json:"value_list"`
Modifier CriterionModifier `json:"modifier"`
}
type CircumisedEnum string

View File

@@ -600,7 +600,13 @@ func (qb *PerformerStore) makeFilter(ctx context.Context, filter *models.Perform
query.handleCriterion(ctx, criterionHandlerFunc(func(ctx context.Context, f *filterBuilder) {
if gender := filter.Gender; gender != nil {
f.addWhere(tableName+".gender = ?", gender.Value.String())
genderCopy := *gender
if genderCopy.Value.IsValid() && len(genderCopy.ValueList) == 0 {
genderCopy.ValueList = []models.GenderEnum{genderCopy.Value}
}
v := utils.StringerSliceToStringSlice(genderCopy.ValueList)
enumCriterionHandler(genderCopy.Modifier, v, tableName+".gender")(ctx, f)
}
}))