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

Better version of the database sticker delete

parent 0876281a
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!54Resolve "Stickers"
......@@ -234,32 +234,30 @@ error:
bool
database_sticker_delete_specify(sqlite3 *db, const char *type, int uri, const char *name)
{
const char *SQL = NULL;
char SQL[LKT_MAX_SQLITE_STATEMENT];
sqlite3_stmt *stmt;
int ret = false;
/* Tout pouris, refaire ça (FIXME). */
if (!strcasecmp(type, "song")) {
if (!name)
SQL = "DELETE FROM 'stickers.song' WHERE id = ?;";
else
SQL =
"DELETE FROM 'stickers.song' "
"WHERE 'stickers.song'.id = ? "
"AND sticker = (SELECT id FROM 'stickers' WHERE name = ? LIMIT 1);";
} else if (!strcasecmp(type, "plt")) {
if (!name)
SQL = "DELETE FROM 'stickers.plt' WHERE id = ?;";
else
SQL =
"DELETE FROM 'stickers.plt' "
"WHERE 'stickers.plt'.id = ? "
"AND sticker = (SELECT id FROM 'stickers' WHERE name = ? LIMIT 1);";
} else {
/* Base query. */
if (strcasecmp("plt", type) && strcasecmp("song", type)) {
fprintf(stderr, " . database_sticker_get: Type '%s' is invalid\n", type);
return false;
}
snprintf(SQL, LKT_MAX_SQLITE_STATEMENT - 1, "DELETE FROM 'stickers.%s' "
"WHERE 'stickers.%s' = ? ", type, type);
SQL[LKT_MAX_SQLITE_STATEMENT - 1] = 0;
/* If there is a name specified. */
if (!name) {
strncat(SQL, ";", LKT_MAX_SQLITE_STATEMENT - 1);
SQL[LKT_MAX_SQLITE_STATEMENT - 1] = 0;
} else {
strncat(SQL, "AND sticker = (SELECT id FROM 'stickers' WHERE name = ? LIMIT 1);",
LKT_MAX_SQLITE_STATEMENT - 1);
SQL[LKT_MAX_SQLITE_STATEMENT - 1] = 0;
}
SQLITE_PREPARE(db, stmt, SQL, error);
SQLITE_BIND_INT(db, stmt, 1, uri, error);
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment