mirror of
https://github.com/stashapp/stash.git
synced 2026-02-08 00:12:55 +01:00
Add latest scene sort for performers and studios. (#6501)
This commit is contained in:
parent
b8c5e15217
commit
6f5a7d1f0a
6 changed files with 52 additions and 0 deletions
|
|
@ -706,6 +706,28 @@ func (qb *PerformerStore) sortByLastOAt(direction string) string {
|
|||
return " ORDER BY (" + selectPerformerLastOAtSQL + ") " + direction
|
||||
}
|
||||
|
||||
// used for sorting on performer latest scene
|
||||
var selectPerformerLatestSceneSQL = utils.StrFormat(
|
||||
"SELECT MAX(date) FROM ("+
|
||||
"SELECT {date} FROM {performers_scenes} s "+
|
||||
"LEFT JOIN {scenes} ON {scenes}.id = s.{scene_id} "+
|
||||
"WHERE s.{performer_id} = {performers}.id"+
|
||||
")",
|
||||
map[string]interface{}{
|
||||
"performer_id": performerIDColumn,
|
||||
"performers": performerTable,
|
||||
"performers_scenes": performersScenesTable,
|
||||
"scenes": sceneTable,
|
||||
"scene_id": sceneIDColumn,
|
||||
"date": sceneDateColumn,
|
||||
},
|
||||
)
|
||||
|
||||
func (qb *PerformerStore) sortByLatestScene(direction string) string {
|
||||
// need to get the latest date from scenes
|
||||
return " ORDER BY (" + selectPerformerLatestSceneSQL + ") " + direction
|
||||
}
|
||||
|
||||
// used for sorting on performer last view_date
|
||||
var selectPerformerLastPlayedAtSQL = utils.StrFormat(
|
||||
"SELECT MAX(view_date) FROM ("+
|
||||
|
|
@ -762,6 +784,7 @@ var performerSortOptions = sortOptions{
|
|||
"images_count",
|
||||
"last_o_at",
|
||||
"last_played_at",
|
||||
"latest_scene",
|
||||
"measurements",
|
||||
"name",
|
||||
"o_counter",
|
||||
|
|
@ -812,6 +835,8 @@ func (qb *PerformerStore) getPerformerSort(findFilter *models.FindFilterType) (s
|
|||
sortQuery += qb.sortByLastPlayedAt(direction)
|
||||
case "last_o_at":
|
||||
sortQuery += qb.sortByLastOAt(direction)
|
||||
case "latest_scene":
|
||||
sortQuery += qb.sortByLatestScene(direction)
|
||||
default:
|
||||
sortQuery += getSort(sort, direction, "performers")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ const (
|
|||
sceneTable = "scenes"
|
||||
scenesFilesTable = "scenes_files"
|
||||
sceneIDColumn = "scene_id"
|
||||
sceneDateColumn = "date"
|
||||
performersScenesTable = "performers_scenes"
|
||||
scenesTagsTable = "scenes_tags"
|
||||
scenesGalleriesTable = "scenes_galleries"
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ import (
|
|||
|
||||
"github.com/stashapp/stash/pkg/models"
|
||||
"github.com/stashapp/stash/pkg/studio"
|
||||
"github.com/stashapp/stash/pkg/utils"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
@ -601,12 +602,32 @@ func (qb *StudioStore) sortByScenesDuration(direction string) string {
|
|||
) %s`, sceneTable, scenesFilesTable, scenesFilesTable, sceneIDColumn, sceneTable, scenesFilesTable, sceneTable, studioIDColumn, studioTable, getSortDirection(direction))
|
||||
}
|
||||
|
||||
// used for sorting on performer latest scene
|
||||
var selectStudioLatestSceneSQL = utils.StrFormat(
|
||||
"SELECT MAX(date) FROM ("+
|
||||
"SELECT {date} FROM {scenes} s "+
|
||||
"WHERE s.{studio_id} = {studios}.id"+
|
||||
")",
|
||||
map[string]interface{}{
|
||||
"scenes": sceneTable,
|
||||
"studios": studioTable,
|
||||
"studio_id": studioIDColumn,
|
||||
"date": sceneDateColumn,
|
||||
},
|
||||
)
|
||||
|
||||
func (qb *StudioStore) sortByLatestScene(direction string) string {
|
||||
// need to get the latest date from scenes
|
||||
return " ORDER BY (" + selectStudioLatestSceneSQL + ") " + direction
|
||||
}
|
||||
|
||||
var studioSortOptions = sortOptions{
|
||||
"child_count",
|
||||
"created_at",
|
||||
"galleries_count",
|
||||
"id",
|
||||
"images_count",
|
||||
"latest_scene",
|
||||
"name",
|
||||
"scenes_count",
|
||||
"scenes_duration",
|
||||
|
|
@ -646,6 +667,8 @@ func (qb *StudioStore) getStudioSort(findFilter *models.FindFilterType) (string,
|
|||
sortQuery += getCountSort(studioTable, galleryTable, studioIDColumn, direction)
|
||||
case "child_count":
|
||||
sortQuery += getCountSort(studioTable, studioTable, studioParentIDColumn, direction)
|
||||
case "latest_scene":
|
||||
sortQuery += qb.sortByLatestScene(direction)
|
||||
default:
|
||||
sortQuery += getSort(sort, direction, "studios")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1203,6 +1203,7 @@
|
|||
"last_o_at": "Last O At",
|
||||
"last_o_at_sfw": "Last Like At",
|
||||
"last_played_at": "Last Played At",
|
||||
"latest_scene": "Latest Scene",
|
||||
"library": "Library",
|
||||
"loading": {
|
||||
"generic": "Loading…",
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ const sortByOptions = [
|
|||
"penis_length",
|
||||
"play_count",
|
||||
"last_played_at",
|
||||
"latest_scene",
|
||||
"career_length",
|
||||
"weight",
|
||||
"measurements",
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ const sortByOptions = [
|
|||
"random",
|
||||
"rating",
|
||||
"scenes_duration",
|
||||
"latest_scene",
|
||||
]
|
||||
.map(ListFilterOptions.createSortBy)
|
||||
.concat([
|
||||
|
|
|
|||
Loading…
Reference in a new issue