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,47 +25,45 @@
#include "createtablesqlstatementbuilder.h"
#include "utf8stringvector.h"
namespace Sqlite {
CreateTableSqlStatementBuilder::CreateTableSqlStatementBuilder()
: m_sqlStatementBuilder(Utf8StringLiteral("CREATE TABLE IF NOT EXISTS $table($columnDefinitions)$withoutRowId")),
: m_sqlStatementBuilder("CREATE TABLE IF NOT EXISTS $table($columnDefinitions)$withoutRowId"),
m_useWithoutRowId(false)
{
}
void CreateTableSqlStatementBuilder::setTable(const Utf8String &tableName)
void CreateTableSqlStatementBuilder::setTable(Utils::SmallString &&tableName)
{
m_sqlStatementBuilder.clear();
this->m_tableName = tableName;
this->m_tableName = std::move(tableName);
}
void CreateTableSqlStatementBuilder::addColumnDefinition(const Utf8String &columnName,
void CreateTableSqlStatementBuilder::addColumnDefinition(Utils::SmallString &&columnName,
ColumnType columnType,
bool isPrimaryKey)
{
m_sqlStatementBuilder.clear();
ColumnDefinition columnDefinition;
columnDefinition.setName(columnName);
columnDefinition.setName(std::move(columnName));
columnDefinition.setType(columnType);
columnDefinition.setIsPrimaryKey(isPrimaryKey);
m_columnDefinitions.append(columnDefinition);
m_columnDefinitions.push_back(columnDefinition);
}
void CreateTableSqlStatementBuilder::setColumnDefinitions(const QVector<ColumnDefinition> &columnDefinitions)
void CreateTableSqlStatementBuilder::setColumnDefinitions(ColumnDefinitions &&columnDefinitions)
{
m_sqlStatementBuilder.clear();
this->m_columnDefinitions = columnDefinitions;
m_columnDefinitions = std::move(columnDefinitions);
}
void CreateTableSqlStatementBuilder::setUseWithoutRowId(bool useWithoutRowId)
{
this->m_useWithoutRowId = useWithoutRowId;
m_useWithoutRowId = useWithoutRowId;
}
void CreateTableSqlStatementBuilder::clear()
@@ -82,7 +80,7 @@ void CreateTableSqlStatementBuilder::clearColumns()
m_columnDefinitions.clear();
}
Utf8String CreateTableSqlStatementBuilder::sqlStatement() const
Utils::SmallStringView CreateTableSqlStatementBuilder::sqlStatement() const
{
if (!m_sqlStatementBuilder.isBuild())
bindAll();
@@ -92,35 +90,35 @@ Utf8String CreateTableSqlStatementBuilder::sqlStatement() const
bool CreateTableSqlStatementBuilder::isValid() const
{
return m_tableName.hasContent() && !m_columnDefinitions.isEmpty();
return m_tableName.hasContent() && !m_columnDefinitions.empty();
}
void CreateTableSqlStatementBuilder::bindColumnDefinitions() const
{
Utf8StringVector columnDefinitionStrings;
Utils::SmallStringVector columnDefinitionStrings;
foreach (const ColumnDefinition &columnDefinition, m_columnDefinitions) {
Utf8String columnDefinitionString = columnDefinition.name() + Utf8StringLiteral(" ") + columnDefinition.typeString();
for (const ColumnDefinition &columnDefinition : m_columnDefinitions) {
Utils::SmallString columnDefinitionString = {columnDefinition.name(), " ", columnDefinition.typeString()};
if (columnDefinition.isPrimaryKey())
columnDefinitionString.append(Utf8StringLiteral(" PRIMARY KEY"));
columnDefinitionString.append(" PRIMARY KEY");
columnDefinitionStrings.append(columnDefinitionString);
columnDefinitionStrings.push_back(columnDefinitionString);
}
m_sqlStatementBuilder.bind(Utf8StringLiteral("$columnDefinitions"), columnDefinitionStrings);
m_sqlStatementBuilder.bind("$columnDefinitions", columnDefinitionStrings);
}
void CreateTableSqlStatementBuilder::bindAll() const
{
m_sqlStatementBuilder.bind(Utf8StringLiteral("$table"), m_tableName);
m_sqlStatementBuilder.bind("$table", m_tableName.clone());
bindColumnDefinitions();
if (m_useWithoutRowId)
m_sqlStatementBuilder.bind(Utf8StringLiteral("$withoutRowId"), Utf8StringLiteral(" WITHOUT ROWID"));
m_sqlStatementBuilder.bind("$withoutRowId", " WITHOUT ROWID");
else
m_sqlStatementBuilder.bindEmptyText(Utf8StringLiteral("$withoutRowId"));
m_sqlStatementBuilder.bindEmptyText("$withoutRowId");
}
} // namespace Sqlite