From cfe30ae5fdf1b2216442d768a6d28e32a5eb9c16 Mon Sep 17 00:00:00 2001 From: Albert S Date: Mon, 22 Apr 2019 22:00:40 +0200 Subject: [PATCH] CommandSearch: Begin basic functionality (prints filename of result) --- cli/commandsearch.cpp | 34 ++++++++++++++++++++++++++++++++++ cli/commandsearch.h | 5 +---- cli/sqlitedbservice.cpp | 7 +++++++ cli/sqlitedbservice.h | 2 ++ 4 files changed, 44 insertions(+), 4 deletions(-) diff --git a/cli/commandsearch.cpp b/cli/commandsearch.cpp index ec68155..f913dc7 100644 --- a/cli/commandsearch.cpp +++ b/cli/commandsearch.cpp @@ -1 +1,35 @@ +#include #include "commandsearch.h" +#include "databasefactory.h" +#include "logger.h" + +int CommandSearch::handle(QStringList arguments) +{ + QCommandLineParser parser; + parser.addOptions({ + {{"r", "reverse"}, "Print most-recent changed files first"}, + {"pattern", + "Only delete files from index matching the pattern, e. g. */.git/*. Only applies to --deleted or standalone.", + "pattern"}, + }); + + parser.addHelpOption(); + parser.addPositionalArgument("delete", "Delete paths from the index", "delete [paths...]"); + + parser.process(arguments); + bool reverse = parser.isSet("reverse"); + if(reverse) + { + throw QSSGeneralException("Reverse option to be implemented"); + } + + QStringList files = parser.positionalArguments(); + QString queryStrings = files.join(' '); + + auto results = dbService->search(queryStrings); + + for(SearchResult &result : results) + { + Logger::info() << result.fileData.absPath << endl; + } +} diff --git a/cli/commandsearch.h b/cli/commandsearch.h index f771df3..bd19bf2 100644 --- a/cli/commandsearch.h +++ b/cli/commandsearch.h @@ -8,10 +8,7 @@ class CommandSearch : public Command public: using Command::Command; - int handle(QStringList arguments) override - { - return 23; - } + int handle(QStringList arguments) override; }; #endif // COMMANDSEARCH_H diff --git a/cli/sqlitedbservice.cpp b/cli/sqlitedbservice.cpp index c8be1a3..691483e 100644 --- a/cli/sqlitedbservice.cpp +++ b/cli/sqlitedbservice.cpp @@ -21,6 +21,13 @@ bool SqliteDbService::fileExistsInDatabase(QString path, qint64 mtime) return query.value(0).toBool(); } +QVector SqliteDbService::search(QString searchQuery) +{ + auto connection = dbFactory->forCurrentThread(); + SqliteSearch searcher(connection); + return searcher.search(searchQuery); +} + bool SqliteDbService::fileExistsInDatabase(QString path) { auto query = QSqlQuery(dbFactory->forCurrentThread()); diff --git a/cli/sqlitedbservice.h b/cli/sqlitedbservice.h index 7483a51..6ead073 100644 --- a/cli/sqlitedbservice.h +++ b/cli/sqlitedbservice.h @@ -5,6 +5,7 @@ #include "utils.h" #include "pagedata.h" #include "filedata.h" +#include "../shared/sqlitesearch.h" enum SaveFileResult { OK, @@ -25,6 +26,7 @@ class SqliteDbService bool deleteFile(QString path); bool fileExistsInDatabase(QString path); bool fileExistsInDatabase(QString path, qint64 mtime); + QVector search(QString searchQuery); }; #endif // SQLITEDBSERVICE_H