Break-up album/artist refresh in chunks

This commit is contained in:
Deluan 2020-09-09 08:57:59 -04:00
parent ba30f7f8be
commit 841c1129ff
3 changed files with 25 additions and 3 deletions

View File

@ -138,6 +138,17 @@ func (r *albumRepository) getEmbeddedCovers(ids []string) (map[string]model.Medi
}
func (r *albumRepository) Refresh(ids ...string) error {
chunks := utils.BreakUpStringSlice(ids, 100)
for _, chunk := range chunks {
err := r.refresh(chunk...)
if err != nil {
return err
}
}
return nil
}
func (r *albumRepository) refresh(ids ...string) error {
type refreshAlbum struct {
model.Album
CurrentId string

View File

@ -115,6 +115,17 @@ func (r *artistRepository) GetIndex() (model.ArtistIndexes, error) {
}
func (r *artistRepository) Refresh(ids ...string) error {
chunks := utils.BreakUpStringSlice(ids, 100)
for _, chunk := range chunks {
err := r.refresh(chunk...)
if err != nil {
return err
}
}
return nil
}
func (r *artistRepository) refresh(ids ...string) error {
type refreshArtist struct {
model.Artist
CurrentId string

View File

@ -39,8 +39,8 @@ func MoveString(array []string, srcIndex int, dstIndex int) []string {
return InsertString(RemoveString(array, srcIndex), value, dstIndex)
}
func BreakUpStringSlice(mediaFileIds []string, chunkSize int) [][]string {
numTracks := len(mediaFileIds)
func BreakUpStringSlice(items []string, chunkSize int) [][]string {
numTracks := len(items)
var chunks [][]string
for i := 0; i < numTracks; i += chunkSize {
end := i + chunkSize
@ -48,7 +48,7 @@ func BreakUpStringSlice(mediaFileIds []string, chunkSize int) [][]string {
end = numTracks
}
chunks = append(chunks, mediaFileIds[i:end])
chunks = append(chunks, items[i:end])
}
return chunks
}