Clang: Cleanup string interface of sqlite

We only will need the utf8 optimized SmallString for the indexer database.
So we remove all other string bindings, QByteArray and QVariant.

Change-Id: I4a77901a80b26bf292fc85df535c2ccf3a8ab52f
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Marco Bubke
2017-07-27 15:59:54 +02:00
parent 1727e64349
commit 2fed425cd3
29 changed files with 514 additions and 1005 deletions

View File

@@ -25,7 +25,9 @@
#pragma once
#include "utf8string.h"
#include "sqliteglobal.h"
#include <utils/smallstringvector.h>
#include <utility>
#include <vector>
@@ -34,48 +36,51 @@ namespace Sqlite {
class SQLITE_EXPORT SqlStatementBuilder
{
using BindingPair = std::pair<Utf8String, Utf8String>;
using BindingPair = std::pair<Utils::SmallString, Utils::SmallString>;
public:
SqlStatementBuilder(const Utf8String &m_sqlTemplate);
SqlStatementBuilder(Utils::SmallString &&m_sqlTemplate);
void bindEmptyText(const Utf8String &name);
void bind(const Utf8String &name, const Utf8String &text);
void bind(const Utf8String &name, const Utf8StringVector &textVector);
void bind(const Utf8String &name, int value);
void bind(const Utf8String &name, const QVector<int> &integerVector);
void bindWithInsertTemplateParameters(const Utf8String &name, const Utf8StringVector &columns);
void bindWithUpdateTemplateParameters(const Utf8String &name, const Utf8StringVector &columns);
void bindWithUpdateTemplateNames(const Utf8String &name, const Utf8StringVector &columns);
void bindEmptyText(Utils::SmallString &&name);
void bind(Utils::SmallString &&name, Utils::SmallString &&text);
void bind(Utils::SmallString &&name, const Utils::SmallStringVector &textVector);
void bind(Utils::SmallString &&name, int value);
void bind(Utils::SmallString &&name, const std::vector<int> &integerVector);
void bindWithInsertTemplateParameters(Utils::SmallString &&name,
const Utils::SmallStringVector &columns);
void bindWithUpdateTemplateParameters(Utils::SmallString &&name,
const Utils::SmallStringVector &columns);
void bindWithUpdateTemplateNames(Utils::SmallString &&name,
const Utils::SmallStringVector &columns);
void clear();
Utf8String sqlStatement() const;
Utils::SmallStringView sqlStatement() const;
bool isBuild() const;
static Utf8String columnTypeToString(ColumnType columnType);
static Utils::SmallString columnTypeToString(ColumnType columnType);
protected:
static const Utf8String insertTemplateParameters(const Utf8StringVector &columns);
static const Utf8String updateTemplateParameters(const Utf8StringVector &columns);
static const Utf8String updateTemplateNames(const Utf8StringVector &columns);
static Utils::SmallString insertTemplateParameters(const Utils::SmallStringVector &columns);
static Utils::SmallString updateTemplateParameters(const Utils::SmallStringVector &columns);
static Utils::SmallString updateTemplateNames(const Utils::SmallStringVector &columns);
void sortBindings() const;
void generateSqlStatement() const;
void changeBinding(const Utf8String &name, const Utf8String &text);
void changeBinding(Utils::SmallString &&name, Utils::SmallString &&text);
void clearSqlStatement();
void checkIfPlaceHolderExists(const Utf8String &name) const;
void checkIfPlaceHolderExists(Utils::SmallStringView name) const;
void checkIfNoPlaceHoldersAynmoreExists() const;
void checkBindingTextIsNotEmpty(const Utf8String &text) const;
void checkBindingTextVectorIsNotEmpty(const Utf8StringVector &textVector) const;
void checkBindingIntegerVectorIsNotEmpty(const QVector<int> &integerVector) const;
void checkBindingTextIsNotEmpty(Utils::SmallStringView text) const;
void checkBindingTextVectorIsNotEmpty(const Utils::SmallStringVector &textVector) const;
void checkBindingIntegerVectorIsNotEmpty(const std::vector<int> &integerVector) const;
Q_NORETURN static void throwException(const char *whatHasHappened, const char *errorMessage);
private:
Utf8String m_sqlTemplate;
mutable Utf8String m_sqlStatement_;
Utils::SmallString m_sqlTemplate;
mutable Utils::SmallString m_sqlStatement;
mutable std::vector<BindingPair> m_bindings;
};