From 1aa7b61649452193cc762d29f25d87a94a6f993d Mon Sep 17 00:00:00 2001
From: Philipp Wolfer <ph.wolfer@gmail.com>
Date: Fri, 26 Jan 2024 12:19:00 +0100
Subject: [PATCH] subsonic: include subsonic_id as additional metadata

---
 internal/backends/subsonic/subsonic.go      | 16 +++++++++-------
 internal/backends/subsonic/subsonic_test.go |  2 ++
 2 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/internal/backends/subsonic/subsonic.go b/internal/backends/subsonic/subsonic.go
index 5b192ab..6a59630 100644
--- a/internal/backends/subsonic/subsonic.go
+++ b/internal/backends/subsonic/subsonic.go
@@ -100,13 +100,15 @@ func SongAsLove(song subsonic.Child, username string) models.Love {
 		UserName: username,
 		Created:  song.Starred,
 		Track: models.Track{
-			TrackName:      song.Title,
-			ReleaseName:    song.Album,
-			ArtistNames:    []string{song.Artist},
-			TrackNumber:    song.Track,
-			DiscNumber:     song.DiscNumber,
-			AdditionalInfo: map[string]any{},
-			Duration:       time.Duration(song.Duration * int(time.Second)),
+			TrackName:   song.Title,
+			ReleaseName: song.Album,
+			ArtistNames: []string{song.Artist},
+			TrackNumber: song.Track,
+			DiscNumber:  song.DiscNumber,
+			AdditionalInfo: map[string]any{
+				"subsonic_id": song.ID,
+			},
+			Duration: time.Duration(song.Duration * int(time.Second)),
 		},
 	}
 
diff --git a/internal/backends/subsonic/subsonic_test.go b/internal/backends/subsonic/subsonic_test.go
index 68641cd..c5bfe36 100644
--- a/internal/backends/subsonic/subsonic_test.go
+++ b/internal/backends/subsonic/subsonic_test.go
@@ -39,6 +39,7 @@ func TestFromConfig(t *testing.T) {
 func TestSongToLove(t *testing.T) {
 	user := "outsidecontext"
 	song := go_subsonic.Child{
+		ID:         "foo123",
 		Starred:    time.Unix(1699574369, 0),
 		Title:      "Oweynagat",
 		Album:      "Here Now, There Then",
@@ -59,4 +60,5 @@ func TestSongToLove(t *testing.T) {
 	assert.Equal(song.Track, love.Track.TrackNumber)
 	assert.Equal(song.DiscNumber, love.Track.DiscNumber)
 	assert.Equal([]string{song.Genre}, love.Track.Tags)
+	assert.Equal(song.ID, love.AdditionalInfo["subsonic_id"])
 }