From 131e56b3e6e38f11238f79bfe13ee35c331c171f Mon Sep 17 00:00:00 2001 From: sentriz Date: Wed, 2 Nov 2022 22:21:19 +0000 Subject: [PATCH] refactor(subsonic): don't make getMusicFolder a method of ctrl --- server/ctrlsubsonic/ctrl.go | 11 ----------- server/ctrlsubsonic/handlers_by_folder.go | 16 ++++++++-------- server/ctrlsubsonic/handlers_by_tags.go | 18 +++++++++--------- server/ctrlsubsonic/handlers_common.go | 13 ++++++++++++- 4 files changed, 29 insertions(+), 29 deletions(-) diff --git a/server/ctrlsubsonic/ctrl.go b/server/ctrlsubsonic/ctrl.go index 5159fda..6049735 100644 --- a/server/ctrlsubsonic/ctrl.go +++ b/server/ctrlsubsonic/ctrl.go @@ -117,14 +117,3 @@ func (c *Controller) HR(h handlerSubsonicRaw) http.Handler { } }) } - -func (c *Controller) getMusicFolder(p params.Params) string { - idx, err := p.GetInt("musicFolderId") - if err != nil { - return "" - } - if idx < 0 || idx > len(c.MusicPaths) { - return "" - } - return c.MusicPaths[idx] -} diff --git a/server/ctrlsubsonic/handlers_by_folder.go b/server/ctrlsubsonic/handlers_by_folder.go index 72836ab..b23cfb2 100644 --- a/server/ctrlsubsonic/handlers_by_folder.go +++ b/server/ctrlsubsonic/handlers_by_folder.go @@ -25,7 +25,7 @@ func (c *Controller) ServeGetIndexes(r *http.Request) *spec.Response { Select("id"). Model(&db.Album{}). Where("parent_id IS NULL") - if m := c.getMusicFolder(params); m != "" { + if m := getMusicFolder(c.MusicPaths, params); m != "" { rootQ = rootQ. Where("root_dir=?", m) } @@ -168,7 +168,7 @@ func (c *Controller) ServeGetAlbumList(r *http.Request) *spec.Response { return spec.NewError(10, "unknown value `%s` for parameter 'type'", v) } - if m := c.getMusicFolder(params); m != "" { + if m := getMusicFolder(c.MusicPaths, params); m != "" { q = q.Where("root_dir=?", m) } var folders []*db.Album @@ -211,7 +211,7 @@ func (c *Controller) ServeSearchTwo(r *http.Request) *spec.Response { Select("id"). Model(&db.Album{}). Where("parent_id IS NULL") - if m := c.getMusicFolder(params); m != "" { + if m := getMusicFolder(c.MusicPaths, params); m != "" { rootQ = rootQ.Where("root_dir=?", m) } @@ -237,7 +237,7 @@ func (c *Controller) ServeSearchTwo(r *http.Request) *spec.Response { Preload("AlbumRating", "user_id=?", user.ID). Offset(params.GetOrInt("albumOffset", 0)). Limit(params.GetOrInt("albumCount", 20)) - if m := c.getMusicFolder(params); m != "" { + if m := getMusicFolder(c.MusicPaths, params); m != "" { q = q.Where("root_dir=?", m) } if err := q.Find(&albums).Error; err != nil { @@ -256,7 +256,7 @@ func (c *Controller) ServeSearchTwo(r *http.Request) *spec.Response { Preload("TrackRating", "user_id=?", user.ID). Offset(params.GetOrInt("songOffset", 0)). Limit(params.GetOrInt("songCount", 20)) - if m := c.getMusicFolder(params); m != "" { + if m := getMusicFolder(c.MusicPaths, params); m != "" { q = q. Joins("JOIN albums ON albums.id=tracks.album_id"). Where("albums.root_dir=?", m) @@ -294,7 +294,7 @@ func (c *Controller) ServeGetStarred(r *http.Request) *spec.Response { Select("id"). Model(&db.Album{}). Where("parent_id IS NULL") - if m := c.getMusicFolder(params); m != "" { + if m := getMusicFolder(c.MusicPaths, params); m != "" { rootQ = rootQ.Where("root_dir=?", m) } @@ -320,7 +320,7 @@ func (c *Controller) ServeGetStarred(r *http.Request) *spec.Response { Where("album_stars.user_id=?", user.ID). Preload("AlbumStar", "user_id=?", user.ID). Preload("AlbumRating", "user_id=?", user.ID) - if m := c.getMusicFolder(params); m != "" { + if m := getMusicFolder(c.MusicPaths, params); m != "" { q = q.Where("root_dir=?", m) } if err := q.Find(&albums).Error; err != nil { @@ -338,7 +338,7 @@ func (c *Controller) ServeGetStarred(r *http.Request) *spec.Response { Where("track_stars.user_id=?", user.ID). Preload("TrackStar", "user_id=?", user.ID). Preload("TrackRating", "user_id=?", user.ID) - if m := c.getMusicFolder(params); m != "" { + if m := getMusicFolder(c.MusicPaths, params); m != "" { q = q. Joins("JOIN albums ON albums.id=tracks.album_id"). Where("albums.root_dir=?", m) diff --git a/server/ctrlsubsonic/handlers_by_tags.go b/server/ctrlsubsonic/handlers_by_tags.go index 4422b6b..c0ffcfb 100644 --- a/server/ctrlsubsonic/handlers_by_tags.go +++ b/server/ctrlsubsonic/handlers_by_tags.go @@ -30,7 +30,7 @@ func (c *Controller) ServeGetArtists(r *http.Request) *spec.Response { Preload("ArtistRating", "user_id=?", user.ID). Group("artists.id"). Order("artists.name COLLATE NOCASE") - if m := c.getMusicFolder(params); m != "" { + if m := getMusicFolder(c.MusicPaths, params); m != "" { q = q.Where("sub.root_dir=?", m) } if err := q.Find(&artists).Error; err != nil { @@ -177,7 +177,7 @@ func (c *Controller) ServeGetAlbumListTwo(r *http.Request) *spec.Response { default: return spec.NewError(10, "unknown value `%s` for parameter 'type'", listType) } - if m := c.getMusicFolder(params); m != "" { + if m := getMusicFolder(c.MusicPaths, params); m != "" { q = q.Where("root_dir=?", m) } var albums []*db.Album @@ -226,7 +226,7 @@ func (c *Controller) ServeSearchThree(r *http.Request) *spec.Response { Preload("ArtistRating", "user_id=?", user.ID). Offset(params.GetOrInt("artistOffset", 0)). Limit(params.GetOrInt("artistCount", 20)) - if m := c.getMusicFolder(params); m != "" { + if m := getMusicFolder(c.MusicPaths, params); m != "" { q = q.Where("albums.root_dir=?", m) } if err := q.Find(&artists).Error; err != nil { @@ -246,7 +246,7 @@ func (c *Controller) ServeSearchThree(r *http.Request) *spec.Response { Where("tag_title LIKE ? OR tag_title_u_dec LIKE ?", query, query). Offset(params.GetOrInt("albumOffset", 0)). Limit(params.GetOrInt("albumCount", 20)) - if m := c.getMusicFolder(params); m != "" { + if m := getMusicFolder(c.MusicPaths, params); m != "" { q = q.Where("root_dir=?", m) } if err := q.Find(&albums).Error; err != nil { @@ -267,7 +267,7 @@ func (c *Controller) ServeSearchThree(r *http.Request) *spec.Response { Where("tag_title LIKE ? OR tag_title_u_dec LIKE ?", query, query). Offset(params.GetOrInt("songOffset", 0)). Limit(params.GetOrInt("songCount", 20)) - if m := c.getMusicFolder(params); m != "" { + if m := getMusicFolder(c.MusicPaths, params); m != "" { q = q. Joins("JOIN albums ON albums.id=tracks.album_id"). Where("albums.root_dir=?", m) @@ -412,7 +412,7 @@ func (c *Controller) ServeGetSongsByGenre(r *http.Request) *spec.Response { Preload("TrackRating", "user_id=?", user.ID). Offset(params.GetOrInt("offset", 0)). Limit(params.GetOrInt("count", 10)) - if m := c.getMusicFolder(params); m != "" { + if m := getMusicFolder(c.MusicPaths, params); m != "" { q = q.Where("albums.root_dir=?", m) } if err := q.Find(&tracks).Error; err != nil { @@ -448,7 +448,7 @@ func (c *Controller) ServeGetStarredTwo(r *http.Request) *spec.Response { Where("artist_stars.user_id=?", user.ID). Preload("ArtistStar", "user_id=?", user.ID). Preload("ArtistRating", "user_id=?", user.ID) - if m := c.getMusicFolder(params); m != "" { + if m := getMusicFolder(c.MusicPaths, params); m != "" { q = q.Where("albums.root_dir=?", m) } if err := q.Find(&artists).Error; err != nil { @@ -466,7 +466,7 @@ func (c *Controller) ServeGetStarredTwo(r *http.Request) *spec.Response { Preload("TagArtist"). Preload("AlbumStar", "user_id=?", user.ID). Preload("AlbumRating", "user_id=?", user.ID) - if m := c.getMusicFolder(params); m != "" { + if m := getMusicFolder(c.MusicPaths, params); m != "" { q = q.Where("albums.root_dir=?", m) } if err := q.Find(&albums).Error; err != nil { @@ -484,7 +484,7 @@ func (c *Controller) ServeGetStarredTwo(r *http.Request) *spec.Response { Preload("Album"). Preload("TrackStar", "user_id=?", user.ID). Preload("TrackRating", "user_id=?", user.ID) - if m := c.getMusicFolder(params); m != "" { + if m := getMusicFolder(c.MusicPaths, params); m != "" { q = q. Joins("JOIN albums ON albums.id=tracks.album_id"). Where("albums.root_dir=?", m) diff --git a/server/ctrlsubsonic/handlers_common.go b/server/ctrlsubsonic/handlers_common.go index 281c969..ed62135 100644 --- a/server/ctrlsubsonic/handlers_common.go +++ b/server/ctrlsubsonic/handlers_common.go @@ -26,6 +26,17 @@ func lowerUDecOrHash(in string) string { return string(lower) } +func getMusicFolder(musicPaths []string, p params.Params) string { + idx, err := p.GetInt("musicFolderId") + if err != nil { + return "" + } + if idx < 0 || idx > len(musicPaths) { + return "" + } + return musicPaths[idx] +} + func (c *Controller) ServeGetLicence(r *http.Request) *spec.Response { sub := spec.NewResponse() sub.Licence = &spec.Licence{ @@ -239,7 +250,7 @@ func (c *Controller) ServeGetRandomSongs(r *http.Request) *spec.Response { q = q.Joins("JOIN track_genres ON track_genres.track_id=tracks.id") q = q.Joins("JOIN genres ON genres.id=track_genres.genre_id AND genres.name=?", genre) } - if m := c.getMusicFolder(params); m != "" { + if m := getMusicFolder(c.MusicPaths, params); m != "" { q = q.Where("albums.root_dir=?", m) } if err := q.Find(&tracks).Error; err != nil {