diff --git a/inc/lektor/commands.h b/inc/lektor/commands.h index 48f2086816c66c4040f7d37433cc7fd80118fb85..3329c8a48a5e26e2799d045e74eae4251f1797ed 100644 --- a/inc/lektor/commands.h +++ b/inc/lektor/commands.h @@ -32,6 +32,7 @@ bool command_add(sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_M enum mpd_idle_flag *watch_mask_ptr); bool command_addid(sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX], enum mpd_idle_flag *watch_mask_ptr); +bool command_del(sqlite3 *db, struct lkt_win *win, char *pos_range, enum mpd_idle_flag *watch_mask_ptr); bool command_delid(sqlite3 *db, struct lkt_win *win, char *id, enum mpd_idle_flag *watch_mask_ptr); bool command_clear(sqlite3 *db, enum mpd_idle_flag *watch_mask_ptr); bool command_crop(sqlite3 *db, enum mpd_idle_flag *watch_mask_ptr); @@ -62,9 +63,10 @@ bool command_noidle(struct lkt_state *srv, size_t c); /* Find commands */ enum lkt_find_action { - LKT_FND_ACT_RESPOND, - LKT_FND_ACT_ADD, - LKT_FND_ACT_INSERT, + LKT_FND_ACT_NONE = 0, + LKT_FND_ACT_RESPOND = 1, + LKT_FND_ACT_PRINT = 2, + LKT_FND_ACT_ENQUEUE = 3, }; /* Find and send karas in the db that match the search expression */ diff --git a/inc/lektor/database.h b/inc/lektor/database.h index a706a57058177dfa4402dcfc74ae8e07aa38327a..475206c5e695c6419e26f7077487e4d6236edb19 100644 --- a/inc/lektor/database.h +++ b/inc/lektor/database.h @@ -73,26 +73,19 @@ bool database_queue_toggle_pause(sqlite3 *db); bool database_queue_play(sqlite3 *db, int pos); bool database_queue_stop(sqlite3 *db); -typedef bool (*database_callback)(void *args, int id, int id_len, const char *sql_row); +/* A search callback to be called after each matched row */ +typedef bool (*database_search_callback_t)(void *args, int id, int id_len, const char *sql_row); /* List the content of the queue */ -bool database_queue_list_from(sqlite3 *db, unsigned int count, void *args, database_callback callback); -bool database_queue_list_abs(sqlite3 *db, unsigned int from, unsigned int to, void *args, database_callback callback); +bool database_queue_list_from(sqlite3 *db, unsigned int count, void *args, + database_search_callback_t callback); +bool database_queue_list_abs(sqlite3 *db, unsigned int from, unsigned int to, void *args, + database_search_callback_t callback); /* Search the database */ -struct lkt_search_iterator { - enum lkt_search_iterator_type { - lkt_search_iterator_database, - lkt_search_iterator_queue, - lkt_search_iterator_playlist, - } type; - sqlite3_stmt *iter; - sqlite3 *db; -}; -bool database_search_database_init(sqlite3 *db, const char *col_name, const char *rgx, struct lkt_search_iterator *ret); -bool database_search_plt_init(sqlite3 *db, const char *plt_name, char *col_name, char *rgx, - struct lkt_search_iterator *ret); -bool database_search_iter(struct lkt_search_iterator *item, void **ret, size_t *len); +bool database_search_init(sqlite3 *db, char *col_name, char *rgx, sqlite3_stmt **ret); +bool database_search_iter(sqlite3 *db, sqlite3_stmt *item, void *args, + database_search_callback_t callback, bool *need_free); /* Next and prev operation on the queue. */ bool database_queue_next(sqlite3 *db, char filepath[PATH_MAX]); diff --git a/inc/lektor/defines.h b/inc/lektor/defines.h index 33f3293c2bf7c4bb5a546c3f2805e968bd9fbc55..c6eac5cdabfa5a5119f7f8be73bd1c53f2e2603c 100644 --- a/inc/lektor/defines.h +++ b/inc/lektor/defines.h @@ -46,16 +46,3 @@ enum mpd_idle_flag { MPD_IDLE_OUTPUT | MPD_IDLE_OPTIONS | MPD_IDLE_PARTITION | MPD_IDLE_STICKER | MPD_IDLE_SUBSCRIPTION | MPD_IDLE_MESSAGE, }; - -enum lkt_callback_type { - callback_database, - callback_queue, - callback_playlist, -}; - -struct lkt_callback { - void **args; - enum lkt_callback_type type; - int (*call)(void **args, int id, int id_len, const char *sql_row); -}; -