CommandSearch: Begin basic functionality (prints filename of result)

This commit is contained in:
Albert S. 2019-04-22 22:00:40 +02:00
parent 623eea80ec
commit cfe30ae5fd
4 changed files with 44 additions and 4 deletions

View File

@ -1 +1,35 @@
#include <QCommandLineParser>
#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;
}
}

View File

@ -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

View File

@ -21,6 +21,13 @@ bool SqliteDbService::fileExistsInDatabase(QString path, qint64 mtime)
return query.value(0).toBool();
}
QVector<SearchResult> 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());

View File

@ -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<SearchResult> search(QString searchQuery);
};
#endif // SQLITEDBSERVICE_H