Skip to content

Commit

Permalink
Performer filters improvements and fixes (#416)
Browse files Browse the repository at this point in the history
* Fix performer gender filter from QS
* Fix sql error when sorting by scene debut
* Implement and use `names` performer filter (searches name / disambiguation)
* Handle `disambiguation` filter
  • Loading branch information
peolic authored May 26, 2022
1 parent ce4309f commit aa1ba3e
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 7 deletions.
3 changes: 2 additions & 1 deletion frontend/src/pages/performers/Performers.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ const PerformersComponent: FC = () => {
const { page, setPage } = usePagination();
const { loading, data } = usePerformers({
input: {
name: params.query,
names: params.query,
gender,
is_favorite: favorite,
page,
Expand Down Expand Up @@ -88,6 +88,7 @@ const PerformersComponent: FC = () => {
<Select
id="performer-gender"
options={genderOptions}
defaultValue={genderOptions.find((o) => o.value === gender)}
placeholder="Gender"
isClearable
onChange={(e) => setParams("gender", e?.value ?? undefined)}
Expand Down
4 changes: 2 additions & 2 deletions graphql/schema/types/performer.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ enum PerformerSortEnum {
}

input PerformerQueryInput {
"""Searches name and aliases - assumes like query unless quoted"""
"""Searches name and disambiguation - assumes like query unless quoted"""
names: String

"""Searches name only - assumes like query unless quoted"""
Expand All @@ -310,7 +310,7 @@ input PerformerQueryInput {
disambiguation: StringCriterionInput

gender: GenderFilterEnum

"""Filter to search urls - assumes like query unless quoted"""
url: String

Expand Down
4 changes: 2 additions & 2 deletions pkg/models/generated_exec.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pkg/models/generated_models.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 9 additions & 1 deletion pkg/sqlx/querybuilder_performer.go
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,13 @@ func (qb *performerQueryBuilder) buildQuery(filter models.PerformerQueryInput, u
query.AddArg(thisArgs...)
}

if q := filter.Names; q != nil && *q != "" {
searchColumns := []string{"performers.name", "performers.disambiguation"}
clause, thisArgs := getSearchBinding(searchColumns, *q, false, true)
query.AddWhere(clause)
query.AddArg(thisArgs...)
}

if birthYear := filter.BirthYear; birthYear != nil {
clauses, thisArgs := getBirthYearFilterClause(birthYear.Modifier, birthYear.Value)
query.AddWhere(clauses...)
Expand Down Expand Up @@ -269,6 +276,7 @@ func (qb *performerQueryBuilder) buildQuery(filter models.PerformerQueryInput, u
}
}

handleStringCriterion("disambiguation", filter.Disambiguation, query)
handleStringCriterion("country", filter.Country, query)
/*
handleStringCriterion("eye_color", performerFilter.EyeColor, &query)
Expand All @@ -288,7 +296,7 @@ func (qb *performerQueryBuilder) buildQuery(filter models.PerformerQueryInput, u
ON performers.id = D.performer_id
`
direction := filter.Direction.String() + nullsLast()
query.Sort = "ORDER BY debut " + direction + ", name " + direction
query.Sort = " ORDER BY debut " + direction + ", name " + direction
case filter.Sort == models.PerformerSortEnumSceneCount:
query.Body += `
JOIN (SELECT performer_id, COUNT(*) as scene_count FROM scene_performers GROUP BY performer_id) D
Expand Down

0 comments on commit aa1ba3e

Please sign in to comment.