mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 20:34:37 +03:00
Related files/folder filter for scenes/images/galleries (#6158)
* Add related files filter to scene filter * Add files_filter to gallery filter * Add files_filter to image filter * Add gallery related folder filter
This commit is contained in:
@@ -1041,6 +1041,7 @@ type relatedFilterHandler struct {
|
||||
relatedRepo repository
|
||||
relatedHandler criterionHandler
|
||||
joinFn func(f *filterBuilder)
|
||||
directJoin bool
|
||||
}
|
||||
|
||||
func (h *relatedFilterHandler) handle(ctx context.Context, f *filterBuilder) {
|
||||
@@ -1054,6 +1055,16 @@ func (h *relatedFilterHandler) handle(ctx context.Context, f *filterBuilder) {
|
||||
return
|
||||
}
|
||||
|
||||
if h.joinFn != nil {
|
||||
h.joinFn(f)
|
||||
}
|
||||
|
||||
if h.directJoin {
|
||||
// rerun handler using existing filter builder
|
||||
h.relatedHandler.handle(ctx, f)
|
||||
return
|
||||
}
|
||||
|
||||
subQuery := h.relatedRepo.newQuery()
|
||||
selectIDs(&subQuery, subQuery.repository.tableName)
|
||||
if err := subQuery.addFilter(ff); err != nil {
|
||||
@@ -1061,9 +1072,5 @@ func (h *relatedFilterHandler) handle(ctx context.Context, f *filterBuilder) {
|
||||
return
|
||||
}
|
||||
|
||||
if h.joinFn != nil {
|
||||
h.joinFn(f)
|
||||
}
|
||||
|
||||
f.addWhere(fmt.Sprintf("%s IN ("+subQuery.toSQL(false)+")", h.relatedIDCol), subQuery.args...)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user