Move models to separate package

This allows easier reuse and better separation of code without introducing
circular dependencies
This commit is contained in:
Philipp Wolfer 2023-11-11 16:20:40 +01:00
parent cdddf89a3e
commit 9d97e324aa
No known key found for this signature in database
GPG key ID: 8FDF744D4919943B
8 changed files with 43 additions and 37 deletions

View file

@ -33,6 +33,7 @@ import (
"time"
"github.com/spf13/viper"
"go.uploadedlobster.com/scotty/models"
)
type ScrobblerLogBackend struct {
@ -46,7 +47,7 @@ func (b ScrobblerLogBackend) FromConfig(config *viper.Viper) Backend {
return b
}
func (b ScrobblerLogBackend) ExportListens(oldestTimestamp time.Time) ([]Listen, error) {
func (b ScrobblerLogBackend) ExportListens(oldestTimestamp time.Time) ([]models.Listen, error) {
file, err := os.Open(b.filePath)
if err != nil {
return nil, err
@ -65,7 +66,7 @@ func (b ScrobblerLogBackend) ExportListens(oldestTimestamp time.Time) ([]Listen,
// Row length is often flexible
tsvReader.FieldsPerRecord = -1
listens := make([]Listen, 0)
listens := make([]models.Listen, 0)
for {
// A row is:
// artistName releaseName trackName trackNumber duration rating timestamp recordingMbid
@ -101,7 +102,7 @@ func (b ScrobblerLogBackend) ExportListens(oldestTimestamp time.Time) ([]Listen,
return listens, nil
}
func (b ScrobblerLogBackend) ImportListens(listens []Listen, oldestTimestamp time.Time) (ImportResult, error) {
func (b ScrobblerLogBackend) ImportListens(listens []models.Listen, oldestTimestamp time.Time) (ImportResult, error) {
result := ImportResult{
Count: 0,
LastTimestamp: oldestTimestamp,
@ -195,8 +196,8 @@ func writeHeader(writer io.Writer) error {
return nil
}
func rowToListen(row []string, client string) (Listen, error) {
var listen Listen
func rowToListen(row []string, client string) (models.Listen, error) {
var listen models.Listen
trackNumber, err := strconv.Atoi(row[3])
if err != nil {
return listen, err
@ -212,14 +213,14 @@ func rowToListen(row []string, client string) (Listen, error) {
return listen, err
}
listen = Listen{
Track: Track{
listen = models.Listen{
Track: models.Track{
ArtistNames: []string{row[0]},
ReleaseName: row[1],
TrackName: row[2],
TrackNumber: trackNumber,
Duration: time.Duration(duration * int(time.Second)),
AdditionalInfo: AdditionalInfo{
AdditionalInfo: models.AdditionalInfo{
"rockbox_rating": row[5],
"media_player": client,
},
@ -228,7 +229,7 @@ func rowToListen(row []string, client string) (Listen, error) {
}
if len(row) > 7 {
listen.Track.RecordingMbid = MBID(row[7])
listen.Track.RecordingMbid = models.MBID(row[7])
}
return listen, nil