Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ public void GetColumns_DefaultValues_Succeeds()
const string decimalColumnName1 = "decimalcolumn";
const string guidColumnName1 = "guidcolumn1";
const string booleanColumnName1 = "booleancolumn1";
const string booleanColumnName2 = "booleancolumn2";
const string int32ColumnName1 = "int32column1";
const string int64ColumnName1 = "int64column1";
const string int64ColumnName2 = "int64column2";
Expand All @@ -50,6 +51,7 @@ public void GetColumns_DefaultValues_Succeeds()

// other boolean default values are tested in another test
new Column(booleanColumnName1, DbType.Boolean, true),
new Column(booleanColumnName2, DbType.Boolean, false),

new Column(int32ColumnName1, DbType.Int32, defaultValue: 43),
new Column(int64ColumnName1, DbType.Int64, defaultValue: 88),
Expand All @@ -69,6 +71,7 @@ public void GetColumns_DefaultValues_Succeeds()
var decimalColumn1 = columns.Single(x => x.Name.Equals(decimalColumnName1, StringComparison.OrdinalIgnoreCase));
var guidColumn1 = columns.Single(x => x.Name.Equals(guidColumnName1, StringComparison.OrdinalIgnoreCase));
var booleanColumn1 = columns.Single(x => x.Name.Equals(booleanColumnName1, StringComparison.OrdinalIgnoreCase));
var booleanColumn2 = columns.Single(x => x.Name.Equals(booleanColumnName2, StringComparison.OrdinalIgnoreCase));
var int32Column1 = columns.Single(x => x.Name.Equals(int32ColumnName1, StringComparison.OrdinalIgnoreCase));
var int64Column1 = columns.Single(x => x.Name.Equals(int64ColumnName1, StringComparison.OrdinalIgnoreCase));
var int64Column2 = columns.Single(x => x.Name.Equals(int64ColumnName2, StringComparison.OrdinalIgnoreCase));
Expand All @@ -82,6 +85,7 @@ public void GetColumns_DefaultValues_Succeeds()
Assert.That(decimalColumn1.DefaultValue, Is.EqualTo(decimalDefaultValue));
Assert.That(guidColumn1.DefaultValue, Is.EqualTo(guidDefaultValue));
Assert.That(booleanColumn1.DefaultValue, Is.True);
Assert.That(booleanColumn2.DefaultValue, Is.False);
Assert.That(int32Column1.DefaultValue, Is.EqualTo(43));
Assert.That(int64Column1.DefaultValue, Is.EqualTo(88));
Assert.That(stringColumn1.DefaultValue, Is.EqualTo("Hello"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,4 +58,40 @@ public void AddColumn_HavingColumnPropertyUniqueAndIndex_RebuildSucceeds()
Assert.That(indexAfter.Name, Is.EqualTo(indexName));
CollectionAssert.AreEquivalent(indexAfter.KeyColumns, new string[] { propertyName1, propertyName2 });
}

[Test]
public void AddColumn_HavingNullInPrimaryKey_Succeds()
{
// Arrange/Act
Provider.ExecuteNonQuery("CREATE TABLE Common_Language (LanguageID TEXT PRIMARY KEY)");

Provider.AddColumn("Common_Language", "Enabled", DbType.Boolean);

var tableInfo = ((SQLiteTransformationProvider)Provider).GetSQLiteTableInfo("Common_Language");
var script = ((SQLiteTransformationProvider)Provider).GetSqlCreateTableScript("Common_Language");

var columnProperty = tableInfo.Columns.Single(x => x.Name == "LanguageID").ColumnProperty;
var hasNull = columnProperty.IsSet(ColumnProperty.Null);

// Assert
Assert.That(hasNull, Is.False);
}

[Test]
public void AddColumn_HavingNotNullInPrimaryKey_Succeds()
{
// Arrange/Act
Provider.ExecuteNonQuery("CREATE TABLE Common_Language (LanguageID INT NOT NULL PRIMARY KEY)");

Provider.AddColumn("Common_Language", "Enabled", DbType.Boolean);

var tableInfo = ((SQLiteTransformationProvider)Provider).GetSQLiteTableInfo("Common_Language");
var script = ((SQLiteTransformationProvider)Provider).GetSqlCreateTableScript("Common_Language");

var columnProperty = tableInfo.Columns.Single(x => x.Name == "LanguageID").ColumnProperty;
var hasNull = columnProperty.IsSet(ColumnProperty.Null);

// Assert
Assert.That(hasNull, Is.False);
}
}
17 changes: 0 additions & 17 deletions src/Migrator/Providers/Impl/SQLite/SQLiteColumnPropertiesMapper.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using System;
using System.Collections.Generic;
using DotNetProjects.Migrator.Framework;

Expand All @@ -22,24 +21,8 @@
}
}

protected override void AddNotNull(Column column, List<string> vals)
{
var isPrimaryKeySelected = PropertySelected(column.ColumnProperty, ColumnProperty.PrimaryKey);
var isNullSelected = PropertySelected(column.ColumnProperty, ColumnProperty.Null);
var isNotNullSelected = PropertySelected(column.ColumnProperty, ColumnProperty.NotNull);

if (isNullSelected && isPrimaryKeySelected)
{
throw new Exception("This is currently not supported by the migrator see issue #44. You need to use NOT NULL for a PK column.");
}

if (isNotNullSelected || isPrimaryKeySelected)
{
AddValueIfSelected(column, ColumnProperty.NotNull, vals);
}
}

protected virtual void AddValueIfSelected(Column column, ColumnProperty property, ICollection<string> vals)

Check warning on line 25 in src/Migrator/Providers/Impl/SQLite/SQLiteColumnPropertiesMapper.cs

View workflow job for this annotation

GitHub Actions / build

'SQLiteColumnPropertiesMapper.AddValueIfSelected(Column, ColumnProperty, ICollection<string>)' hides inherited member 'ColumnPropertiesMapper.AddValueIfSelected(Column, ColumnProperty, ICollection<string>)'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword.
{
vals.Add(_Dialect.SqlForProperty(property, column));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -893,7 +893,7 @@
}

[Obsolete]
public override void AddTable(string table, string engine, string columns)

Check warning on line 896 in src/Migrator/Providers/Impl/SQLite/SQLiteTransformationProvider.cs

View workflow job for this annotation

GitHub Actions / build

Obsolete member 'SQLiteTransformationProvider.AddTable(string, string, string)' overrides non-obsolete member 'TransformationProvider.AddTable(string, string, string)'
{
throw new NotSupportedException();
}
Expand Down Expand Up @@ -1213,6 +1213,11 @@
if (pragmaTableInfoItem.Pk > 0)
{
column.ColumnProperty |= ColumnProperty.PrimaryKey;

if (column.ColumnProperty.IsSet(ColumnProperty.Null))
{
column.ColumnProperty = column.ColumnProperty.Clear(ColumnProperty.Null);
}
}

var indexListItems = GetPragmaIndexListItems(tableName);
Expand Down
Loading