From b30bd8d2fe7e8fb0851b88179adc953363fe62dc Mon Sep 17 00:00:00 2001 From: damontecres <154766448+damontecres@users.noreply.github.com> Date: Wed, 29 Jan 2025 21:41:09 -0500 Subject: [PATCH] Find scene markers by ID (#5567) --- graphql/schema/schema.graphql | 1 + .../api/resolver_query_find_scene_marker.go | 21 +++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/graphql/schema/schema.graphql b/graphql/schema/schema.graphql index 31218577d..d998ab1ff 100644 --- a/graphql/schema/schema.graphql +++ b/graphql/schema/schema.graphql @@ -45,6 +45,7 @@ type Query { findSceneMarkers( scene_marker_filter: SceneMarkerFilterType filter: FindFilterType + ids: [ID!] ): FindSceneMarkersResultType! findImage(id: ID, checksum: String): Image diff --git a/internal/api/resolver_query_find_scene_marker.go b/internal/api/resolver_query_find_scene_marker.go index 895ebc057..d3e47ce8d 100644 --- a/internal/api/resolver_query_find_scene_marker.go +++ b/internal/api/resolver_query_find_scene_marker.go @@ -4,14 +4,31 @@ import ( "context" "github.com/stashapp/stash/pkg/models" + "github.com/stashapp/stash/pkg/sliceutil/stringslice" ) -func (r *queryResolver) FindSceneMarkers(ctx context.Context, sceneMarkerFilter *models.SceneMarkerFilterType, filter *models.FindFilterType) (ret *FindSceneMarkersResultType, err error) { +func (r *queryResolver) FindSceneMarkers(ctx context.Context, sceneMarkerFilter *models.SceneMarkerFilterType, filter *models.FindFilterType, ids []string) (ret *FindSceneMarkersResultType, err error) { + idInts, err := stringslice.StringSliceToIntSlice(ids) + if err != nil { + return nil, err + } + if err := r.withReadTxn(ctx, func(ctx context.Context) error { - sceneMarkers, total, err := r.repository.SceneMarker.Query(ctx, sceneMarkerFilter, filter) + var sceneMarkers []*models.SceneMarker + var err error + var total int + + if len(idInts) > 0 { + sceneMarkers, err = r.repository.SceneMarker.FindMany(ctx, idInts) + total = len(sceneMarkers) + } else { + sceneMarkers, total, err = r.repository.SceneMarker.Query(ctx, sceneMarkerFilter, filter) + } + if err != nil { return err } + ret = &FindSceneMarkersResultType{ Count: total, SceneMarkers: sceneMarkers,