From d2baac92605b8f9c0386b0dd3995eb2baeb7b346 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Sun, 26 Apr 2020 11:04:42 +0200 Subject: [PATCH] Only select kara that are available for next and prev, also don't permit insertion of unavailable karas in the queue (but possible in playlists). --- src/database/queue.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/database/queue.c b/src/database/queue.c index cfb55e00..b12f602e 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" -- GitLab