From 9699ef26e4e83c2e092b281d286bce98ffc86442 Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Mon, 4 May 2020 19:36:34 +0200
Subject: [PATCH] Fix issue 39

---
 src/database/queue.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/database/queue.c b/src/database/queue.c
index c936b1fc..5c7cc914 100644
--- a/src/database/queue.c
+++ b/src/database/queue.c
@@ -252,17 +252,20 @@ database_queue_add_uri(volatile sqlite3 *db, struct lkt_uri *uri, int priority)
 bool
 database_queue_del_id(volatile sqlite3 *db, int id)
 {
+#define POS_OF_ID "(SELECT position FROM queue WHERE kara_id = %d)"
     static const char *SQL_TEMPLATE =
         "BEGIN TRANSACTION;"
         "WITH before(pos) AS (SELECT position FROM queue JOIN queue_state WHERE position < current ORDER BY position DESC LIMIT 1) "
         "UPDATE queue_state SET current = CASE"
         " WHEN current IS NULL THEN NULL"
         " ELSE (SELECT pos FROM before) "
-        "END WHERE current > (SELECT position FROM queue WHERE kara_id = %d);"
+        "END WHERE current > " POS_OF_ID ";"
         "DELETE FROM queue WHERE kara_id = %d;"
+        "UPDATE queue SET position = position - 1 WHERE position > " POS_OF_ID ";"
         "COMMIT TRANSACTION;";
+#undef POS_OF_ID
     char SQL[LKT_MAX_SQLITE_STATEMENT];
-    snprintf(SQL, LKT_MAX_SQLITE_STATEMENT - 1, SQL_TEMPLATE, id, id, id);
+    snprintf(SQL, LKT_MAX_SQLITE_STATEMENT - 1, SQL_TEMPLATE, id, id, id, id);
     SQL[LKT_MAX_SQLITE_STATEMENT - 1] = '\0';
     SQLITE_EXEC(db, SQL, error);
     return true;
-- 
GitLab