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

@ -27,6 +27,7 @@ import (
"github.com/spf13/viper"
"go.uploadedlobster.com/scotty/backends/listenbrainz"
"go.uploadedlobster.com/scotty/models"
)
type ListenBrainzApiBackend struct {
@ -41,10 +42,10 @@ func (b ListenBrainzApiBackend) FromConfig(config *viper.Viper) Backend {
return b
}
func (b ListenBrainzApiBackend) ExportListens(oldestTimestamp time.Time) ([]Listen, error) {
func (b ListenBrainzApiBackend) ExportListens(oldestTimestamp time.Time) ([]models.Listen, error) {
maxTime := time.Now()
minTime := time.Unix(0, 0)
listens := make([]Listen, 0)
listens := make([]models.Listen, 0)
out:
for {
@ -63,7 +64,7 @@ out:
for _, listen := range result.Payload.Listens {
if listen.ListenedAt > oldestTimestamp.Unix() {
listens = append(listens, Listen{}.FromListenBrainz(listen))
listens = append(listens, ListenFromListenBrainz(listen))
} else {
// result contains listens older then oldestTimestamp,
// we can stop requesting more
@ -76,20 +77,20 @@ out:
return listens, nil
}
func (l Listen) FromListenBrainz(lbListen listenbrainz.Listen) Listen {
func ListenFromListenBrainz(lbListen listenbrainz.Listen) models.Listen {
track := lbListen.TrackMetadata
listen := Listen{
listen := models.Listen{
ListenedAt: time.Unix(lbListen.ListenedAt, 0),
UserName: lbListen.UserName,
Track: Track{
Track: models.Track{
TrackName: track.TrackName,
ReleaseName: track.ReleaseName,
ArtistNames: []string{track.ArtistName},
Duration: track.Duration(),
TrackNumber: track.TrackNumber(),
RecordingMbid: MBID(track.RecordingMbid()),
ReleaseMbid: MBID(track.ReleaseMbid()),
ReleaseGroupMbid: MBID(track.ReleaseGroupMbid()),
RecordingMbid: models.MBID(track.RecordingMbid()),
ReleaseMbid: models.MBID(track.ReleaseMbid()),
ReleaseGroupMbid: models.MBID(track.ReleaseGroupMbid()),
Isrc: track.Isrc(),
AdditionalInfo: track.AdditionalInfo,
},