Updated all import/export interfaces

This commit is contained in:
Philipp Wolfer 2023-11-15 19:24:12 +01:00
parent 729a3d0ed0
commit ab04eb1123
No known key found for this signature in database
GPG key ID: 8FDF744D4919943B
12 changed files with 247 additions and 167 deletions

View file

@ -22,7 +22,7 @@ THE SOFTWARE.
package funkwhale
import (
"slices"
"sort"
"time"
"github.com/spf13/viper"
@ -45,17 +45,19 @@ func (b FunkwhaleApiBackend) FromConfig(config *viper.Viper) models.Backend {
return b
}
func (b FunkwhaleApiBackend) ExportListens(oldestTimestamp time.Time) ([]models.Listen, error) {
func (b FunkwhaleApiBackend) ExportListens(oldestTimestamp time.Time, results chan models.ListensResult) {
page := 1
perPage := MaxItemsPerGet
listens := make([]models.Listen, 0, 2*MaxItemsPerGet)
// We need to gather the full list of listens in order to sort them
listens := make(models.ListensList, 0, 2*MaxItemsPerGet)
out:
for {
result, err := b.client.GetHistoryListenings(b.username, page, perPage)
if err != nil {
return nil, err
results <- models.ListensResult{Error: err}
close(results)
}
count := len(result.Results)
@ -80,21 +82,26 @@ out:
page += 1
}
slices.Reverse(listens)
return listens, nil
sort.Sort(listens)
results <- models.ListensResult{Listens: listens}
close(results)
}
func (b FunkwhaleApiBackend) ExportLoves(oldestTimestamp time.Time) ([]models.Love, error) {
func (b FunkwhaleApiBackend) ExportLoves(oldestTimestamp time.Time, results chan models.LovesResult) {
page := 1
perPage := MaxItemsPerGet
loves := make([]models.Love, 0, 2*MaxItemsPerGet)
defer close(results)
// We need to gather the full list of listens in order to sort them
loves := make(models.LovesList, 0, 2*MaxItemsPerGet)
out:
for {
result, err := b.client.GetFavoriteTracks(page, perPage)
if err != nil {
return nil, err
results <- models.LovesResult{Error: err}
return
}
count := len(result.Results)
@ -119,8 +126,8 @@ out:
page += 1
}
slices.Reverse(loves)
return loves, nil
sort.Sort(loves)
results <- models.LovesResult{Loves: loves}
}
func (l Listening) ToListen() models.Listen {