This commit is contained in:
Slick Daddy 2026-05-09 02:02:22 +03:00 committed by GitHub
commit 97e0bf0b97
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 64 additions and 5 deletions

View file

@ -423,6 +423,8 @@ input GroupFilterType {
NOT: GroupFilterType
name: StringCriterionInput
"Filter by aliases"
aliases: StringCriterionInput
director: StringCriterionInput
synopsis: StringCriterionInput

View file

@ -3,6 +3,7 @@ package models
type GroupFilterType struct {
OperatorFilter[GroupFilterType]
Name *StringCriterionInput `json:"name"`
Aliases *StringCriterionInput `json:"aliases"`
Director *StringCriterionInput `json:"director"`
Synopsis *StringCriterionInput `json:"synopsis"`
// Filter by duration (in seconds)

View file

@ -64,6 +64,7 @@ func (qb *groupFilterHandler) criterionHandler() criterionHandler {
groupFilter := qb.groupFilter
return compoundHandler{
stringCriterionHandler(groupFilter.Name, "groups.name"),
stringCriterionHandler(groupFilter.Aliases, "groups.aliases"),
stringCriterionHandler(groupFilter.Director, "groups.director"),
stringCriterionHandler(groupFilter.Synopsis, "groups.description"),
intCriterionHandler(groupFilter.Rating100, "groups.rating", nil),

View file

@ -328,6 +328,7 @@ func emptyGroup(idx int) models.Group {
return models.Group{
ID: groupIDs[idx],
Name: groupNames[idx],
Aliases: "",
TagIDs: models.NewRelatedIDs([]int{}),
ContainingGroups: models.NewRelatedGroupDescriptions([]models.GroupIDDescription{}),
SubGroups: models.NewRelatedGroupDescriptions([]models.GroupIDDescription{}),
@ -452,8 +453,9 @@ func Test_groupQueryBuilder_UpdatePartial(t *testing.T) {
},
},
models.Group{
ID: groupIDs[groupIdxWithParent],
Name: groupNames[groupIdxWithParent],
ID: groupIDs[groupIdxWithParent],
Name: groupNames[groupIdxWithParent],
Aliases: getGroupEmptyString(groupIdxWithParent, "Aliases"),
ContainingGroups: models.NewRelatedGroupDescriptions([]models.GroupIDDescription{
{GroupID: groupIDs[groupIdxWithChild]},
{GroupID: groupIDs[groupIdxWithScene], Description: containingGroupDescription},
@ -473,8 +475,9 @@ func Test_groupQueryBuilder_UpdatePartial(t *testing.T) {
},
},
models.Group{
ID: groupIDs[groupIdxWithChild],
Name: groupNames[groupIdxWithChild],
ID: groupIDs[groupIdxWithChild],
Name: groupNames[groupIdxWithChild],
Aliases: getGroupEmptyString(groupIdxWithChild, "Aliases"),
SubGroups: models.NewRelatedGroupDescriptions([]models.GroupIDDescription{
{GroupID: groupIDs[groupIdxWithParent]},
{GroupID: groupIDs[groupIdxWithScene], Description: subGroupDescription},
@ -496,6 +499,7 @@ func Test_groupQueryBuilder_UpdatePartial(t *testing.T) {
models.Group{
ID: groupIDs[groupIdxWithParent],
Name: groupNames[groupIdxWithParent],
Aliases: getGroupEmptyString(groupIdxWithParent, "Aliases"),
ContainingGroups: models.NewRelatedGroupDescriptions([]models.GroupIDDescription{}),
},
false,
@ -514,6 +518,7 @@ func Test_groupQueryBuilder_UpdatePartial(t *testing.T) {
models.Group{
ID: groupIDs[groupIdxWithChild],
Name: groupNames[groupIdxWithChild],
Aliases: getGroupEmptyString(groupIdxWithChild, "Aliases"),
SubGroups: models.NewRelatedGroupDescriptions([]models.GroupIDDescription{}),
},
false,
@ -885,6 +890,53 @@ func TestGroupQueryURL(t *testing.T) {
verifyGroupQuery(t, filter, verifyFn)
}
func TestGroupQueryAliases(t *testing.T) {
const groupIdx = 1
const aliasesField = "Aliases"
groupAliases := getGroupStringValue(groupIdx, aliasesField)
aliasesCriterion := models.StringCriterionInput{
Value: groupAliases,
Modifier: models.CriterionModifierEquals,
}
filter := models.GroupFilterType{
Aliases: &aliasesCriterion,
}
verifyFn := func(n *models.Group) {
t.Helper()
verifyString(t, n.Aliases, aliasesCriterion)
}
verifyGroupQuery(t, filter, verifyFn)
aliasesCriterion.Modifier = models.CriterionModifierNotEquals
verifyGroupQuery(t, filter, verifyFn)
aliasesCriterion.Modifier = models.CriterionModifierIncludes
aliasesCriterion.Value = "oup_0001_A"
verifyGroupQuery(t, filter, verifyFn)
aliasesCriterion.Modifier = models.CriterionModifierExcludes
aliasesCriterion.Value = "not-present-alias-substring"
verifyGroupQuery(t, filter, verifyFn)
aliasesCriterion.Modifier = models.CriterionModifierMatchesRegex
aliasesCriterion.Value = "group_.*1_Aliases"
verifyGroupQuery(t, filter, verifyFn)
aliasesCriterion.Modifier = models.CriterionModifierNotMatchesRegex
verifyGroupQuery(t, filter, verifyFn)
aliasesCriterion.Modifier = models.CriterionModifierIsNull
aliasesCriterion.Value = ""
verifyGroupQuery(t, filter, verifyFn)
aliasesCriterion.Modifier = models.CriterionModifierNotNull
verifyGroupQuery(t, filter, verifyFn)
}
func TestGroupQueryURLExcludes(t *testing.T) {
withRollbackTxn(func(ctx context.Context) error {
mqb := db.Group

View file

@ -1520,8 +1520,10 @@ func createGroups(ctx context.Context, mqb models.GroupReaderWriter, n int, o in
// groups [ i ] and [ n + o - i - 1 ] should have similar names with only the Name!=NaMe part different
name = getGroupStringValue(index, name)
aliases := getGroupEmptyString(i, "Aliases")
group := models.Group{
Name: name,
Name: name,
Aliases: aliases,
URLs: models.NewRelatedStrings([]string{
getGroupEmptyString(i, urlField),
}),

View file

@ -49,6 +49,7 @@ const criterionOptions = [
GroupIsMissingCriterionOption,
createStringCriterionOption("url"),
createStringCriterionOption("name"),
createStringCriterionOption("aliases"),
createStringCriterionOption("director"),
createStringCriterionOption("synopsis"),
createDurationCriterionOption("duration"),