From 930361e78c7ccbb62a8d9a23e21993897c6e97d4 Mon Sep 17 00:00:00 2001 From: simon987 Date: Thu, 13 Jul 2023 21:38:43 -0400 Subject: [PATCH] Fix #388 --- src/cli.c | 4 ++++ src/cli.h | 2 ++ src/database/database_fts.c | 10 +++++++--- src/main.c | 1 + 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/cli.c b/src/cli.c index b62d441..de98213 100644 --- a/src/cli.c +++ b/src/cli.c @@ -83,6 +83,10 @@ void exec_args_destroy(exec_args_t *args) { free(args); } +void sqlite_index_args_destroy(sqlite_index_args_t *args) { + // TODO +} + int scan_args_validate(scan_args_t *args, int argc, const char **argv) { if (argc < 2) { fprintf(stderr, "Required positional argument: PATH.\n"); diff --git a/src/cli.h b/src/cli.h index 8fa29d4..d345728 100644 --- a/src/cli.h +++ b/src/cli.h @@ -134,5 +134,7 @@ void exec_args_destroy(exec_args_t *args); int exec_args_validate(exec_args_t *args, int argc, const char **argv); +void sqlite_index_args_destroy(sqlite_index_args_t *args); + #endif diff --git a/src/database/database_fts.c b/src/database/database_fts.c index 2ef886a..4ec629d 100644 --- a/src/database/database_fts.c +++ b/src/database/database_fts.c @@ -447,12 +447,16 @@ database_summary_stats_t database_fts_get_date_range(database_t *db) { return stats; } -char *get_after_where(char **after, fts_sort_t sort) { +char *get_after_where(char **after, fts_sort_t sort, int sort_asc) { if (after == NULL) { return NULL; } - return "(sort_var, doc.ROWID) > (?3, ?4)"; + if (sort_asc) { + return "(sort_var, doc.ROWID) > (?3, ?4)"; + } + + return "(sort_var, doc.ROWID) < (?3, ?4)"; } cJSON *database_fts_search(database_t *db, const char *query, const char *path, long size_min, @@ -469,7 +473,7 @@ cJSON *database_fts_search(database_t *db, const char *query, const char *path, char *index_id_where = index_ids_where_clause(index_ids); char *mime_where = mime_types_where_clause(mime_types); const char *query_where = match_where(query); - const char *after_where = get_after_where(after, sort); + const char *after_where = get_after_where(after, sort, sort_asc); const char *tags_where = tags_where_clause(tags); if (!query_where && sort == FTS_SORT_SCORE) { diff --git a/src/main.c b/src/main.c index 76ea2c3..b6d4310 100644 --- a/src/main.c +++ b/src/main.c @@ -681,6 +681,7 @@ int main(int argc, const char *argv[]) { index_args_destroy(index_args); web_args_destroy(web_args); exec_args_destroy(exec_args); + sqlite_index_args_destroy(sqlite_index_args); return 0; }