diff --git a/src/database/queue.c b/src/database/queue.c index cfb55e007b66132320e051d74dbfbb11a0367359..b12f602edb3610c8328c941f81d913924bb16a9c 100644 --- a/src/database/queue.c +++ b/src/database/queue.c @@ -280,15 +280,15 @@ database_queue_next(sqlite3 *db, char filepath[PATH_MAX]) { static const char *SQL_STMT = "SELECT file_path, position, RANDOM()" - " FROM kara" - " JOIN queue_ ON kara.id = queue_.kara_id" - " JOIN queue_state" - " ON current IS NULL" - " OR (CASE WHEN (SELECT single FROM queue_state LIMIT 1) = 1 THEN position = current" - " WHEN (SELECT random FROM queue_state LIMIT 1) = 1 THEN position <> current" - " ELSE position > current END)" - " ORDER BY CASE WHEN (SELECT random FROM queue_state LIMIT 1) = 1 THEN RANDOM() ELSE 2 END" - " LIMIT 1"; + " FROM kara" + " JOIN queue_ ON kara.id = queue_.kara_id" + " JOIN queue_state" + " ON available = 1 AND current IS NULL OR" + " CASE WHEN (SELECT single FROM queue_state) = 1 THEN position = current" + " WHEN (SELECT random FROM queue_state) = 1 THEN position <> current" + " ELSE position > current END" + " ORDER BY CASE WHEN (SELECT random FROM queue_state) = 1 THEN RANDOM() ELSE 2 END" + " LIMIT 1"; char SQL_UPDATE[LKT_MAX_SQLITE_STATEMENT]; bool status = false; int code = SQLITE_OK, id; @@ -345,7 +345,7 @@ database_queue_prev(sqlite3 *db, char filepath[PATH_MAX]) static const char *SQL_STMT = "SELECT file_path, position " " FROM kara" - " JOIN queue_ ON kara.id = queue_.kara_id" + " JOIN queue_ ON kara.id = queue_.kara_id AND available = 1" " JOIN queue_state ON CASE " " WHEN (SELECT single FROM queue_state LIMIT 1) = 1 THEN position = current" " ELSE queue_.position < queue_state.current"