fix(subsonic): correct album orderding in getAlbumList, add starred request type in getAlbumList
This commit is contained in:
@@ -129,14 +129,17 @@ func (c *Controller) ServeGetAlbumList(r *http.Request) *spec.Response {
|
|||||||
fromYear := params.GetOrInt("fromYear", 1800)
|
fromYear := params.GetOrInt("fromYear", 1800)
|
||||||
toYear := params.GetOrInt("toYear", 2200)
|
toYear := params.GetOrInt("toYear", 2200)
|
||||||
if fromYear > toYear {
|
if fromYear > toYear {
|
||||||
toYear, fromYear = fromYear, toYear
|
q = q.Where("tag_year BETWEEN ? AND ?", toYear, fromYear)
|
||||||
|
q = q.Order("tag_year DESC")
|
||||||
|
} else {
|
||||||
|
q = q.Where("tag_year BETWEEN ? AND ?", fromYear, toYear)
|
||||||
|
q = q.Order("tag_year")
|
||||||
}
|
}
|
||||||
q = q.Where("tag_year BETWEEN ? AND ?", fromYear, toYear)
|
|
||||||
q = q.Order("tag_year")
|
|
||||||
case "byGenre":
|
case "byGenre":
|
||||||
genre, _ := params.Get("genre")
|
genre, _ := params.Get("genre")
|
||||||
q = q.Joins("JOIN album_genres ON album_genres.album_id=albums.id")
|
q = q.Joins("JOIN album_genres ON album_genres.album_id=albums.id")
|
||||||
q = q.Joins("JOIN genres ON genres.id=album_genres.genre_id AND genres.name=?", genre)
|
q = q.Joins("JOIN genres ON genres.id=album_genres.genre_id AND genres.name=?", genre)
|
||||||
|
q = q.Order("right_path")
|
||||||
case "frequent":
|
case "frequent":
|
||||||
q = q.Joins(`
|
q = q.Joins(`
|
||||||
JOIN plays
|
JOIN plays
|
||||||
@@ -148,12 +151,14 @@ func (c *Controller) ServeGetAlbumList(r *http.Request) *spec.Response {
|
|||||||
case "random":
|
case "random":
|
||||||
q = q.Order(gorm.Expr("random()"))
|
q = q.Order(gorm.Expr("random()"))
|
||||||
case "recent":
|
case "recent":
|
||||||
user := r.Context().Value(CtxUser).(*db.User)
|
|
||||||
q = q.Joins(`
|
q = q.Joins(`
|
||||||
JOIN plays
|
JOIN plays
|
||||||
ON albums.id=plays.album_id AND plays.user_id=?`,
|
ON albums.id=plays.album_id AND plays.user_id=?`,
|
||||||
user.ID)
|
user.ID)
|
||||||
q = q.Order("plays.time DESC")
|
q = q.Order("plays.time DESC")
|
||||||
|
case "starred":
|
||||||
|
q = q.Joins("JOIN album_stars ON albums.id=album_stars.album_id AND album_stars.user_id=?", user.ID)
|
||||||
|
q = q.Order("right_path")
|
||||||
default:
|
default:
|
||||||
return spec.NewError(10, "unknown value `%s` for parameter 'type'", v)
|
return spec.NewError(10, "unknown value `%s` for parameter 'type'", v)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -144,14 +144,17 @@ func (c *Controller) ServeGetAlbumListTwo(r *http.Request) *spec.Response {
|
|||||||
fromYear := params.GetOrInt("fromYear", 1800)
|
fromYear := params.GetOrInt("fromYear", 1800)
|
||||||
toYear := params.GetOrInt("toYear", 2200)
|
toYear := params.GetOrInt("toYear", 2200)
|
||||||
if fromYear > toYear {
|
if fromYear > toYear {
|
||||||
toYear, fromYear = fromYear, toYear
|
q = q.Where("tag_year BETWEEN ? AND ?", toYear, fromYear)
|
||||||
|
q = q.Order("tag_year DESC")
|
||||||
|
} else {
|
||||||
|
q = q.Where("tag_year BETWEEN ? AND ?", fromYear, toYear)
|
||||||
|
q = q.Order("tag_year")
|
||||||
}
|
}
|
||||||
q = q.Where("tag_year BETWEEN ? AND ?", fromYear, toYear)
|
|
||||||
q = q.Order("tag_year")
|
|
||||||
case "byGenre":
|
case "byGenre":
|
||||||
genre, _ := params.Get("genre")
|
genre, _ := params.Get("genre")
|
||||||
q = q.Joins("JOIN album_genres ON album_genres.album_id=albums.id")
|
q = q.Joins("JOIN album_genres ON album_genres.album_id=albums.id")
|
||||||
q = q.Joins("JOIN genres ON genres.id=album_genres.genre_id AND genres.name=?", genre)
|
q = q.Joins("JOIN genres ON genres.id=album_genres.genre_id AND genres.name=?", genre)
|
||||||
|
q = q.Order("tag_title")
|
||||||
case "frequent":
|
case "frequent":
|
||||||
user := r.Context().Value(CtxUser).(*db.User)
|
user := r.Context().Value(CtxUser).(*db.User)
|
||||||
q = q.Joins("JOIN plays ON albums.id=plays.album_id AND plays.user_id=?", user.ID)
|
q = q.Joins("JOIN plays ON albums.id=plays.album_id AND plays.user_id=?", user.ID)
|
||||||
@@ -161,9 +164,11 @@ func (c *Controller) ServeGetAlbumListTwo(r *http.Request) *spec.Response {
|
|||||||
case "random":
|
case "random":
|
||||||
q = q.Order(gorm.Expr("random()"))
|
q = q.Order(gorm.Expr("random()"))
|
||||||
case "recent":
|
case "recent":
|
||||||
user := r.Context().Value(CtxUser).(*db.User)
|
|
||||||
q = q.Joins("JOIN plays ON albums.id=plays.album_id AND plays.user_id=?", user.ID)
|
q = q.Joins("JOIN plays ON albums.id=plays.album_id AND plays.user_id=?", user.ID)
|
||||||
q = q.Order("plays.time DESC")
|
q = q.Order("plays.time DESC")
|
||||||
|
case "starred":
|
||||||
|
q = q.Joins("JOIN album_stars ON albums.id=album_stars.album_id AND album_stars.user_id=?", user.ID)
|
||||||
|
q = q.Order("tag_title")
|
||||||
default:
|
default:
|
||||||
return spec.NewError(10, "unknown value `%s` for parameter 'type'", listType)
|
return spec.NewError(10, "unknown value `%s` for parameter 'type'", listType)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user