diff --git a/cli/commandsearch.cpp b/cli/commandsearch.cpp index 4765b93..1a9870f 100644 --- a/cli/commandsearch.cpp +++ b/cli/commandsearch.cpp @@ -7,25 +7,26 @@ 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"}, + {{"r", "reverse"}, + "Print most-recent changed files first. This is short for adding \"sort:(mtime asc)\" to the query."}, }); 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(QSSQuery::build(queryStrings)); + QSSQuery query = QSSQuery::build(queryStrings); + bool reverse = parser.isSet("reverse"); + if(reverse) + { + SortCondition sc; + sc.field = FILE_MTIME; + sc.order = ASC; + query.addSortCondition(sc); + } + + auto results = dbService->search(query); for(SearchResult &result : results) { diff --git a/shared/qssquery.cpp b/shared/qssquery.cpp index 8484cbe..de6a475 100644 --- a/shared/qssquery.cpp +++ b/shared/qssquery.cpp @@ -23,6 +23,11 @@ QueryType QSSQuery::getQueryType() return static_cast(tokensMask & COMBINED); } +void QSSQuery::addSortCondition(SortCondition sc) +{ + this->sortConditions.append(sc); +} + bool QSSQuery::checkParanthesis(QString expression) { QStack open; diff --git a/shared/qssquery.h b/shared/qssquery.h index 4f1e35b..06c5c0e 100644 --- a/shared/qssquery.h +++ b/shared/qssquery.h @@ -52,6 +52,7 @@ class QSSQuery { return tokensMask; } + void addSortCondition(SortCondition sc); static bool checkParanthesis(QString query); static QSSQuery build(QString query); };