Generalize BreakUp/RangByChunks functions

This commit is contained in:
Deluan
2023-11-25 12:13:36 -05:00
parent c3efc57259
commit 9aa7b80d0d
9 changed files with 58 additions and 59 deletions
+5 -5
View File
@@ -3,7 +3,7 @@ package persistence
import (
. "github.com/Masterminds/squirrel"
"github.com/navidrome/navidrome/model"
"github.com/navidrome/navidrome/utils"
"github.com/navidrome/navidrome/utils/slice"
)
func (r sqlRepository) withGenres(sql SelectBuilder) SelectBuilder {
@@ -25,7 +25,7 @@ func (r *sqlRepository) updateGenres(id string, tableName string, genres model.G
for _, g := range genres {
genreIds = append(genreIds, g.ID)
}
err = utils.RangeByChunks(genreIds, 100, func(ids []string) error {
err = slice.RangeByChunks(genreIds, 100, func(ids []string) error {
ins := Insert(tableName+"_genres").Columns("genre_id", tableName+"_id")
for _, gid := range ids {
ins = ins.Values(gid, id)
@@ -45,7 +45,7 @@ func (r *sqlRepository) loadMediaFileGenres(mfs *model.MediaFiles) error {
m[mf.ID] = mf
}
return utils.RangeByChunks(ids, 900, func(ids []string) error {
return slice.RangeByChunks(ids, 900, func(ids []string) error {
sql := Select("g.*", "mg.media_file_id").From("genre g").Join("media_file_genres mg on mg.genre_id = g.id").
Where(Eq{"mg.media_file_id": ids}).OrderBy("mg.media_file_id", "mg.rowid")
var genres []struct {
@@ -74,7 +74,7 @@ func (r *sqlRepository) loadAlbumGenres(mfs *model.Albums) error {
m[mf.ID] = mf
}
return utils.RangeByChunks(ids, 900, func(ids []string) error {
return slice.RangeByChunks(ids, 900, func(ids []string) error {
sql := Select("g.*", "ag.album_id").From("genre g").Join("album_genres ag on ag.genre_id = g.id").
Where(Eq{"ag.album_id": ids}).OrderBy("ag.album_id", "ag.rowid")
var genres []struct {
@@ -103,7 +103,7 @@ func (r *sqlRepository) loadArtistGenres(mfs *model.Artists) error {
m[mf.ID] = mf
}
return utils.RangeByChunks(ids, 900, func(ids []string) error {
return slice.RangeByChunks(ids, 900, func(ids []string) error {
sql := Select("g.*", "ag.artist_id").From("genre g").Join("artist_genres ag on ag.genre_id = g.id").
Where(Eq{"ag.artist_id": ids}).OrderBy("ag.artist_id", "ag.rowid")
var genres []struct {