From 5a054c55170319310583c9921bfddf8ba61660d6 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Mon, 4 May 2020 17:19:42 +0200 Subject: [PATCH] Outputs are ok, but insert seems buggy --- inc/lektor/database.h | 2 +- src/commands.c | 5 ++--- src/database/queue.c | 10 ++++++---- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/inc/lektor/database.h b/inc/lektor/database.h index 63f6ccf4..4da2d086 100644 --- a/inc/lektor/database.h +++ b/inc/lektor/database.h @@ -66,7 +66,7 @@ bool database_queue_stop (volatile sqlite3 *db); /* A search callback to be called after each matched row */ struct lkt_callback { - bool (*call)(void *args, int id, int id_len, const char *sql_row); + bool (*call)(void *args, int pos, int pos_len, int id, int id_len, const char *sql_row); struct lkt_state *srv; size_t c; int iterations; diff --git a/src/commands.c b/src/commands.c index 22294dc4..2b1fa4ee 100644 --- a/src/commands.c +++ b/src/commands.c @@ -375,12 +375,12 @@ command_noidle(struct lkt_state *srv, size_t c) /* Functions for the searchadd and the search mpd commands */ bool -lkt_callback_send_row_v1(void *_args, int id, int id_len, const char *sql_row) +lkt_callback_send_row_v1(void *_args, int pos_len, int pos, int id, int id_len, const char *sql_row) { struct lkt_callback *args = (struct lkt_callback *) _args; struct lkt_message *out; out = lkt_message_new(); - out->data_len = snprintf(out->data, LKT_MESSAGE_MAX, "%*d %s\n", id_len, id, sql_row); + out->data_len = snprintf(out->data, LKT_MESSAGE_MAX, "%*d: %*d %s\n", pos_len, pos, id_len, id, sql_row); lkt_state_send(args->srv, args->c, out); return true; } @@ -391,7 +391,6 @@ lkt_callback_send_row_v2(struct lkt_state *srv, size_t c, int id, int id_len, co struct lkt_message *out = lkt_message_new(); out->data_len = snprintf(out->data, LKT_MESSAGE_MAX, "%*d %s\n", id_len, id, sql_row); lkt_state_send(srv, c, out); - printf("TOTO\n"); return true; } diff --git a/src/database/queue.c b/src/database/queue.c index a6371ad6..98f4c7bb 100644 --- a/src/database/queue.c +++ b/src/database/queue.c @@ -591,13 +591,13 @@ database_queue_list(volatile sqlite3 *db, size_t from, size_t to, struct lkt_cal { const char *SQL_STMT = "WITH content AS (" - " SELECT kara.id AS id, string, LENGTH(CAST(kara.id AS TEXT)) AS len" + " SELECT kara.id AS id, string, LENGTH(CAST(kara.id AS TEXT)) AS len, position, LENGTH(CAST(position AS TEXT)) AS pos_len" " FROM queue" " JOIN kara ON kara_id = kara.id" " WHERE position >= ? AND position <= ?" " GROUP BY position ORDER BY position ASC, priority DESC)" - "SELECT id, string, (SELECT MAX(len) FROM content) FROM content;"; - int code, id, id_len; + "SELECT id, string, (SELECT MAX(len) FROM content), position, (SELECT MAX(pos_len) FROM content) FROM content;"; + int code, id, id_len, pos, pos_len; const char *row; bool ret = false; sqlite3_stmt *stmt; @@ -613,8 +613,10 @@ database_queue_list(volatile sqlite3 *db, size_t from, size_t to, struct lkt_cal id = sqlite3_column_int(stmt, 0); row = (const char *) sqlite3_column_text(stmt, 1); id_len = sqlite3_column_int(stmt, 2); + pos = sqlite3_column_int(stmt, 3); + pos_len = sqlite3_column_int(stmt, 4); ++(callback->iterations); - if (callback->call(callback, id, id_len, row)) + if (callback->call(callback, pos_len, pos, id, id_len, row)) continue; else break; -- GitLab