mirror of
https://github.com/stashapp/stash.git
synced 2025-12-16 20:07:05 +03:00
Add galleries filter to scenes (#4632)
This commit is contained in:
@@ -243,6 +243,8 @@ input SceneFilterType {
|
|||||||
studios: HierarchicalMultiCriterionInput
|
studios: HierarchicalMultiCriterionInput
|
||||||
"Filter to only include scenes with this movie"
|
"Filter to only include scenes with this movie"
|
||||||
movies: MultiCriterionInput
|
movies: MultiCriterionInput
|
||||||
|
"Filter to only include scenes with this gallery"
|
||||||
|
galleries: MultiCriterionInput
|
||||||
"Filter to only include scenes with these tags"
|
"Filter to only include scenes with these tags"
|
||||||
tags: HierarchicalMultiCriterionInput
|
tags: HierarchicalMultiCriterionInput
|
||||||
"Filter by tag count"
|
"Filter by tag count"
|
||||||
|
|||||||
@@ -57,6 +57,8 @@ type SceneFilterType struct {
|
|||||||
Studios *HierarchicalMultiCriterionInput `json:"studios"`
|
Studios *HierarchicalMultiCriterionInput `json:"studios"`
|
||||||
// Filter to only include scenes with this movie
|
// Filter to only include scenes with this movie
|
||||||
Movies *MultiCriterionInput `json:"movies"`
|
Movies *MultiCriterionInput `json:"movies"`
|
||||||
|
// Filter to only include scenes with this gallery
|
||||||
|
Galleries *MultiCriterionInput `json:"galleries"`
|
||||||
// Filter to only include scenes with these tags
|
// Filter to only include scenes with these tags
|
||||||
Tags *HierarchicalMultiCriterionInput `json:"tags"`
|
Tags *HierarchicalMultiCriterionInput `json:"tags"`
|
||||||
// Filter by tag count
|
// Filter by tag count
|
||||||
|
|||||||
@@ -992,6 +992,7 @@ func (qb *SceneStore) makeFilter(ctx context.Context, sceneFilter *models.SceneF
|
|||||||
query.handleCriterion(ctx, scenePerformerCountCriterionHandler(qb, sceneFilter.PerformerCount))
|
query.handleCriterion(ctx, scenePerformerCountCriterionHandler(qb, sceneFilter.PerformerCount))
|
||||||
query.handleCriterion(ctx, studioCriterionHandler(sceneTable, sceneFilter.Studios))
|
query.handleCriterion(ctx, studioCriterionHandler(sceneTable, sceneFilter.Studios))
|
||||||
query.handleCriterion(ctx, sceneMoviesCriterionHandler(qb, sceneFilter.Movies))
|
query.handleCriterion(ctx, sceneMoviesCriterionHandler(qb, sceneFilter.Movies))
|
||||||
|
query.handleCriterion(ctx, sceneGalleriesCriterionHandler(qb, sceneFilter.Galleries))
|
||||||
query.handleCriterion(ctx, scenePerformerTagsCriterionHandler(qb, sceneFilter.PerformerTags))
|
query.handleCriterion(ctx, scenePerformerTagsCriterionHandler(qb, sceneFilter.PerformerTags))
|
||||||
query.handleCriterion(ctx, scenePerformerFavoriteCriterionHandler(sceneFilter.PerformerFavorite))
|
query.handleCriterion(ctx, scenePerformerFavoriteCriterionHandler(sceneFilter.PerformerFavorite))
|
||||||
query.handleCriterion(ctx, scenePerformerAgeCriterionHandler(sceneFilter.PerformerAge))
|
query.handleCriterion(ctx, scenePerformerAgeCriterionHandler(sceneFilter.PerformerAge))
|
||||||
@@ -1453,6 +1454,15 @@ func sceneMoviesCriterionHandler(qb *SceneStore, movies *models.MultiCriterionIn
|
|||||||
return h.handler(movies)
|
return h.handler(movies)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func sceneGalleriesCriterionHandler(qb *SceneStore, galleries *models.MultiCriterionInput) criterionHandlerFunc {
|
||||||
|
addJoinsFunc := func(f *filterBuilder) {
|
||||||
|
qb.galleriesRepository().join(f, "", "scenes.id")
|
||||||
|
f.addLeftJoin("galleries", "", "scenes_galleries.gallery_id = galleries.id")
|
||||||
|
}
|
||||||
|
h := qb.getMultiCriterionHandlerBuilder(galleryTable, scenesGalleriesTable, "gallery_id", addJoinsFunc)
|
||||||
|
return h.handler(galleries)
|
||||||
|
}
|
||||||
|
|
||||||
func scenePerformerTagsCriterionHandler(qb *SceneStore, tags *models.HierarchicalMultiCriterionInput) criterionHandler {
|
func scenePerformerTagsCriterionHandler(qb *SceneStore, tags *models.HierarchicalMultiCriterionInput) criterionHandler {
|
||||||
return &joinedPerformerTagsHandler{
|
return &joinedPerformerTagsHandler{
|
||||||
criterion: tags,
|
criterion: tags,
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import {
|
|||||||
import { HasMarkersCriterionOption } from "./criteria/has-markers";
|
import { HasMarkersCriterionOption } from "./criteria/has-markers";
|
||||||
import { SceneIsMissingCriterionOption } from "./criteria/is-missing";
|
import { SceneIsMissingCriterionOption } from "./criteria/is-missing";
|
||||||
import { MoviesCriterionOption } from "./criteria/movies";
|
import { MoviesCriterionOption } from "./criteria/movies";
|
||||||
|
import { GalleriesCriterionOption } from "./criteria/galleries";
|
||||||
import { OrganizedCriterionOption } from "./criteria/organized";
|
import { OrganizedCriterionOption } from "./criteria/organized";
|
||||||
import { PerformersCriterionOption } from "./criteria/performers";
|
import { PerformersCriterionOption } from "./criteria/performers";
|
||||||
import { ResolutionCriterionOption } from "./criteria/resolution";
|
import { ResolutionCriterionOption } from "./criteria/resolution";
|
||||||
@@ -93,6 +94,7 @@ const criterionOptions = [
|
|||||||
PerformerFavoriteCriterionOption,
|
PerformerFavoriteCriterionOption,
|
||||||
StudiosCriterionOption,
|
StudiosCriterionOption,
|
||||||
MoviesCriterionOption,
|
MoviesCriterionOption,
|
||||||
|
GalleriesCriterionOption,
|
||||||
createStringCriterionOption("url"),
|
createStringCriterionOption("url"),
|
||||||
StashIDCriterionOption,
|
StashIDCriterionOption,
|
||||||
InteractiveCriterionOption,
|
InteractiveCriterionOption,
|
||||||
|
|||||||
Reference in New Issue
Block a user