mirror of
https://github.com/owntone/owntone-server.git
synced 2025-02-25 04:19:15 -05:00
Fix bug where sort fields were not implemented in group replies
This commit is contained in:
parent
392f34bf85
commit
ab86e30be4
17
src/db.c
17
src/db.c
@ -245,6 +245,7 @@ static const ssize_t dbgri_cols_map[] =
|
|||||||
dbgri_offsetof(id),
|
dbgri_offsetof(id),
|
||||||
dbgri_offsetof(persistentid),
|
dbgri_offsetof(persistentid),
|
||||||
dbgri_offsetof(itemname),
|
dbgri_offsetof(itemname),
|
||||||
|
dbgri_offsetof(itemname_sort),
|
||||||
dbgri_offsetof(itemcount),
|
dbgri_offsetof(itemcount),
|
||||||
dbgri_offsetof(groupalbumcount),
|
dbgri_offsetof(groupalbumcount),
|
||||||
dbgri_offsetof(songalbumartist),
|
dbgri_offsetof(songalbumartist),
|
||||||
@ -1072,13 +1073,13 @@ db_build_query_group_albums(struct query_params *qp, char **q)
|
|||||||
sort = sort_clause[qp->sort];
|
sort = sort_clause[qp->sort];
|
||||||
|
|
||||||
if (idx && qp->filter)
|
if (idx && qp->filter)
|
||||||
query = sqlite3_mprintf("SELECT g.id, g.persistentid, g.name, COUNT(f.id), 1, f.album_artist FROM files f, groups g WHERE f.songalbumid = g.persistentid AND g.type = %d AND f.disabled = 0 AND %s GROUP BY f.album, g.name %s %s;", G_ALBUMS, qp->filter, sort, idx);
|
query = sqlite3_mprintf("SELECT g.id, g.persistentid, f.album, f.album_sort, COUNT(f.id), 1, f.album_artist FROM files f, groups g WHERE f.songalbumid = g.persistentid AND g.type = %d AND f.disabled = 0 AND %s GROUP BY f.album, g.name %s %s;", G_ALBUMS, qp->filter, sort, idx);
|
||||||
else if (idx)
|
else if (idx)
|
||||||
query = sqlite3_mprintf("SELECT g.id, g.persistentid, g.name, COUNT(f.id), 1, f.album_artist FROM files f, groups g WHERE f.songalbumid = g.persistentid AND g.type = %d AND f.disabled = 0 GROUP BY f.album, g.name %s %s;", G_ALBUMS, sort, idx);
|
query = sqlite3_mprintf("SELECT g.id, g.persistentid, f.album, f.album_sort, COUNT(f.id), 1, f.album_artist FROM files f, groups g WHERE f.songalbumid = g.persistentid AND g.type = %d AND f.disabled = 0 GROUP BY f.album, g.name %s %s;", G_ALBUMS, sort, idx);
|
||||||
else if (qp->filter)
|
else if (qp->filter)
|
||||||
query = sqlite3_mprintf("SELECT g.id, g.persistentid, g.name, COUNT(f.id), 1, f.album_artist FROM files f, groups g WHERE f.songalbumid = g.persistentid AND g.type = %d AND f.disabled = 0 AND %s GROUP BY f.album, g.name %s;", G_ALBUMS, qp->filter, sort);
|
query = sqlite3_mprintf("SELECT g.id, g.persistentid, f.album, f.album_sort, COUNT(f.id), 1, f.album_artist FROM files f, groups g WHERE f.songalbumid = g.persistentid AND g.type = %d AND f.disabled = 0 AND %s GROUP BY f.album, g.name %s;", G_ALBUMS, qp->filter, sort);
|
||||||
else
|
else
|
||||||
query = sqlite3_mprintf("SELECT g.id, g.persistentid, g.name, COUNT(f.id), 1, f.album_artist FROM files f, groups g WHERE f.songalbumid = g.persistentid AND g.type = %d AND f.disabled = 0 GROUP BY f.album, g.name %s;", G_ALBUMS, sort);
|
query = sqlite3_mprintf("SELECT g.id, g.persistentid, f.album, f.album_sort, COUNT(f.id), 1, f.album_artist FROM files f, groups g WHERE f.songalbumid = g.persistentid AND g.type = %d AND f.disabled = 0 GROUP BY f.album, g.name %s;", G_ALBUMS, sort);
|
||||||
|
|
||||||
if (!query)
|
if (!query)
|
||||||
{
|
{
|
||||||
@ -1111,13 +1112,13 @@ db_build_query_group_artists(struct query_params *qp, char **q)
|
|||||||
sort = sort_clause[qp->sort];
|
sort = sort_clause[qp->sort];
|
||||||
|
|
||||||
if (idx && qp->filter)
|
if (idx && qp->filter)
|
||||||
query = sqlite3_mprintf("SELECT g.id, g.persistentid, g.name, COUNT(f.id), COUNT(DISTINCT f.songalbumid), f.album_artist FROM files f, groups g WHERE f.songartistid = g.persistentid AND g.type = %d AND f.disabled = 0 AND %s GROUP BY f.album_artist, g.name %s %s;", G_ARTISTS, qp->filter, sort, idx);
|
query = sqlite3_mprintf("SELECT g.id, g.persistentid, f.album_artist, f.album_artist_sort, COUNT(f.id), COUNT(DISTINCT f.songalbumid), f.album_artist FROM files f, groups g WHERE f.songartistid = g.persistentid AND g.type = %d AND f.disabled = 0 AND %s GROUP BY f.album_artist, g.name %s %s;", G_ARTISTS, qp->filter, sort, idx);
|
||||||
else if (idx)
|
else if (idx)
|
||||||
query = sqlite3_mprintf("SELECT g.id, g.persistentid, g.name, COUNT(f.id), COUNT(DISTINCT f.songalbumid), f.album_artist FROM files f, groups g WHERE f.songartistid = g.persistentid AND g.type = %d AND f.disabled = 0 GROUP BY f.album_artist, g.name %s %s;", G_ARTISTS, sort, idx);
|
query = sqlite3_mprintf("SELECT g.id, g.persistentid, f.album_artist, f.album_artist_sort, COUNT(f.id), COUNT(DISTINCT f.songalbumid), f.album_artist FROM files f, groups g WHERE f.songartistid = g.persistentid AND g.type = %d AND f.disabled = 0 GROUP BY f.album_artist, g.name %s %s;", G_ARTISTS, sort, idx);
|
||||||
else if (qp->filter)
|
else if (qp->filter)
|
||||||
query = sqlite3_mprintf("SELECT g.id, g.persistentid, g.name, COUNT(f.id), COUNT(DISTINCT f.songalbumid), f.album_artist FROM files f, groups g WHERE f.songartistid = g.persistentid AND g.type = %d AND f.disabled = 0 AND %s GROUP BY f.album_artist, g.name %s;", G_ARTISTS, qp->filter, sort);
|
query = sqlite3_mprintf("SELECT g.id, g.persistentid, f.album_artist, f.album_artist_sort, COUNT(f.id), COUNT(DISTINCT f.songalbumid), f.album_artist FROM files f, groups g WHERE f.songartistid = g.persistentid AND g.type = %d AND f.disabled = 0 AND %s GROUP BY f.album_artist, g.name %s;", G_ARTISTS, qp->filter, sort);
|
||||||
else
|
else
|
||||||
query = sqlite3_mprintf("SELECT g.id, g.persistentid, g.name, COUNT(f.id), COUNT(DISTINCT f.songalbumid), f.album_artist FROM files f, groups g WHERE f.songartistid = g.persistentid AND g.type = %d AND f.disabled = 0 GROUP BY f.album_artist, g.name %s;", G_ARTISTS, sort);
|
query = sqlite3_mprintf("SELECT g.id, g.persistentid, f.album_artist, f.album_artist_sort, COUNT(f.id), COUNT(DISTINCT f.songalbumid), f.album_artist FROM files f, groups g WHERE f.songartistid = g.persistentid AND g.type = %d AND f.disabled = 0 GROUP BY f.album_artist, g.name %s;", G_ARTISTS, sort);
|
||||||
|
|
||||||
if (!query)
|
if (!query)
|
||||||
{
|
{
|
||||||
|
4
src/db.h
4
src/db.h
@ -181,7 +181,8 @@ struct db_playlist_info {
|
|||||||
struct group_info {
|
struct group_info {
|
||||||
uint32_t id; /* integer id (miid) */
|
uint32_t id; /* integer id (miid) */
|
||||||
uint64_t persistentid; /* ulonglong id (mper) */
|
uint64_t persistentid; /* ulonglong id (mper) */
|
||||||
char *itemname; /* playlist name as displayed in iTunes (minm) */
|
char *itemname; /* album or album_artist (minm) */
|
||||||
|
char *itemname_sort; /* album_sort or album_artist_sort (~mshc) */
|
||||||
uint32_t itemcount; /* number of items (mimc) */
|
uint32_t itemcount; /* number of items (mimc) */
|
||||||
uint32_t groupalbumcount; /* number of albums (agac) */
|
uint32_t groupalbumcount; /* number of albums (agac) */
|
||||||
char *songalbumartist; /* song album artist (asaa) */
|
char *songalbumartist; /* song album artist (asaa) */
|
||||||
@ -193,6 +194,7 @@ struct db_group_info {
|
|||||||
char *id;
|
char *id;
|
||||||
char *persistentid;
|
char *persistentid;
|
||||||
char *itemname;
|
char *itemname;
|
||||||
|
char *itemname_sort;
|
||||||
char *itemcount;
|
char *itemcount;
|
||||||
char *groupalbumcount;
|
char *groupalbumcount;
|
||||||
char *songalbumartist;
|
char *songalbumartist;
|
||||||
|
@ -1690,7 +1690,7 @@ daap_reply_groups(struct evhttp_request *req, struct evbuffer *evbuf, char **uri
|
|||||||
|
|
||||||
if (sort_headers)
|
if (sort_headers)
|
||||||
{
|
{
|
||||||
ret = daap_sort_build(sctx, dbgri.itemname);
|
ret = daap_sort_build(sctx, dbgri.itemname_sort);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
DPRINTF(E_LOG, L_DAAP, "Could not add sort header to DAAP groups reply\n");
|
DPRINTF(E_LOG, L_DAAP, "Could not add sort header to DAAP groups reply\n");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user