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:
WithoutPants
2025-11-06 17:25:59 +11:00
committed by GitHub
parent 04fcf6f512
commit a50a0d4289
12 changed files with 129 additions and 20 deletions

View File

@@ -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...)
}