Add duration and track_count to getArtist, getAlbum and getAlbumList2
This commit is contained in:
committed by
Senan Kelly
parent
606d761039
commit
df679a6ae3
@@ -54,7 +54,12 @@ func (c *Controller) ServeGetArtist(r *http.Request) *spec.Response {
|
|||||||
}
|
}
|
||||||
artist := &db.Artist{}
|
artist := &db.Artist{}
|
||||||
c.DB.
|
c.DB.
|
||||||
Preload("Albums").
|
Preload("Albums", func(db *gorm.DB) *gorm.DB {
|
||||||
|
return db.
|
||||||
|
Select("*, count(sub.id) child_count, sum(sub.length) duration").
|
||||||
|
Joins("LEFT JOIN tracks sub ON albums.id=sub.album_id").
|
||||||
|
Group("albums.id")
|
||||||
|
}).
|
||||||
First(artist, id.Value)
|
First(artist, id.Value)
|
||||||
sub := spec.NewResponse()
|
sub := spec.NewResponse()
|
||||||
sub.Artist = spec.NewArtistByTags(artist)
|
sub.Artist = spec.NewArtistByTags(artist)
|
||||||
@@ -74,6 +79,8 @@ func (c *Controller) ServeGetAlbum(r *http.Request) *spec.Response {
|
|||||||
}
|
}
|
||||||
album := &db.Album{}
|
album := &db.Album{}
|
||||||
err = c.DB.
|
err = c.DB.
|
||||||
|
Select("albums.*, count(tracks.id) child_count, sum(tracks.length) duration").
|
||||||
|
Joins("LEFT JOIN tracks ON tracks.album_id=albums.id").
|
||||||
Preload("TagArtist").
|
Preload("TagArtist").
|
||||||
Preload("TagGenre").
|
Preload("TagGenre").
|
||||||
Preload("Tracks", func(db *gorm.DB) *gorm.DB {
|
Preload("Tracks", func(db *gorm.DB) *gorm.DB {
|
||||||
@@ -139,7 +146,7 @@ func (c *Controller) ServeGetAlbumListTwo(r *http.Request) *spec.Response {
|
|||||||
// TODO: think about removing this extra join to count number
|
// TODO: think about removing this extra join to count number
|
||||||
// of children. it might make sense to store that in the db
|
// of children. it might make sense to store that in the db
|
||||||
q.
|
q.
|
||||||
Select("albums.*, count(tracks.id) child_count").
|
Select("albums.*, count(tracks.id) child_count, sum(tracks.length) duration").
|
||||||
Joins("LEFT JOIN tracks ON tracks.album_id=albums.id").
|
Joins("LEFT JOIN tracks ON tracks.album_id=albums.id").
|
||||||
Group("albums.id").
|
Group("albums.id").
|
||||||
Where("albums.tag_artist_id IS NOT NULL").
|
Where("albums.tag_artist_id IS NOT NULL").
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ func NewAlbumByTags(a *db.Album, artist *db.Artist) *Album {
|
|||||||
Name: a.TagTitle,
|
Name: a.TagTitle,
|
||||||
Year: a.TagYear,
|
Year: a.TagYear,
|
||||||
TrackCount: a.ChildCount,
|
TrackCount: a.ChildCount,
|
||||||
|
Duration: a.Duration,
|
||||||
}
|
}
|
||||||
if a.TagGenre != nil {
|
if a.TagGenre != nil {
|
||||||
ret.Genre = a.TagGenre.Name
|
ret.Genre = a.TagGenre.Name
|
||||||
|
|||||||
@@ -172,6 +172,7 @@ type Album struct {
|
|||||||
TagYear int `sql:"default: null"`
|
TagYear int `sql:"default: null"`
|
||||||
Tracks []*Track
|
Tracks []*Track
|
||||||
ChildCount int `sql:"-"`
|
ChildCount int `sql:"-"`
|
||||||
|
Duration int `sql:"-"`
|
||||||
ReceivedPaths bool `gorm:"-"`
|
ReceivedPaths bool `gorm:"-"`
|
||||||
ReceivedTags bool `gorm:"-"`
|
ReceivedTags bool `gorm:"-"`
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user