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

Merge branch 'master' into clean

parents dcbc8bc4 9b280399
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!73Clean
......@@ -252,17 +252,17 @@ 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);"
"UPDATE queue_state SET current = CASE WHEN current IS NULL THEN NULL ELSE (SELECT pos FROM before) END WHERE current > " POS_OF_ID ";"
"UPDATE queue SET position = position - 1 WHERE position > " POS_OF_ID ";"
"DELETE FROM queue WHERE kara_id = %d LIMIT 1;"
"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.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter