Skip to content
Extraits de code Groupes Projets

Pop

Fusionnées Kubat a demandé de fusionner pop vers master
1 file
+ 5
5
Comparer les modifications
  • Côte à côte
  • En ligne
+ 5
5
@@ -252,17 +252,17 @@ database_queue_add_uri(volatile sqlite3 *db, struct lkt_uri *uri, int priority)
@@ -252,17 +252,17 @@ database_queue_add_uri(volatile sqlite3 *db, struct lkt_uri *uri, int priority)
bool
bool
database_queue_del_id(volatile sqlite3 *db, int id)
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 =
static const char *SQL_TEMPLATE =
"BEGIN TRANSACTION;"
"BEGIN TRANSACTION;"
"WITH before(pos) AS (SELECT position FROM queue JOIN queue_state WHERE position < current ORDER BY position DESC LIMIT 1) "
"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"
"UPDATE queue_state SET current = CASE WHEN current IS NULL THEN NULL ELSE (SELECT pos FROM before) END WHERE current > " POS_OF_ID ";"
" WHEN current IS NULL THEN NULL"
"UPDATE queue SET position = position - 1 WHERE position > " POS_OF_ID ";"
" ELSE (SELECT pos FROM before) "
"END WHERE current > (SELECT position FROM queue WHERE kara_id = %d);"
"DELETE FROM queue WHERE kara_id = %d;"
"DELETE FROM queue WHERE kara_id = %d;"
"COMMIT TRANSACTION;";
"COMMIT TRANSACTION;";
 
#undef POS_OF_ID
char SQL[LKT_MAX_SQLITE_STATEMENT];
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';
SQL[LKT_MAX_SQLITE_STATEMENT - 1] = '\0';
SQLITE_EXEC(db, SQL, error);
SQLITE_EXEC(db, SQL, error);
return true;
return true;
Chargement en cours