Fix scene marker sort by scene updated SQL error (#1777)

This commit is contained in:
WithoutPants
2021-09-27 12:26:38 +10:00
committed by GitHub
parent be94e52f21
commit b957a87a78
2 changed files with 21 additions and 3 deletions

View File

@@ -3,6 +3,7 @@ package sqlite
import ( import (
"database/sql" "database/sql"
"fmt" "fmt"
"github.com/stashapp/stash/pkg/database" "github.com/stashapp/stash/pkg/database"
"github.com/stashapp/stash/pkg/models" "github.com/stashapp/stash/pkg/models"
) )
@@ -159,7 +160,7 @@ func (qb *sceneMarkerQueryBuilder) Query(sceneMarkerFilter *models.SceneMarkerFi
query.addFilter(filter) query.addFilter(filter)
query.sortAndPagination = qb.getSceneMarkerSort(findFilter) + getPagination(findFilter) query.sortAndPagination = qb.getSceneMarkerSort(&query, findFilter) + getPagination(findFilter)
idsResult, countResult, err := query.executeFind() idsResult, countResult, err := query.executeFind()
if err != nil { if err != nil {
return nil, 0, err return nil, 0, err
@@ -246,13 +247,15 @@ func sceneMarkerPerformersCriterionHandler(qb *sceneMarkerQueryBuilder, performe
} }
} }
func (qb *sceneMarkerQueryBuilder) getSceneMarkerSort(findFilter *models.FindFilterType) string { func (qb *sceneMarkerQueryBuilder) getSceneMarkerSort(query *queryBuilder, findFilter *models.FindFilterType) string {
sort := findFilter.GetSort("title") sort := findFilter.GetSort("title")
direction := findFilter.GetDirection() direction := findFilter.GetDirection()
tableName := "scene_markers" tableName := "scene_markers"
if sort == "scenes_updated_at" { if sort == "scenes_updated_at" {
// ensure scene table is joined
query.join(sceneTable, "", "scenes.id = scene_markers.scene_id")
sort = "updated_at" sort = "updated_at"
tableName = "scene" tableName = "scenes"
} }
return getSort(sort, direction, tableName) return getSort(sort, direction, tableName)
} }

View File

@@ -68,6 +68,21 @@ func TestMarkerCountByTagID(t *testing.T) {
}) })
} }
func TestMarkerQuerySortBySceneUpdated(t *testing.T) {
withTxn(func(r models.Repository) error {
sort := "scenes_updated_at"
_, _, err := r.SceneMarker().Query(nil, &models.FindFilterType{
Sort: &sort,
})
if err != nil {
t.Errorf("Error querying scene markers: %s", err.Error())
}
return nil
})
}
// TODO Update // TODO Update
// TODO Destroy // TODO Destroy
// TODO Find // TODO Find