Add various filter criteria (#1505)

* Add various filter criteria
* Add tag name criterion
This commit is contained in:
WithoutPants
2021-06-23 09:10:20 +10:00
committed by GitHub
parent 5ecea3f69f
commit 4165e7779f
20 changed files with 189 additions and 7 deletions

View File

@@ -354,6 +354,11 @@ func (qb *sceneQueryBuilder) makeFilter(sceneFilter *models.SceneFilterType) *fi
}
query.handleCriterion(stringCriterionHandler(sceneFilter.Path, "scenes.path"))
query.handleCriterion(stringCriterionHandler(sceneFilter.Title, "scenes.title"))
query.handleCriterion(stringCriterionHandler(sceneFilter.Details, "scenes.details"))
query.handleCriterion(stringCriterionHandler(sceneFilter.Oshash, "scenes.oshash"))
query.handleCriterion(stringCriterionHandler(sceneFilter.Checksum, "scenes.checksum"))
query.handleCriterion(phashCriterionHandler(sceneFilter.Phash))
query.handleCriterion(intCriterionHandler(sceneFilter.Rating, "scenes.rating"))
query.handleCriterion(intCriterionHandler(sceneFilter.OCounter, "scenes.o_counter"))
query.handleCriterion(boolCriterionHandler(sceneFilter.Organized, "scenes.organized"))
@@ -430,6 +435,29 @@ func (qb *sceneQueryBuilder) Query(sceneFilter *models.SceneFilterType, findFilt
return scenes, countResult, nil
}
func phashCriterionHandler(phashFilter *models.StringCriterionInput) criterionHandlerFunc {
return func(f *filterBuilder) {
if phashFilter != nil {
// convert value to int from hex
// ignore errors
value, _ := utils.StringToPhash(phashFilter.Value)
if modifier := phashFilter.Modifier; phashFilter.Modifier.IsValid() {
switch modifier {
case models.CriterionModifierEquals:
f.addWhere("scenes.phash = ?", value)
case models.CriterionModifierNotEquals:
f.addWhere("scenes.phash != ?", value)
case models.CriterionModifierIsNull:
f.addWhere("scenes.phash IS NULL")
case models.CriterionModifierNotNull:
f.addWhere("scenes.phash IS NOT NULL")
}
}
}
}
}
func durationCriterionHandler(durationFilter *models.IntCriterionInput, column string) criterionHandlerFunc {
return func(f *filterBuilder) {
if durationFilter != nil {