From fb143d4724091638428d032828b56bfa88c5ae93 Mon Sep 17 00:00:00 2001 From: WithoutPants <53250216+WithoutPants@users.noreply.github.com> Date: Thu, 5 Feb 2026 15:54:25 +1100 Subject: [PATCH] Add studios_filter to TagFilterType --- graphql/schema/types/filters.graphql | 2 ++ pkg/models/tag.go | 2 ++ pkg/sqlite/tag.go | 9 +++++++++ pkg/sqlite/tag_filter.go | 9 +++++++++ 4 files changed, 22 insertions(+) diff --git a/graphql/schema/types/filters.graphql b/graphql/schema/types/filters.graphql index 52eec6785..de93c8dd8 100644 --- a/graphql/schema/types/filters.graphql +++ b/graphql/schema/types/filters.graphql @@ -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 diff --git a/pkg/models/tag.go b/pkg/models/tag.go index 5ff2df6ad..d001f8b43 100644 --- a/pkg/models/tag.go +++ b/pkg/models/tag.go @@ -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 diff --git a/pkg/sqlite/tag.go b/pkg/sqlite/tag.go index b1d773290..0befdb788 100644 --- a/pkg/sqlite/tag.go +++ b/pkg/sqlite/tag.go @@ -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, + }, } ) diff --git a/pkg/sqlite/tag_filter.go b/pkg/sqlite/tag_filter.go index dadc351ee..9b8b61c74 100644 --- a/pkg/sqlite/tag_filter.go +++ b/pkg/sqlite/tag_filter.go @@ -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") + }, + }, } }