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