From 928d93acbbe802038c3d4dac31b76c1b9c5a51af Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Sat, 2 May 2020 12:24:20 +0200 Subject: [PATCH] Modify lektor to handle `search add` and `search insert` --- inc/lektor/commands.h | 5 +++-- src/commands.c | 9 +++++++++ src/net/listen.c | 6 ++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/inc/lektor/commands.h b/inc/lektor/commands.h index a447ef36..c6852308 100644 --- a/inc/lektor/commands.h +++ b/inc/lektor/commands.h @@ -60,10 +60,11 @@ bool command_noidle(struct lkt_state *srv, size_t c); /* Find commands */ enum lkt_find_action { - LKT_FND_ACT_NONE = 0, + LKT_FND_ACT_NONE = 0, LKT_FND_ACT_RESPOND = 1, - LKT_FND_ACT_PRINT = 2, + LKT_FND_ACT_PRINT = 2, LKT_FND_ACT_ENQUEUE = 3, + LKT_FND_ACT_ADD = 4, }; /* Find and send karas in the db that match the search expression */ diff --git a/src/commands.c b/src/commands.c index 03b289c1..08d54f20 100644 --- a/src/commands.c +++ b/src/commands.c @@ -468,6 +468,13 @@ lkt_callback_insert_v1(struct lkt_state *srv, size_t c, int id, int id_len, cons return database_queue_add_id(srv->db, id, 5); } +static bool +lkt_callback_add_v1(struct lkt_state *srv, size_t c, int id, int id_len, const char *sql_row) +{ + UNUSED(sql_row, id_len, c); + return database_queue_add_id(srv->db, id, 1); +} + static bool __find(struct lkt_state *srv, size_t c, char *cmd_args[LKT_MESSAGE_ARGS_MAX], long continuation, enum lkt_find_action action, bool(*init)(volatile sqlite3 *, char *, char *, struct lkt_search *)) @@ -498,6 +505,8 @@ __find(struct lkt_state *srv, size_t c, char *cmd_args[LKT_MESSAGE_ARGS_MAX], lo search.call = (void(*)(void)) lkt_callback_insert_v1; srv->mpd_idle_events |= MPD_IDLE_PLAYLIST; break; + case LKT_FND_ACT_ADD: + search.call = (void(*)(void)) lkt_callback_add_v1; default: return false; } diff --git a/src/net/listen.c b/src/net/listen.c index 81d15d9f..23d4fddf 100644 --- a/src/net/listen.c +++ b/src/net/listen.c @@ -255,10 +255,12 @@ handle_simple_command(struct lkt_state *srv, size_t c, struct lkt_command cmd) goto end_no_send_status; } else if (!strcmp(cmd.name, "searchadd") || !strcmp(cmd.name, "findadd")) - err = !command_find(srv, c, cmd.args, cmd.cont, LKT_FND_ACT_RESPOND); + err = ! command_find(srv, c, cmd.args, cmd.cont, LKT_FND_ACT_ADD); else if (!strcmp(cmd.name, "search") || !strcmp(cmd.name, "find")) - err = !command_find(srv, c, cmd.args, cmd.cont, LKT_FND_ACT_RESPOND); + err = ! command_find(srv, c, cmd.args, cmd.cont, LKT_FND_ACT_RESPOND); + else if (!strcmp(cmd.name, "__insert")) + err = ! command_find(srv, c, cmd.args, cmd.cont, LKT_FND_ACT_ENQUEUE); else err = 2; -- GitLab