diff --git a/pkg/job/manager.go b/pkg/job/manager.go index 4b4a5334f..9750edc50 100644 --- a/pkg/job/manager.go +++ b/pkg/job/manager.go @@ -107,7 +107,7 @@ func (m *Manager) notifyNewJob(j *Job) { } func (m *Manager) nextID() int { - m.lastID += 1 + m.lastID++ return m.lastID } diff --git a/pkg/job/progress.go b/pkg/job/progress.go index 93752ce11..0e62d5ce5 100644 --- a/pkg/job/progress.go +++ b/pkg/job/progress.go @@ -99,7 +99,7 @@ func (p *Progress) Increment() { defer p.mutex.Unlock() if p.processed < p.total { - p.processed += 1 + p.processed++ p.calculatePercent() } } diff --git a/pkg/sqlite/movies.go b/pkg/sqlite/movies.go index 919214f2c..91f286945 100644 --- a/pkg/sqlite/movies.go +++ b/pkg/sqlite/movies.go @@ -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) { diff --git a/pkg/sqlite/movies_test.go b/pkg/sqlite/movies_test.go index d85f39fd9..d067f96d8 100644 --- a/pkg/sqlite/movies_test.go +++ b/pkg/sqlite/movies_test.go @@ -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() diff --git a/pkg/utils/oshash_internal_test.go b/pkg/utils/oshash_internal_test.go index 592d4314c..a1dc6e67c 100644 --- a/pkg/utils/oshash_internal_test.go +++ b/pkg/utils/oshash_internal_test.go @@ -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) diff --git a/ui/v2.5/src/components/Scenes/SceneDetails/SceneEditPanel.tsx b/ui/v2.5/src/components/Scenes/SceneDetails/SceneEditPanel.tsx index c48a38d77..91caeff24 100644 --- a/ui/v2.5/src/components/Scenes/SceneDetails/SceneEditPanel.tsx +++ b/ui/v2.5/src/components/Scenes/SceneDetails/SceneEditPanel.tsx @@ -618,7 +618,7 @@ export const SceneEditPanel: React.FC = ({ 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] : []}