Skip to content
Extraits de code Groupes Projets
Vérifiée Valider 9699ef26 rédigé par Kubat's avatar Kubat
Parcourir les fichiers

Fix issue 39

parent 3180ba85
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!74Pop
......@@ -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;
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter