Add studios_filter to TagFilterType

This commit is contained in:
WithoutPants 2026-02-05 15:54:25 +11:00
parent f629191b28
commit fb143d4724
4 changed files with 22 additions and 0 deletions

View file

@ -644,6 +644,8 @@ input TagFilterType {
galleries_filter: GalleryFilterType
"Filter by related performers that meet this criteria"
performers_filter: PerformerFilterType
"Filter by related studios that meet this criteria"
studios_filter: StudioFilterType
"Filter by creation time"
created_at: TimestampCriterionInput

View file

@ -52,6 +52,8 @@ type TagFilterType struct {
GalleriesFilter *GalleryFilterType `json:"galleries_filter"`
// Filter by related performers that meet this criteria
PerformersFilter *PerformerFilterType `json:"performers_filter"`
// Filter by related studios that meet this criteria
StudiosFilter *StudioFilterType `json:"studios_filter"`
// Filter by created at
CreatedAt *TimestampCriterionInput `json:"created_at"`
// Filter by updated at

View file

@ -108,6 +108,7 @@ type tagRepositoryType struct {
images joinRepository
galleries joinRepository
performers joinRepository
studios joinRepository
}
var (
@ -161,6 +162,14 @@ var (
fkColumn: performerIDColumn,
foreignTable: performerTable,
},
studios: joinRepository{
repository: repository{
tableName: studiosTagsTable,
idColumn: tagIDColumn,
},
fkColumn: studioIDColumn,
foreignTable: studioTable,
},
}
)

View file

@ -136,6 +136,15 @@ func (qb *tagFilterHandler) criterionHandler() criterionHandler {
tagRepository.performers.innerJoin(f, "", "tags.id")
},
},
&relatedFilterHandler{
relatedIDCol: "studios_tags.studio_id",
relatedRepo: studioRepository.repository,
relatedHandler: &studioFilterHandler{tagFilter.StudiosFilter},
joinFn: func(f *filterBuilder) {
tagRepository.studios.innerJoin(f, "", "tags.id")
},
},
}
}