Implemented progressbar for export/import

This commit is contained in:
Philipp Wolfer 2023-11-16 00:45:00 +01:00
parent ab04eb1123
commit 6e330daf06
No known key found for this signature in database
GPG key ID: 8FDF744D4919943B
24 changed files with 590 additions and 239 deletions

View file

@ -22,55 +22,39 @@ THE SOFTWARE.
package dump
import (
"fmt"
"time"
"github.com/spf13/viper"
"go.uploadedlobster.com/scotty/models"
)
type DumpBackend struct{}
func (b DumpBackend) FromConfig(config *viper.Viper) models.Backend {
func (b *DumpBackend) FromConfig(config *viper.Viper) models.Backend {
return b
}
func (b DumpBackend) ImportListens(results chan models.ListensResult, oldestTimestamp time.Time) (models.ImportResult, error) {
importResult := models.ImportResult{
LastTimestamp: oldestTimestamp,
}
for result := range results {
if result.Error != nil {
return importResult, result.Error
}
func (b *DumpBackend) Init() error { return nil }
func (b *DumpBackend) Finish() error { return nil }
importResult.TotalCount += len(result.Listens)
for _, listen := range result.Listens {
importResult.UpdateTimestamp(listen.ListenedAt)
importResult.ImportCount += 1
fmt.Printf("🎶 %v: \"%v\" by %v (%v)\n",
listen.ListenedAt, listen.TrackName, listen.ArtistName(), listen.RecordingMbid)
}
func (b *DumpBackend) ImportListens(export models.ListensResult, importResult models.ImportResult, progress chan models.Progress) (models.ImportResult, error) {
for _, listen := range export.Listens {
importResult.UpdateTimestamp(listen.ListenedAt)
importResult.ImportCount += 1
progress <- models.Progress{}.FromImportResult(importResult)
// fmt.Printf("🎶 %v: \"%v\" by %v (%v)\n",
// listen.ListenedAt, listen.TrackName, listen.ArtistName(), listen.RecordingMbid)
}
return importResult, nil
}
func (b DumpBackend) ImportLoves(results chan models.LovesResult, oldestTimestamp time.Time) (models.ImportResult, error) {
importResult := models.ImportResult{
LastTimestamp: oldestTimestamp,
func (b *DumpBackend) ImportLoves(export models.LovesResult, importResult models.ImportResult, progress chan models.Progress) (models.ImportResult, error) {
for _, love := range export.Loves {
importResult.UpdateTimestamp(love.Created)
importResult.ImportCount += 1
progress <- models.Progress{}.FromImportResult(importResult)
// fmt.Printf("❤️ %v: \"%v\" by %v (%v)\n",
// love.Created, love.TrackName, love.ArtistName(), love.RecordingMbid)
}
for result := range results {
if result.Error != nil {
return importResult, result.Error
}
importResult.TotalCount += len(result.Loves)
for _, love := range result.Loves {
importResult.UpdateTimestamp(love.Created)
importResult.ImportCount += 1
fmt.Printf("❤️ %v: \"%v\" by %v (%v)\n",
love.Created, love.TrackName, love.ArtistName(), love.RecordingMbid)
}
}
return importResult, nil
}