refactor sub contructors

This commit is contained in:
sentriz
2019-06-05 18:13:01 +01:00
parent 0a1bc49551
commit a1a40b85e4
5 changed files with 62 additions and 62 deletions

View File

@@ -7,12 +7,23 @@ import (
"github.com/sentriz/gonic/server/subsonic"
)
func makeChildFromFolder(f *model.Album, parent *model.Album) *subsonic.Track {
child := &subsonic.Track{
ID: f.ID,
func newAlbumByFolder(f *model.Album) *subsonic.Album {
return &subsonic.Album{
Artist: f.Parent.RightPath,
CoverID: f.ID,
ID: f.ID,
IsDir: true,
ParentID: f.ParentID,
Title: f.RightPath,
}
}
func newTCAlbumByFolder(f *model.Album, parent *model.Album) *subsonic.TrackChild {
child := &subsonic.TrackChild{
CoverID: f.ID,
Title: f.RightPath,
ID: f.ID,
IsDir: true,
Title: f.RightPath,
}
if parent != nil {
child.ParentID = parent.ID
@@ -20,8 +31,8 @@ func makeChildFromFolder(f *model.Album, parent *model.Album) *subsonic.Track {
return child
}
func makeChildFromTrack(t *model.Track, parent *model.Album) *subsonic.Track {
return &subsonic.Track{
func newTCTrackByFolder(t *model.Track, parent *model.Album) *subsonic.TrackChild {
return &subsonic.TrackChild{
ID: t.ID,
Album: t.Album.RightPath,
ContentType: t.MIME(),
@@ -43,25 +54,14 @@ func makeChildFromTrack(t *model.Track, parent *model.Album) *subsonic.Track {
}
}
func makeAlbumFromFolder(f *model.Album) *subsonic.Album {
return &subsonic.Album{
ID: f.ID,
Title: f.RightPath,
CoverID: f.ID,
ParentID: f.ParentID,
Artist: f.Parent.RightPath,
IsDir: true,
}
}
func makeArtistFromFolder(f *model.Album) *subsonic.Artist {
func newArtistByFolder(f *model.Album) *subsonic.Artist {
return &subsonic.Artist{
ID: f.ID,
Name: f.RightPath,
}
}
func makeDirFromFolder(f *model.Album, children []*subsonic.Track) *subsonic.Directory {
func newDirectoryByFolder(f *model.Album, children []*subsonic.TrackChild) *subsonic.Directory {
return &subsonic.Directory{
ID: f.ID,
Parent: f.ParentID,

View File

@@ -7,12 +7,12 @@ import (
"github.com/sentriz/gonic/server/subsonic"
)
func makeAlbumFromAlbum(a *model.Album, artist *model.Artist) *subsonic.Album {
func newAlbumByTags(a *model.Album, artist *model.Artist) *subsonic.Album {
ret := &subsonic.Album{
CoverID: a.ID,
Created: a.CreatedAt,
ID: a.ID,
Name: a.TagTitle,
Created: a.CreatedAt,
CoverID: a.ID,
}
if artist != nil {
ret.Artist = artist.Name
@@ -21,8 +21,8 @@ func makeAlbumFromAlbum(a *model.Album, artist *model.Artist) *subsonic.Album {
return ret
}
func makeTrackFromTrack(t *model.Track, album *model.Album) *subsonic.Track {
return &subsonic.Track{
func newTrackByTags(t *model.Track, album *model.Album) *subsonic.TrackChild {
return &subsonic.TrackChild{
ID: t.ID,
ContentType: t.MIME(),
Suffix: t.Ext(),
@@ -45,7 +45,7 @@ func makeTrackFromTrack(t *model.Track, album *model.Album) *subsonic.Track {
}
}
func makeArtistFromArtist(a *model.Artist) *subsonic.Artist {
func newArtistByTags(a *model.Artist) *subsonic.Artist {
return &subsonic.Artist{
ID: a.ID,
Name: a.Name,

View File

@@ -37,7 +37,7 @@ func (c *Controller) GetIndexes(w http.ResponseWriter, r *http.Request) {
indexes = append(indexes, index)
}
index.Artists = append(index.Artists,
makeArtistFromFolder(folder))
newArtistByFolder(folder))
}
sort.Slice(indexes, func(i, j int) bool {
return indexes[i].Name < indexes[j].Name
@@ -56,7 +56,7 @@ func (c *Controller) GetMusicDirectory(w http.ResponseWriter, r *http.Request) {
respondError(w, r, 10, "please provide an `id` parameter")
return
}
childrenObj := []*subsonic.Track{}
childrenObj := []*subsonic.TrackChild{}
folder := &model.Album{}
c.DB.First(folder, id)
//
@@ -67,7 +67,7 @@ func (c *Controller) GetMusicDirectory(w http.ResponseWriter, r *http.Request) {
Find(&childFolders)
for _, c := range childFolders {
childrenObj = append(childrenObj,
makeChildFromFolder(c, folder))
newTCAlbumByFolder(c, folder))
}
//
// start looking for child childTracks in the current dir
@@ -78,7 +78,7 @@ func (c *Controller) GetMusicDirectory(w http.ResponseWriter, r *http.Request) {
Order("filename").
Find(&childTracks)
for _, c := range childTracks {
toAppend := makeChildFromTrack(c, folder)
toAppend := newTCTrackByFolder(c, folder)
if getStrParam(r, "c") == "Jamstash" {
// jamstash thinks it can't play flacs
toAppend.ContentType = "audio/mpeg"
@@ -89,7 +89,7 @@ func (c *Controller) GetMusicDirectory(w http.ResponseWriter, r *http.Request) {
//
// respond section
sub := subsonic.NewResponse()
sub.Directory = makeDirFromFolder(folder, childrenObj)
sub.Directory = newDirectoryByFolder(folder, childrenObj)
respond(w, r, sub)
}
@@ -144,7 +144,7 @@ func (c *Controller) GetAlbumList(w http.ResponseWriter, r *http.Request) {
sub.Albums = &subsonic.Albums{}
for _, folder := range folders {
sub.Albums.List = append(sub.Albums.List,
makeAlbumFromFolder(folder))
newAlbumByFolder(folder))
}
respond(w, r, sub)
}
@@ -168,7 +168,7 @@ func (c *Controller) SearchTwo(w http.ResponseWriter, r *http.Request) {
Find(&artists)
for _, a := range artists {
results.Artists = append(results.Artists,
makeDirFromFolder(a, nil))
newDirectoryByFolder(a, nil))
}
//
// search "albums"
@@ -181,7 +181,7 @@ func (c *Controller) SearchTwo(w http.ResponseWriter, r *http.Request) {
Find(&albums)
for _, a := range albums {
results.Albums = append(results.Albums,
makeChildFromFolder(a, a.Parent))
newTCAlbumByFolder(a, a.Parent))
}
//
// search tracks
@@ -194,7 +194,7 @@ func (c *Controller) SearchTwo(w http.ResponseWriter, r *http.Request) {
Find(&tracks)
for _, t := range tracks {
results.Tracks = append(results.Tracks,
makeChildFromTrack(t, t.Album))
newTCTrackByFolder(t, t.Album))
}
//
sub := subsonic.NewResponse()

View File

@@ -29,7 +29,7 @@ func (c *Controller) GetArtists(w http.ResponseWriter, r *http.Request) {
indexes.List = append(indexes.List, index)
}
index.Artists = append(index.Artists,
makeArtistFromArtist(artist))
newArtistByTags(artist))
}
sort.Slice(indexes.List, func(i, j int) bool {
return indexes.List[i].Name < indexes.List[j].Name
@@ -50,10 +50,10 @@ func (c *Controller) GetArtist(w http.ResponseWriter, r *http.Request) {
Preload("Albums").
First(artist, id)
sub := subsonic.NewResponse()
sub.Artist = makeArtistFromArtist(artist)
sub.Artist = newArtistByTags(artist)
for _, album := range artist.Albums {
sub.Artist.Albums = append(sub.Artist.Albums,
makeAlbumFromAlbum(album, artist))
newAlbumByTags(album, artist))
}
respond(w, r, sub)
}
@@ -77,10 +77,10 @@ func (c *Controller) GetAlbum(w http.ResponseWriter, r *http.Request) {
return
}
sub := subsonic.NewResponse()
sub.Album = makeAlbumFromAlbum(album, album.TagArtist)
sub.Album = newAlbumByTags(album, album.TagArtist)
for _, track := range album.Tracks {
sub.Album.Tracks = append(sub.Album.Tracks,
makeTrackFromTrack(track, album))
newTrackByTags(track, album))
}
respond(w, r, sub)
}
@@ -142,7 +142,7 @@ func (c *Controller) GetAlbumListTwo(w http.ResponseWriter, r *http.Request) {
sub.AlbumsTwo = &subsonic.Albums{}
for _, album := range albums {
sub.AlbumsTwo.List = append(sub.AlbumsTwo.List,
makeAlbumFromAlbum(album, album.TagArtist))
newAlbumByTags(album, album.TagArtist))
}
respond(w, r, sub)
}
@@ -166,7 +166,7 @@ func (c *Controller) SearchThree(w http.ResponseWriter, r *http.Request) {
Find(&artists)
for _, a := range artists {
results.Artists = append(results.Artists,
makeArtistFromArtist(a))
newArtistByTags(a))
}
//
// search "albums"
@@ -179,7 +179,7 @@ func (c *Controller) SearchThree(w http.ResponseWriter, r *http.Request) {
Find(&albums)
for _, a := range albums {
results.Albums = append(results.Albums,
makeAlbumFromAlbum(a, a.TagArtist))
newAlbumByTags(a, a.TagArtist))
}
//
// search tracks
@@ -192,7 +192,7 @@ func (c *Controller) SearchThree(w http.ResponseWriter, r *http.Request) {
Find(&tracks)
for _, t := range tracks {
results.Tracks = append(results.Tracks,
makeTrackFromTrack(t, t.Album))
newTrackByTags(t, t.Album))
}
sub := subsonic.NewResponse()
sub.SearchResultThree = results

View File

@@ -17,7 +17,7 @@ type Response struct {
Albums *Albums `xml:"albumList" json:"albumList,omitempty"`
AlbumsTwo *Albums `xml:"albumList2" json:"albumList2,omitempty"`
Album *Album `xml:"album" json:"album,omitempty"`
Track *Track `xml:"song" json:"song,omitempty"`
Track *TrackChild `xml:"song" json:"song,omitempty"`
Indexes *Indexes `xml:"indexes" json:"indexes,omitempty"`
Artists *Artists `xml:"artists" json:"artists,omitempty"`
Artist *Artist `xml:"artist" json:"artist,omitempty"`
@@ -71,18 +71,18 @@ type Album struct {
ParentID int `xml:"parent,attr,omitempty" json:"parent,omitempty"`
IsDir bool `xml:"isDir,attr,omitempty" json:"isDir,omitempty"`
// browsing by tags (getAlbumList2)
Name string `xml:"name,attr,omitempty" json:"name,omitempty"`
TrackCount int `xml:"songCount,attr,omitempty" json:"songCount,omitempty"`
Duration int `xml:"duration,attr,omitempty" json:"duration,omitempty"`
Created time.Time `xml:"created,attr,omitempty" json:"created,omitempty"`
Tracks []*Track `xml:"song,omitempty" json:"song,omitempty"`
Name string `xml:"name,attr,omitempty" json:"name,omitempty"`
TrackCount int `xml:"songCount,attr,omitempty" json:"songCount,omitempty"`
Duration int `xml:"duration,attr,omitempty" json:"duration,omitempty"`
Created time.Time `xml:"created,attr,omitempty" json:"created,omitempty"`
Tracks []*TrackChild `xml:"song,omitempty" json:"song,omitempty"`
}
type RandomTracks struct {
Tracks []*Track `xml:"song" json:"song"`
Tracks []*TrackChild `xml:"song" json:"song"`
}
type Track struct {
type TrackChild struct {
Album string `xml:"album,attr,omitempty" json:"album,omitempty"`
AlbumID int `xml:"albumId,attr,omitempty" json:"albumId,omitempty"`
Artist string `xml:"artist,attr,omitempty" json:"artist,omitempty"`
@@ -128,11 +128,11 @@ type Index struct {
}
type Directory struct {
ID int `xml:"id,attr,omitempty" json:"id"`
Parent int `xml:"parent,attr,omitempty" json:"parent"`
Name string `xml:"name,attr,omitempty" json:"name"`
Starred string `xml:"starred,attr,omitempty" json:"starred,omitempty"`
Children []*Track `xml:"child,omitempty" json:"child,omitempty"`
ID int `xml:"id,attr,omitempty" json:"id"`
Parent int `xml:"parent,attr,omitempty" json:"parent"`
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"`
}
type MusicFolders struct {
@@ -154,13 +154,13 @@ type ScanStatus struct {
}
type SearchResultTwo struct {
Artists []*Directory `xml:"artist,omitempty" json:"artist,omitempty"`
Albums []*Track `xml:"album,omitempty" json:"album,omitempty"`
Tracks []*Track `xml:"song,omitempty" json:"song,omitempty"`
Artists []*Directory `xml:"artist,omitempty" json:"artist,omitempty"`
Albums []*TrackChild `xml:"album,omitempty" json:"album,omitempty"`
Tracks []*TrackChild `xml:"song,omitempty" json:"song,omitempty"`
}
type SearchResultThree struct {
Artists []*Artist `xml:"artist,omitempty" json:"artist,omitempty"`
Albums []*Album `xml:"album,omitempty" json:"album,omitempty"`
Tracks []*Track `xml:"song,omitempty" json:"song,omitempty"`
Artists []*Artist `xml:"artist,omitempty" json:"artist,omitempty"`
Albums []*Album `xml:"album,omitempty" json:"album,omitempty"`
Tracks []*TrackChild `xml:"song,omitempty" json:"song,omitempty"`
}