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

Can only add by uri into the queue

parent af489e7b
Branches
Étiquettes
1 requête de fusion!71Resolve "Performance of search commands"
......@@ -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);
......
......@@ -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
......
......@@ -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)
{
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter