diff --git a/server/ctrlsubsonic/handlers_by_tags.go b/server/ctrlsubsonic/handlers_by_tags.go index e0c2343..bbae6fa 100644 --- a/server/ctrlsubsonic/handlers_by_tags.go +++ b/server/ctrlsubsonic/handlers_by_tags.go @@ -265,7 +265,7 @@ func (c *Controller) ServeGetArtistInfoTwo(r *http.Request) *spec.Response { continue } similar := &spec.SimilarArtist{ - ID: specid.ID{Type: specid.Artist, Value: -1}, + ID: &specid.ID{Type: specid.Artist, Value: -1}, } if artist.ID != 0 { similar.ID = artist.SID() diff --git a/server/ctrlsubsonic/spec/spec.go b/server/ctrlsubsonic/spec/spec.go index eb23f49..50e0fb8 100644 --- a/server/ctrlsubsonic/spec/spec.go +++ b/server/ctrlsubsonic/spec/spec.go @@ -91,15 +91,15 @@ type Albums struct { type Album struct { // common - ID specid.ID `xml:"id,attr,omitempty" json:"id"` - CoverID specid.ID `xml:"coverArt,attr,omitempty" json:"coverArt,omitempty"` - ArtistID specid.ID `xml:"artistId,attr,omitempty" json:"artistId,omitempty"` - Artist string `xml:"artist,attr,omitempty" json:"artist,omitempty"` + ID *specid.ID `xml:"id,attr,omitempty" json:"id"` + CoverID *specid.ID `xml:"coverArt,attr,omitempty" json:"coverArt,omitempty"` + ArtistID *specid.ID `xml:"artistId,attr,omitempty" json:"artistId,omitempty"` + Artist string `xml:"artist,attr,omitempty" json:"artist,omitempty"` // browsing by folder (eg. getAlbumList) - Title string `xml:"title,attr" json:"title"` - Album string `xml:"album,attr" json:"album"` - ParentID specid.ID `xml:"parent,attr,omitempty" json:"parent,omitempty"` - IsDir bool `xml:"isDir,attr,omitempty" json:"isDir,omitempty"` + Title string `xml:"title,attr" json:"title"` + Album string `xml:"album,attr" json:"album"` + ParentID *specid.ID `xml:"parent,attr,omitempty" json:"parent,omitempty"` + IsDir bool `xml:"isDir,attr,omitempty" json:"isDir,omitempty"` // browsing by tags (eg. getAlbumList2) Name string `xml:"name,attr" json:"name"` TrackCount int `xml:"songCount,attr" json:"songCount"` @@ -119,27 +119,27 @@ type TracksByGenre struct { } type TrackChild struct { - Album string `xml:"album,attr,omitempty" json:"album,omitempty"` - AlbumID specid.ID `xml:"albumId,attr,omitempty" json:"albumId,omitempty"` - Artist string `xml:"artist,attr,omitempty" json:"artist,omitempty"` - ArtistID specid.ID `xml:"artistId,attr,omitempty" json:"artistId,omitempty"` - Bitrate int `xml:"bitRate,attr,omitempty" json:"bitRate,omitempty"` - ContentType string `xml:"contentType,attr,omitempty" json:"contentType,omitempty"` - CoverID specid.ID `xml:"coverArt,attr,omitempty" json:"coverArt,omitempty"` - CreatedAt time.Time `xml:"created,attr,omitempty" json:"created,omitempty"` - Duration int `xml:"duration,attr,omitempty" json:"duration,omitempty"` - Genre string `xml:"genre,attr,omitempty" json:"genre,omitempty"` - ID specid.ID `xml:"id,attr,omitempty" json:"id,omitempty"` - IsDir bool `xml:"isDir,attr" json:"isDir"` - IsVideo bool `xml:"isVideo,attr" json:"isVideo"` - ParentID specid.ID `xml:"parent,attr,omitempty" json:"parent,omitempty"` - Path string `xml:"path,attr,omitempty" json:"path,omitempty"` - Size int `xml:"size,attr,omitempty" json:"size,omitempty"` - Suffix string `xml:"suffix,attr,omitempty" json:"suffix,omitempty"` - Title string `xml:"title,attr" json:"title"` - TrackNumber int `xml:"track,attr,omitempty" json:"track,omitempty"` - DiscNumber int `xml:"discNumber,attr,omitempty" json:"discNumber,omitempty"` - Type string `xml:"type,attr,omitempty" json:"type,omitempty"` + Album string `xml:"album,attr,omitempty" json:"album,omitempty"` + AlbumID *specid.ID `xml:"albumId,attr,omitempty" json:"albumId,omitempty"` + Artist string `xml:"artist,attr,omitempty" json:"artist,omitempty"` + ArtistID *specid.ID `xml:"artistId,attr,omitempty" json:"artistId,omitempty"` + Bitrate int `xml:"bitRate,attr,omitempty" json:"bitRate,omitempty"` + ContentType string `xml:"contentType,attr,omitempty" json:"contentType,omitempty"` + CoverID *specid.ID `xml:"coverArt,attr,omitempty" json:"coverArt,omitempty"` + CreatedAt time.Time `xml:"created,attr,omitempty" json:"created,omitempty"` + Duration int `xml:"duration,attr,omitempty" json:"duration,omitempty"` + Genre string `xml:"genre,attr,omitempty" json:"genre,omitempty"` + ID *specid.ID `xml:"id,attr,omitempty" json:"id,omitempty"` + IsDir bool `xml:"isDir,attr" json:"isDir"` + IsVideo bool `xml:"isVideo,attr" json:"isVideo"` + ParentID *specid.ID `xml:"parent,attr,omitempty" json:"parent,omitempty"` + Path string `xml:"path,attr,omitempty" json:"path,omitempty"` + Size int `xml:"size,attr,omitempty" json:"size,omitempty"` + Suffix string `xml:"suffix,attr,omitempty" json:"suffix,omitempty"` + Title string `xml:"title,attr" json:"title"` + TrackNumber int `xml:"track,attr,omitempty" json:"track,omitempty"` + DiscNumber int `xml:"discNumber,attr,omitempty" json:"discNumber,omitempty"` + Type string `xml:"type,attr,omitempty" json:"type,omitempty"` } type Artists struct { @@ -148,11 +148,11 @@ type Artists struct { } type Artist struct { - ID specid.ID `xml:"id,attr,omitempty" json:"id"` - Name string `xml:"name,attr" json:"name"` - CoverID specid.ID `xml:"coverArt,attr,omitempty" json:"coverArt,omitempty"` - AlbumCount int `xml:"albumCount,attr" json:"albumCount"` - Albums []*Album `xml:"album,omitempty" json:"album,omitempty"` + ID *specid.ID `xml:"id,attr,omitempty" json:"id"` + Name string `xml:"name,attr" json:"name"` + CoverID *specid.ID `xml:"coverArt,attr,omitempty" json:"coverArt,omitempty"` + AlbumCount int `xml:"albumCount,attr" json:"albumCount"` + Albums []*Album `xml:"album,omitempty" json:"album,omitempty"` } type Indexes struct { @@ -167,8 +167,8 @@ type Index struct { } type Directory struct { - ID specid.ID `xml:"id,attr,omitempty" json:"id"` - ParentID specid.ID `xml:"parent,attr,omitempty" json:"parent,omitempty"` + ID *specid.ID `xml:"id,attr,omitempty" json:"id"` + ParentID *specid.ID `xml:"parent,attr,omitempty" json:"parent,omitempty"` Name string `xml:"name,attr,omitempty" json:"name"` Starred string `xml:"starred,attr,omitempty" json:"starred,omitempty"` Children []*TrackChild `xml:"child,omitempty" json:"child,omitempty"` @@ -239,9 +239,9 @@ type Playlist struct { } type SimilarArtist struct { - ID specid.ID `xml:"id,attr" json:"id"` - Name string `xml:"name,attr" json:"name"` - AlbumCount int `xml:"albumCount,attr,omitempty" json:"albumCount,omitempty"` + ID *specid.ID `xml:"id,attr" json:"id"` + Name string `xml:"name,attr" json:"name"` + AlbumCount int `xml:"albumCount,attr,omitempty" json:"albumCount,omitempty"` } type ArtistInfo struct { diff --git a/server/db/model.go b/server/db/model.go index 37ecf06..7dfab99 100644 --- a/server/db/model.go +++ b/server/db/model.go @@ -49,8 +49,8 @@ type Artist struct { AlbumCount int `sql:"-"` } -func (a *Artist) SID() specid.ID { - return specid.ID{Type: specid.Artist, Value: a.ID} +func (a *Artist) SID() *specid.ID { + return &specid.ID{Type: specid.Artist, Value: a.ID} } func (a *Artist) IndexName() string { @@ -92,16 +92,16 @@ type Track struct { TagBrainzID string `sql:"default: null"` } -func (t *Track) SID() specid.ID { - return specid.ID{Type: specid.Track, Value: t.ID} +func (t *Track) SID() *specid.ID { + return &specid.ID{Type: specid.Track, Value: t.ID} } -func (t *Track) AlbumSID() specid.ID { - return specid.ID{Type: specid.Album, Value: t.AlbumID} +func (t *Track) AlbumSID() *specid.ID { + return &specid.ID{Type: specid.Album, Value: t.AlbumID} } -func (t *Track) ArtistSID() specid.ID { - return specid.ID{Type: specid.Artist, Value: t.ArtistID} +func (t *Track) ArtistSID() *specid.ID { + return &specid.ID{Type: specid.Artist, Value: t.ArtistID} } func (t *Track) Ext() string { @@ -176,12 +176,12 @@ type Album struct { ReceivedTags bool `gorm:"-"` } -func (a *Album) SID() specid.ID { - return specid.ID{Type: specid.Album, Value: a.ID} +func (a *Album) SID() *specid.ID { + return &specid.ID{Type: specid.Album, Value: a.ID} } -func (a *Album) ParentSID() specid.ID { - return specid.ID{Type: specid.Album, Value: a.ParentID} +func (a *Album) ParentSID() *specid.ID { + return &specid.ID{Type: specid.Album, Value: a.ParentID} } func (a *Album) IndexRightPath() string {