diff --git a/src/database/config.c b/src/database/config.c index eb09db8541c459fc983e2f50da364853b18380fd..f4de2a20c6891cf94b65f44f3c53b45f1cfd48b8 100644 --- a/src/database/config.c +++ b/src/database/config.c @@ -134,25 +134,6 @@ error: return ret; } -bool -database_config_queue_default(volatile sqlite3 *db) -{ - static const char *SQL_DEFAULT = - "UPDATE queue_state SET" - " volume = 100," - " paused = 1," - " random = 0," - " repeat = 0," - " single = 0," - " consume = 0," - " current = NULL," - " duration = 0;"; - SQLITE_EXEC(db, SQL_DEFAULT, error); - return true; -error: - return false; -} - bool database_get_config(volatile sqlite3 *db, const char *option, int *value) { diff --git a/src/database/queue.c b/src/database/queue.c index 14c7312b3ea44b0d683d5e246e7d7c6451f6d5ec..2981a045b32636fa8c99ca5890a36d1547551d43 100644 --- a/src/database/queue.c +++ b/src/database/queue.c @@ -7,6 +7,31 @@ #include <stdio.h> #include <string.h> +#define sqlite_just_exec(func, query) \ + bool func (volatile sqlite3 *db) { \ + SQLITE_EXEC(db, "BEGIN TRANSACTION;" #query "COMMIT;", error); \ + return true; \ + error: \ + SQLITE_DO_ROLLBACK(db); \ + return false; \ + } +sqlite_just_exec(database_queue_toggle_pause, "UPDATE queue_state SET paused = 1 - paused;") +sqlite_just_exec(database_queue_crop, "DELETE FROM queue WHERE queue.kara_id <> (SELECT current FROM queue_state LIMIT 1);") +sqlite_just_exec(database_queue_stop, "UPDATE queue_state SET current = NULL;") +sqlite_just_exec(database_queue_clear, "DELETE FROM queue;DELETE FROM sqlite_sequence WHERE name = 'queue';UPDATE queue_state SET current = NULL;") +sqlite_just_exec(database_config_queue_default, "UPDATE queue_state SET volume = 100, paused = 1, random = 0, repeat = 0, single = 0, consume = 0, current = NULL, duration = 0;") +#undef sqlite_just_exec + +bool +database_queue_set_paused(volatile sqlite3 *db, bool paused) +{ + const char *SQL = paused ? "UPDATE queue_state SET paused = 1;" : "UPDATE queue_state SET paused = 0;"; + SQLITE_EXEC(db, SQL, error); + return true; +error: + return false; +} + /* Find in in database/open.c */ extern int is_sql_str_invalid(const char *); @@ -337,16 +362,6 @@ database_queue_skip_current(volatile sqlite3 *db, char filepath[PATH_MAX]) } } -bool -database_queue_toggle_pause(volatile sqlite3 *db) -{ - static const char *SQL_STMT = "UPDATE queue_state SET paused = 1 - paused"; - SQLITE_EXEC(db, SQL_STMT, error); - return true; -error: - return false; -} - bool database_queue_prev(volatile sqlite3 *db, char filepath[PATH_MAX]) { @@ -396,33 +411,6 @@ error: return status; } -bool -database_queue_clear(volatile sqlite3 *db) -{ - static const char *SQL_STMT = - "BEGIN TRANSACTION;" - "DELETE FROM queue;" - "DELETE FROM sqlite_sequence WHERE name = 'queue';" - "UPDATE queue_state SET current = NULL;" - "COMMIT;"; - SQLITE_EXEC(db, SQL_STMT, error); - return true; -error: - SQLITE_DO_ROLLBACK(db); - return false; -} - -bool -database_queue_crop(volatile sqlite3 *db) -{ - static const char *SQL_STMT = - "DELETE FROM queue WHERE queue.kara_id <> (SELECT current FROM queue_state LIMIT 1);"; - SQLITE_EXEC(db, SQL_STMT, error); - return true; -error: - return false; -} - bool database_queue_move(volatile sqlite3 *db, int from, int to) { @@ -483,16 +471,6 @@ error: return ret; } -bool -database_queue_stop(volatile sqlite3 *db) -{ - static const char *SQL_STMT = "UPDATE queue_state SET current = NULL;"; - SQLITE_EXEC(db, SQL_STMT, error); - return true; -error: - return false; -} - bool database_queue_set_current_index(volatile sqlite3 *db, int idx) { @@ -544,16 +522,6 @@ error: return status; } -bool -database_queue_set_paused(volatile sqlite3 *db, bool paused) -{ - const char *SQL = paused ? "UPDATE queue_state SET paused = 1;" : "UPDATE queue_state SET paused = 0;"; - SQLITE_EXEC(db, SQL, error); - return true; -error: - return false; -} - bool database_queue_shuffle(volatile sqlite3 *db) { diff --git a/src/database/update.c b/src/database/update.c index 9bde1c69e48f48187b390a6be2a75eb5c3f40214..5a56f927f4eec26602f7e64aa57b4a7e715399d7 100644 --- a/src/database/update.c +++ b/src/database/update.c @@ -226,18 +226,11 @@ error: LOG_WARN_SCT("DB", "Failed to get informations about the last update: %s", sqlite3_errmsg((sqlite3 *) db)); } -void -database_stamp(volatile sqlite3 *db) -{ - SQLITE_EXEC(db, "UPDATE misc SET last_update = strftime('%s','now');", error); -error: - return; -} - -void -database_updated(volatile sqlite3 *db) -{ - SQLITE_EXEC(db, "UPDATE misc SET last_end_update = strftime('%s','now'), update_job = update_job + 1;", error); -error: - return; -} +#define sqlite_just_exec(func, query) \ + void func (volatile sqlite3 *db) { \ + SQLITE_EXEC(db, #query, error); \ + error: return; \ + } +sqlite_just_exec(database_stamp, "UPDATE misc SET last_update = strftime('%s','now');") +sqlite_just_exec(database_updated, "UPDATE misc SET last_end_update = strftime('%s','now'), update_job = update_job + 1;") +#undef sqlite_just_exec