forked from qt-creator/qt-creator
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user