Pass context to import backends

This commit is contained in:
Philipp Wolfer 2025-05-22 11:20:09 +02:00
parent 26d9f5e840
commit 4a66e3d432
No known key found for this signature in database
GPG key ID: 8FDF744D4919943B
8 changed files with 71 additions and 42 deletions

View file

@ -192,9 +192,15 @@ out:
progress <- p
}
func (b *LastfmApiBackend) ImportListens(export models.ListensResult, importResult models.ImportResult, progress chan models.TransferProgress) (models.ImportResult, error) {
func (b *LastfmApiBackend) ImportListens(ctx context.Context, export models.ListensResult, importResult models.ImportResult, progress chan models.TransferProgress) (models.ImportResult, error) {
total := len(export.Items)
for i := 0; i < total; i += MaxListensPerSubmission {
select {
case <-ctx.Done():
return importResult, ctx.Err()
default:
}
listens := export.Items[i:min(i+MaxListensPerSubmission, total)]
count := len(listens)
if count == 0 {
@ -354,8 +360,14 @@ out:
results <- models.LovesResult{Items: loves, Total: totalCount}
}
func (b *LastfmApiBackend) ImportLoves(export models.LovesResult, importResult models.ImportResult, progress chan models.TransferProgress) (models.ImportResult, error) {
func (b *LastfmApiBackend) ImportLoves(ctx context.Context, export models.LovesResult, importResult models.ImportResult, progress chan models.TransferProgress) (models.ImportResult, error) {
for _, love := range export.Items {
select {
case <-ctx.Done():
return importResult, ctx.Err()
default:
}
err := b.client.Track.Love(lastfm.P{
"track": love.TrackName,
"artist": love.ArtistName(),