feat: add more and unify stats
Release-As: 0.16.1
This commit is contained in:
@@ -268,13 +268,7 @@ func main() {
|
|||||||
if *confExpvar {
|
if *confExpvar {
|
||||||
mux.Handle("/debug/vars", expvar.Handler())
|
mux.Handle("/debug/vars", expvar.Handler())
|
||||||
expvar.Publish("stats", expvar.Func(func() any {
|
expvar.Publish("stats", expvar.Func(func() any {
|
||||||
var stats struct{ Folders, Albums, Tracks, Artists, InternetRadioStations, Podcasts uint }
|
stats, _ := dbc.Stats()
|
||||||
dbc.Model(db.Track{}).Count(&stats.Tracks)
|
|
||||||
dbc.Model(db.Album{}).Count(&stats.Folders)
|
|
||||||
dbc.Model(db.Album{}).Joins("JOIN album_artists ON album_artists.album_id=albums.id").Group("albums.id").Count(&stats.Albums)
|
|
||||||
dbc.Model(db.Artist{}).Count(&stats.Artists)
|
|
||||||
dbc.Model(db.InternetRadioStation{}).Count(&stats.InternetRadioStations)
|
|
||||||
dbc.Model(db.Podcast{}).Count(&stats.Podcasts)
|
|
||||||
return stats
|
return stats
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|||||||
16
db/db.go
16
db/db.go
@@ -80,6 +80,22 @@ func (db *DB) InsertBulkLeftMany(table string, head []string, left int, col []in
|
|||||||
return db.Exec(q, values...).Error
|
return db.Exec(q, values...).Error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Stats struct {
|
||||||
|
Folders, Albums, Artists, AlbumArtists, Tracks, InternetRadioStations, Podcasts uint
|
||||||
|
}
|
||||||
|
|
||||||
|
func (db *DB) Stats() (Stats, error) {
|
||||||
|
var stats Stats
|
||||||
|
db.Model(Album{}).Count(&stats.Folders)
|
||||||
|
db.Model(AlbumArtist{}).Group("album_id").Count(&stats.Albums)
|
||||||
|
db.Model(TrackArtist{}).Group("artist_id").Count(&stats.Artists)
|
||||||
|
db.Model(AlbumArtist{}).Group("artist_id").Count(&stats.AlbumArtists)
|
||||||
|
db.Model(Track{}).Count(&stats.Tracks)
|
||||||
|
db.Model(InternetRadioStation{}).Count(&stats.InternetRadioStations)
|
||||||
|
db.Model(Podcast{}).Count(&stats.Podcasts)
|
||||||
|
return stats, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (db *DB) GetUserByID(id int) *User {
|
func (db *DB) GetUserByID(id int) *User {
|
||||||
var user User
|
var user User
|
||||||
err := db.
|
err := db.
|
||||||
|
|||||||
@@ -7,12 +7,20 @@
|
|||||||
"Desc" "total items found in all watched folders"
|
"Desc" "total items found in all watched folders"
|
||||||
) }}
|
) }}
|
||||||
<div class="grid grid-cols-[auto_min-content] gap-2 gap-x-5 text-right">
|
<div class="grid grid-cols-[auto_min-content] gap-2 gap-x-5 text-right">
|
||||||
<div class="text-gray-500">artists</div>
|
<div class="text-gray-500">folders</div>
|
||||||
<div class="font-bold">{{ .ArtistCount }}</div>
|
<div class="font-bold">{{ .Stats.Folders }}</div>
|
||||||
<div class="text-gray-500">albums</div>
|
<div class="text-gray-500">albums</div>
|
||||||
<div class="font-bold">{{ .AlbumCount }}</div>
|
<div class="font-bold">{{ .Stats.Albums }}</div>
|
||||||
|
<div class="text-gray-500">artists</div>
|
||||||
|
<div class="font-bold">{{ .Stats.Artists }}</div>
|
||||||
|
<div class="text-gray-500">album artists</div>
|
||||||
|
<div class="font-bold">{{ .Stats.AlbumArtists }}</div>
|
||||||
<div class="text-gray-500">tracks</div>
|
<div class="text-gray-500">tracks</div>
|
||||||
<div class="font-bold">{{ .TrackCount }}</div>
|
<div class="font-bold">{{ .Stats.Tracks }}</div>
|
||||||
|
<div class="text-gray-500">internet radio stations</div>
|
||||||
|
<div class="font-bold">{{ .Stats.InternetRadioStations }}</div>
|
||||||
|
<div class="text-gray-500">podcasts</div>
|
||||||
|
<div class="font-bold">{{ .Stats.Podcasts }}</div>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
|||||||
@@ -274,10 +274,9 @@ type templateData struct {
|
|||||||
Flashes []interface{}
|
Flashes []interface{}
|
||||||
User *db.User
|
User *db.User
|
||||||
Version string
|
Version string
|
||||||
|
|
||||||
// home
|
// home
|
||||||
AlbumCount int
|
Stats db.Stats
|
||||||
ArtistCount int
|
|
||||||
TrackCount int
|
|
||||||
RequestRoot string
|
RequestRoot string
|
||||||
RecentFolders []*db.Album
|
RecentFolders []*db.Album
|
||||||
AllUsers []*db.User
|
AllUsers []*db.User
|
||||||
|
|||||||
@@ -36,9 +36,7 @@ func (c *Controller) ServeHome(r *http.Request) *Response {
|
|||||||
|
|
||||||
data := &templateData{}
|
data := &templateData{}
|
||||||
// stats box
|
// stats box
|
||||||
c.dbc.Model(&db.Artist{}).Count(&data.ArtistCount)
|
data.Stats, _ = c.dbc.Stats()
|
||||||
c.dbc.Model(&db.Album{}).Count(&data.AlbumCount)
|
|
||||||
c.dbc.Table("tracks").Count(&data.TrackCount)
|
|
||||||
// lastfm box
|
// lastfm box
|
||||||
data.RequestRoot = handlerutil.BaseURL(r)
|
data.RequestRoot = handlerutil.BaseURL(r)
|
||||||
data.CurrentLastFMAPIKey, _ = c.dbc.GetSetting(db.LastFMAPIKey)
|
data.CurrentLastFMAPIKey, _ = c.dbc.GetSetting(db.LastFMAPIKey)
|
||||||
|
|||||||
Reference in New Issue
Block a user