Reduced redundancy in model conversions and consistent naming

This commit is contained in:
Philipp Wolfer 2023-11-22 17:53:09 +01:00
parent e29d8e2a63
commit cac88f316b
No known key found for this signature in database
GPG key ID: 8FDF744D4919943B
10 changed files with 107 additions and 107 deletions

View file

@ -77,7 +77,7 @@ out:
for _, listen := range result.Payload.Listens {
if listen.ListenedAt > oldestTimestamp.Unix() {
listens = append(listens, listen.ToListen())
listens = append(listens, listen.AsListen())
} else {
// result contains listens older then oldestTimestamp,
// we can stop requesting more
@ -117,7 +117,7 @@ out:
}
for _, feedback := range result.Feedback {
love := feedback.ToLove()
love := feedback.AsLove()
if love.Created.Unix() > oldestTimestamp.Unix() {
loves = append(loves, love)
p.Elapsed += 1
@ -196,53 +196,55 @@ func (b *ListenBrainzApiBackend) ImportLoves(export models.LovesResult, importRe
return importResult, nil
}
func (lbListen Listen) ToListen() models.Listen {
track := lbListen.TrackMetadata
func (lbListen Listen) AsListen() models.Listen {
listen := models.Listen{
ListenedAt: time.Unix(lbListen.ListenedAt, 0),
UserName: lbListen.UserName,
Track: models.Track{
TrackName: track.TrackName,
ReleaseName: track.ReleaseName,
ArtistNames: []string{track.ArtistName},
Duration: track.Duration(),
TrackNumber: track.TrackNumber(),
DiscNumber: track.DiscNumber(),
RecordingMbid: models.MBID(track.RecordingMbid()),
ReleaseMbid: models.MBID(track.ReleaseMbid()),
ReleaseGroupMbid: models.MBID(track.ReleaseGroupMbid()),
Isrc: track.Isrc(),
AdditionalInfo: track.AdditionalInfo,
},
Track: lbListen.TrackMetadata.AsTrack(),
}
return listen
}
func (f Feedback) ToLove() models.Love {
track := f.TrackMetadata
func (f Feedback) AsLove() models.Love {
recordingMbid := models.MBID(f.RecordingMbid)
track := f.TrackMetadata
if track == nil {
track = &Track{}
}
love := models.Love{
UserName: f.UserName,
RecordingMbid: recordingMbid,
Created: time.Unix(f.Created, 0),
Track: models.Track{
RecordingMbid: recordingMbid,
},
Track: track.AsTrack(),
}
if track != nil {
love.Track.TrackName = track.TrackName
love.Track.ReleaseName = track.ReleaseName
love.ArtistNames = []string{track.ArtistName}
love.ReleaseMbid = models.MBID(track.MbidMapping.ReleaseMbid)
love.ArtistMbids = make([]models.MBID, 0, len(track.MbidMapping.ArtistMbids))
if track.MbidMapping != nil {
for _, artistMbid := range track.MbidMapping.ArtistMbids {
love.Track.ArtistMbids = append(love.Track.ArtistMbids, models.MBID(artistMbid))
}
}
if love.Track.RecordingMbid == "" {
love.Track.RecordingMbid = love.RecordingMbid
}
return love
}
func (t Track) AsTrack() models.Track {
track := models.Track{
TrackName: t.TrackName,
ReleaseName: t.ReleaseName,
ArtistNames: []string{t.ArtistName},
Duration: t.Duration(),
TrackNumber: t.TrackNumber(),
DiscNumber: t.DiscNumber(),
RecordingMbid: models.MBID(t.RecordingMbid()),
ReleaseMbid: models.MBID(t.ReleaseMbid()),
ReleaseGroupMbid: models.MBID(t.ReleaseGroupMbid()),
Isrc: t.Isrc(),
AdditionalInfo: t.AdditionalInfo,
}
if t.MbidMapping != nil && len(track.ArtistMbids) == 0 {
for _, artistMbid := range t.MbidMapping.ArtistMbids {
track.ArtistMbids = append(track.ArtistMbids, models.MBID(artistMbid))
}
}
return track
}

View file

@ -34,7 +34,7 @@ func TestFromConfig(t *testing.T) {
assert.IsType(t, &listenbrainz.ListenBrainzApiBackend{}, backend)
}
func TestListenBrainzListenToListen(t *testing.T) {
func TestListenBrainzListenAsListen(t *testing.T) {
lbListen := listenbrainz.Listen{
ListenedAt: 1699289873,
UserName: "outsidecontext",
@ -54,7 +54,7 @@ func TestListenBrainzListenToListen(t *testing.T) {
},
},
}
listen := lbListen.ToListen()
listen := lbListen.AsListen()
assert.Equal(t, time.Unix(1699289873, 0), listen.ListenedAt)
assert.Equal(t, lbListen.UserName, listen.UserName)
assert.Equal(t, time.Duration(413787*time.Millisecond), listen.Duration)
@ -70,7 +70,7 @@ func TestListenBrainzListenToListen(t *testing.T) {
assert.Equal(t, lbListen.TrackMetadata.AdditionalInfo["foo"], listen.AdditionalInfo["foo"])
}
func TestListenBrainzFeedbackToLove(t *testing.T) {
func TestListenBrainzFeedbackAsLove(t *testing.T) {
recordingMbid := "c0a1fc94-5f04-4a5f-bc09-e5de0c49cd12"
releaseMbid := "d7f22677-9803-4d21-ba42-081b633a6f68"
artistMbid := "d7f22677-9803-4d21-ba42-081b633a6f68"
@ -90,7 +90,7 @@ func TestListenBrainzFeedbackToLove(t *testing.T) {
},
},
}
love := feedback.ToLove()
love := feedback.AsLove()
assert := assert.New(t)
assert.Equal(time.Unix(1699859066, 0).Unix(), love.Created.Unix())
assert.Equal(feedback.UserName, love.UserName)
@ -104,14 +104,14 @@ func TestListenBrainzFeedbackToLove(t *testing.T) {
assert.Equal(models.MBID(artistMbid), love.Track.ArtistMbids[0])
}
func TestListenBrainzPartialFeedbackToLove(t *testing.T) {
func TestListenBrainzPartialFeedbackAsLove(t *testing.T) {
recordingMbid := "c0a1fc94-5f04-4a5f-bc09-e5de0c49cd12"
feedback := listenbrainz.Feedback{
Created: 1699859066,
RecordingMbid: recordingMbid,
Score: 1,
}
love := feedback.ToLove()
love := feedback.AsLove()
assert := assert.New(t)
assert.Equal(time.Unix(1699859066, 0).Unix(), love.Created.Unix())
assert.Equal(models.MBID(recordingMbid), love.RecordingMbid)

View file

@ -149,11 +149,21 @@ func (t Track) Isrc() string {
}
func (t Track) RecordingMbid() string {
return tryGetValueOrEmpty[string](t.AdditionalInfo, "recording_mbid")
mbid := tryGetValueOrEmpty[string](t.AdditionalInfo, "recording_mbid")
if mbid == "" && t.MbidMapping != nil {
return t.MbidMapping.RecordingMbid
} else {
return mbid
}
}
func (t Track) ReleaseMbid() string {
return tryGetValueOrEmpty[string](t.AdditionalInfo, "release_mbid")
mbid := tryGetValueOrEmpty[string](t.AdditionalInfo, "release_mbid")
if mbid == "" && t.MbidMapping != nil {
return t.MbidMapping.ReleaseMbid
} else {
return mbid
}
}
func (t Track) ReleaseGroupMbid() string {