mirror of
https://github.com/stashapp/stash.git
synced 2025-12-06 16:34:02 +01:00
Fix movies sorting, scene studio editing (#1478)
* Fix movies:sort_by->scenes_count, scene:edit->remove studio
This commit is contained in:
parent
2ce4d9f0d8
commit
ad0a9d0707
6 changed files with 40 additions and 9 deletions
|
|
@ -107,7 +107,7 @@ func (m *Manager) notifyNewJob(j *Job) {
|
|||
}
|
||||
|
||||
func (m *Manager) nextID() int {
|
||||
m.lastID += 1
|
||||
m.lastID++
|
||||
return m.lastID
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ func (p *Progress) Increment() {
|
|||
defer p.mutex.Unlock()
|
||||
|
||||
if p.processed < p.total {
|
||||
p.processed += 1
|
||||
p.processed++
|
||||
p.calculatePercent()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -210,12 +210,14 @@ func (qb *movieQueryBuilder) getMovieSort(findFilter *models.FindFilterType) str
|
|||
direction = findFilter.GetDirection()
|
||||
}
|
||||
|
||||
// #943 - override name sorting to use natural sort
|
||||
if sort == "name" {
|
||||
switch sort {
|
||||
case "name": // #943 - override name sorting to use natural sort
|
||||
return " ORDER BY " + getColumn("movies", sort) + " COLLATE NATURAL_CS " + direction
|
||||
case "scenes_count": // generic getSort won't work for this
|
||||
return getCountSort(movieTable, moviesScenesTable, movieIDColumn, direction)
|
||||
default:
|
||||
return getSort(sort, direction, "movies")
|
||||
}
|
||||
|
||||
return getSort(sort, direction, "movies")
|
||||
}
|
||||
|
||||
func (qb *movieQueryBuilder) queryMovie(query string, args []interface{}) (*models.Movie, error) {
|
||||
|
|
|
|||
|
|
@ -186,6 +186,35 @@ func queryMovie(t *testing.T, sqb models.MovieReader, movieFilter *models.MovieF
|
|||
return movies
|
||||
}
|
||||
|
||||
func TestMovieQuerySorting(t *testing.T) {
|
||||
sort := "scenes_count"
|
||||
direction := models.SortDirectionEnumDesc
|
||||
findFilter := models.FindFilterType{
|
||||
Sort: &sort,
|
||||
Direction: &direction,
|
||||
}
|
||||
|
||||
withTxn(func(r models.Repository) error {
|
||||
sqb := r.Movie()
|
||||
movies := queryMovie(t, sqb, nil, &findFilter)
|
||||
|
||||
// scenes should be in same order as indexes
|
||||
firstMovie := movies[0]
|
||||
|
||||
assert.Equal(t, movieIDs[movieIdxWithScene], firstMovie.ID)
|
||||
|
||||
// sort in descending order
|
||||
direction = models.SortDirectionEnumAsc
|
||||
|
||||
movies = queryMovie(t, sqb, nil, &findFilter)
|
||||
lastMovie := movies[len(movies)-1]
|
||||
|
||||
assert.Equal(t, movieIDs[movieIdxWithScene], lastMovie.ID)
|
||||
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func TestMovieUpdateMovieImages(t *testing.T) {
|
||||
if err := withTxn(func(r models.Repository) error {
|
||||
mqb := r.Movie()
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import (
|
|||
|
||||
// Note that the public API returns "" instead.
|
||||
func TestOshashEmpty(t *testing.T) {
|
||||
var size int64 = 0
|
||||
var size int64
|
||||
head := make([]byte, chunkSize)
|
||||
tail := make([]byte, chunkSize)
|
||||
want := "0000000000000000"
|
||||
|
|
@ -23,7 +23,7 @@ func TestOshashEmpty(t *testing.T) {
|
|||
func TestOshashCollisions(t *testing.T) {
|
||||
buf1 := []byte("this is dumb")
|
||||
buf2 := []byte("dumb is this")
|
||||
var size int64 = int64(len(buf1))
|
||||
var size = int64(len(buf1))
|
||||
head := make([]byte, chunkSize)
|
||||
|
||||
tail1 := make([]byte, chunkSize)
|
||||
|
|
|
|||
|
|
@ -618,7 +618,7 @@ export const SceneEditPanel: React.FC<IProps> = ({
|
|||
onSelect={(items) =>
|
||||
formik.setFieldValue(
|
||||
"studio_id",
|
||||
items.length > 0 ? items[0]?.id : undefined
|
||||
items.length > 0 ? items[0]?.id : null
|
||||
)
|
||||
}
|
||||
ids={formik.values.studio_id ? [formik.values.studio_id] : []}
|
||||
|
|
|
|||
Loading…
Reference in a new issue