From 8c6f729bcc3426c8b54fc4d621e17519d5bb41f0 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Mon, 4 May 2020 12:02:15 +0200 Subject: [PATCH] Can only add by uri into the queue --- inc/lektor/database.h | 9 +-------- src/commands.c | 44 +++++++------------------------------------ src/database/find.c | 12 ++++++------ src/database/queue.c | 25 ++++++++++++++++++++++++ 4 files changed, 39 insertions(+), 51 deletions(-) diff --git a/inc/lektor/database.h b/inc/lektor/database.h index e28f3aa0..501251d4 100644 --- a/inc/lektor/database.h +++ b/inc/lektor/database.h @@ -50,14 +50,7 @@ bool database_update_add (volatile sqlite3 *db, const char *kara_path, bool database_update_set_available(volatile sqlite3 *db, uint64_t id); /* Control the content of the queue. */ -bool database_queue_add_id (volatile sqlite3 *db, int id, int priority); -bool database_queue_add_query (volatile sqlite3 *db, const char *query, int priority); -bool database_queue_add_author (volatile sqlite3 *db, const char *author, int priority); -bool database_queue_add_language(volatile sqlite3 *db, const char *author, int priority); -bool database_queue_add_category(volatile sqlite3 *db, const char *author, int priority); -bool database_queue_add_type (volatile sqlite3 *db, const char *author, int priority); -bool database_queue_add_plt (volatile sqlite3 *db, const char *plt_name, int priority); - +bool database_queue_add_uri(volatile sqlite3 *db, struct lkt_uri *uri, int priority); bool database_queue_del_id (volatile sqlite3 *db, int id); bool database_queue_del_pos(volatile sqlite3 *db, int pos); bool database_queue_clear (volatile sqlite3 *db); diff --git a/src/commands.c b/src/commands.c index 957bd4e4..2c8fc902 100644 --- a/src/commands.c +++ b/src/commands.c @@ -238,35 +238,7 @@ command_add(volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_AR int ret, priority = 1; /* To be modified according to the command (insert or add) later (TODO) */ UNUSED(win); /* No callbacks to the window for the moment */ RETURN_UNLESS(lkt_uri_from(&uri, query), "Failed to parse query", false); - - switch (uri.type) { - case uri_query: - case uri_fs: - ret = database_queue_add_query(db, uri.value, priority); - break; - case uri_id: - ret = database_queue_add_id(db, *(int *) uri.value, priority); - break; - case uri_type: - ret = database_queue_add_type(db, (char *) uri.value, priority); - break; - case uri_category: - ret = database_queue_add_category(db, (char *) uri.value, priority); - break; - case uri_language: - ret = database_queue_add_language(db, (char *) uri.value, priority); - break; - case uri_author: - ret = database_queue_add_author(db, (char *) uri.value, priority); - break; - case uri_playlist: - ret = database_queue_add_plt(db, (char *) uri.value, priority); - break; - default: - ret = false; - break; - } - + ret = database_queue_add_uri(db, &uri, priority); lkt_uri_free(&uri); return ret; } @@ -275,19 +247,17 @@ bool command_addid(volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr) { UNUSED(win); - long id; - char *endptr, *id_str; - int priority = 1; - RETURN_UNLESS(args, "Invalid argument", false); - id_str = args[0]; + long id; + char *endptr, *id_str = args[0]; + struct lkt_uri uri = { .type = uri_id }; errno = 0; *watch_mask_ptr |= MPD_IDLE_PLAYLIST; id = strtol(id_str, &endptr, 10); - RETURN_IF((errno == ERANGE && (id == LONG_MAX || id == LONG_MIN)) || (errno != 0 && id == 0), - "Failed: strtol", false); + RETURN_IF((errno == ERANGE && (id == LONG_MAX || id == LONG_MIN)) || (errno != 0 && id == 0), "Failed: strtol", false); + uri.value = (void *) (size_t) id; RETURN_IF(endptr == args[0], "No digit found", false); - return database_queue_add_id(db, id, priority); + return database_queue_add_uri(db, &uri, 1); } inline bool diff --git a/src/database/find.c b/src/database/find.c index 91a290cd..e868700f 100644 --- a/src/database/find.c +++ b/src/database/find.c @@ -12,12 +12,12 @@ __init_search(volatile sqlite3 *db, struct lkt_search *ret) { UNUSED(db); switch (ret->type) { - case lkt_add_queue: - /* Use the add uri */ - return false; - default: - LOG_WARN_SCT("DB", "Init for type %d is not implemented", ret->type); - return false; + case lkt_add_queue: + /* Use the add uri */ + return false; + default: + LOG_WARN_SCT("DB", "Init for type %d is not implemented", ret->type); + return false; } return false; } diff --git a/src/database/queue.c b/src/database/queue.c index a8bf8a55..3fdd6af5 100644 --- a/src/database/queue.c +++ b/src/database/queue.c @@ -239,6 +239,31 @@ error: return status; } +bool +database_queue_add_uri(volatile sqlite3 *db, struct lkt_uri *uri, int priority) +{ + switch (uri->type) { + case uri_query: + case uri_fs: + return database_queue_add_query(db, uri->value, priority); + case uri_id: + return database_queue_add_id(db, *(int *) uri->value, priority); + case uri_type: + return database_queue_add_type(db, (char *) uri->value, priority); + case uri_category: + return database_queue_add_category(db, (char *) uri->value, priority); + case uri_language: + return database_queue_add_language(db, (char *) uri->value, priority); + case uri_author: + return database_queue_add_author(db, (char *) uri->value, priority); + case uri_playlist: + return database_queue_add_plt(db, (char *) uri->value, priority); + default: + LOG_WARN_SCT("DB", "Add to queue for uri of type %d is not implemented", uri->type); + return false; + } +} + bool database_queue_del_id(volatile sqlite3 *db, int id) { -- GitLab