1
0

Refactor search queries: Introduced QSSQuery

Purpose is to seperate certain logic from SQLite and generalize it more.
Even though we only have Sqlite atm, in general the database layers
must be stupid as possible, while QSSQuery should do most of the hard work.

Fixes in Tokenizer logic.
Switched to C++17.
Dieser Commit ist enthalten in:
2019-08-17 11:06:35 +02:00
Ursprung 05a5bac22f
Commit cff481a57e
14 geänderte Dateien mit 500 neuen und 618 gelöschten Zeilen

Datei anzeigen

@ -3,34 +3,21 @@
#include <QSqlDatabase>
#include <QPair>
#include "searchresult.h"
#include "token.h"
#include "../shared/qssquery.h"
class SqliteSearch
{
class Token
{
public:
QString key;
QString value;
Token(QString key = "", QString value = "")
{
this->key = key;
this->value = value;
}
};
public:
SqliteSearch(QSqlDatabase &db);
QVector<SearchResult> search(const QString &query);
static bool checkParanthesis(QString expression);
QVector<SearchResult> search(const QSSQuery &query);
private:
QSqlDatabase *db;
QVector<Token> tokenize(QString expression);
QSqlQuery makeSqlQuery(const QVector<Token> &tokens);
QString fieldToColumn(QString col);
QSqlQuery makeSqlQuery(const QSSQuery &query);
QString fieldToColumn(QueryField field);
QPair<QString, QVector<QString>> createSql(const Token &token);
QString createSortSql(const SqliteSearch::Token &token);
QString createSortSql(const QVector<SortCondition> sortConditions);
};
#endif // SQLITESEARCH_H