Sqlite: Cleanup table and column handling

Using values instead of pointers makes the handling much easier. We can
remove ColumnDefinition too, and use SqliteColumn instead.

Change-Id: I224db9cc569c4dfb6e2746179b02096904bfbccb
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Marco Bubke
2017-08-01 14:02:57 +02:00
parent a41183f6c7
commit 52a911b972
16 changed files with 183 additions and 354 deletions

View File

@@ -30,18 +30,17 @@
namespace {
using Sqlite::ColumnDefinition;
using Sqlite::ColumnDefinitions;
using Sqlite::SqliteColumn;
using Sqlite::SqliteColumns;
using Sqlite::SqlStatementBuilderException;
class CreateTableSqlStatementBuilder : public ::testing::Test
{
protected:
void bindValues();
static ColumnDefinitions createColumnDefintions();
static ColumnDefinition createColumnDefintion(Utils::SmallString name,
ColumnType type,
bool isPrimaryKey = false);
static SqliteColumns createColumns();
protected:
Sqlite::CreateTableSqlStatementBuilder builder;
};
@@ -88,7 +87,7 @@ TEST_F(CreateTableSqlStatementBuilder, AddColumnToExistingColumns)
{
bindValues();
builder.addColumnDefinition("number2", ColumnType::Real);
builder.addColumn("number2", ColumnType::Real);
ASSERT_THAT(builder.sqlStatement(),
"CREATE TABLE IF NOT EXISTS test(id INTEGER PRIMARY KEY, name TEXT, number NUMERIC, number2 REAL)");}
@@ -118,8 +117,8 @@ TEST_F(CreateTableSqlStatementBuilder, ClearColumnsAndAddColumnNewColumns)
bindValues();
builder.clearColumns();
builder.addColumnDefinition("name3", ColumnType::Text);
builder.addColumnDefinition("number3", ColumnType::Real);
builder.addColumn("name3", ColumnType::Text);
builder.addColumn("number3", ColumnType::Real);
ASSERT_THAT(builder.sqlStatement(),
"CREATE TABLE IF NOT EXISTS test(name3 TEXT, number3 REAL)");
@@ -140,7 +139,7 @@ TEST_F(CreateTableSqlStatementBuilder, SetColumnDefinitions)
builder.clear();
builder.setTable("test");
builder.setColumnDefinitions(createColumnDefintions());
builder.setColumns(createColumns());
ASSERT_THAT(builder.sqlStatement(),
"CREATE TABLE IF NOT EXISTS test(id INTEGER PRIMARY KEY, name TEXT, number NUMERIC)");
@@ -150,30 +149,19 @@ void CreateTableSqlStatementBuilder::bindValues()
{
builder.clear();
builder.setTable("test");
builder.addColumnDefinition("id", ColumnType::Integer, true);
builder.addColumnDefinition("name", ColumnType::Text);
builder.addColumnDefinition("number",ColumnType:: Numeric);
builder.addColumn("id", ColumnType::Integer, IsPrimaryKey::Yes);
builder.addColumn("name", ColumnType::Text);
builder.addColumn("number",ColumnType:: Numeric);
}
ColumnDefinitions CreateTableSqlStatementBuilder::createColumnDefintions()
SqliteColumns CreateTableSqlStatementBuilder::createColumns()
{
ColumnDefinitions columnDefinitions;
columnDefinitions.push_back(createColumnDefintion("id", ColumnType::Integer, true));
columnDefinitions.push_back(createColumnDefintion("name", ColumnType::Text));
columnDefinitions.push_back(createColumnDefintion("number", ColumnType::Numeric));
SqliteColumns columns;
columns.emplace_back("id", ColumnType::Integer, IsPrimaryKey::Yes);
columns.emplace_back("name", ColumnType::Text);
columns.emplace_back("number", ColumnType::Numeric);
return columnDefinitions;
}
ColumnDefinition CreateTableSqlStatementBuilder::createColumnDefintion(Utils::SmallString name, ColumnType type, bool isPrimaryKey)
{
ColumnDefinition columnDefinition;
columnDefinition.setName(std::move(name));
columnDefinition.setType(type);
columnDefinition.setIsPrimaryKey(isPrimaryKey);
return columnDefinition;
return columns;
}
}