Skip to content

Commit 5944df7

Browse files
JaBistDuNarrischJaBistDuNarrisch
authored andcommitted
Updated boolean default values in Postgre
1 parent 746432e commit 5944df7

File tree

2 files changed

+32
-12
lines changed

2 files changed

+32
-12
lines changed

src/Migrator.Tests/Providers/PostgreSQL/PostgreSQLTransformationProvider_GetColumnsDefaultValueTests.cs

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,15 @@ public void GetColumns_DataTypeResolveSucceeds()
3636
new Column(dateTimeColumnName1, DbType.DateTime, dateTimeDefaultValue),
3737
new Column(dateTimeColumnName2, DbType.DateTime2, dateTimeDefaultValue),
3838
new Column(decimalColumnName1, DbType.Decimal, DecimalDefaultValue),
39-
new Column(guidColumnName1, DbType.Guid, guidDefaultValue)
40-
// new Column(booleanColumnName1, DbType.Boolean),
41-
// new Column(int32ColumnName1, DbType.Int32),
42-
// new Column(int64ColumnName1, DbType.Int64),
43-
// new Column(stringColumnName1, DbType.String),
44-
// new Column(stringColumnName2, DbType.String) { Size = 30 }
39+
new Column(guidColumnName1, DbType.Guid, guidDefaultValue),
40+
41+
// other boolean default values are tested in another test
42+
new Column(booleanColumnName1, DbType.Boolean, true),
43+
44+
new Column(int32ColumnName1, DbType.Int32, 43),
45+
new Column(int64ColumnName1, DbType.Int64, 88),
46+
new Column(stringColumnName1, DbType.String),
47+
new Column(stringColumnName2, DbType.String) { Size = 30 }
4548
);
4649

4750
// Act
@@ -52,15 +55,18 @@ public void GetColumns_DataTypeResolveSucceeds()
5255
var dateTimeColumn2 = columns.Single(x => x.Name == dateTimeColumnName2);
5356
var decimalColumn1 = columns.Single(x => x.Name == decimalColumnName1);
5457
var guidColumn1 = columns.Single(x => x.Name == guidColumnName1);
55-
// var booleanColumn1 = columns.Single(x => x.Name == booleanColumnName1);
56-
// var int32Column1 = columns.Single(x => x.Name == int32ColumnName1);
57-
// var int64column1 = columns.Single(x => x.Name == int64ColumnName1);
58-
// var stringColumn1 = columns.Single(x => x.Name == stringColumnName1);
59-
// var stringColumn2 = columns.Single(x => x.Name == stringColumnName2);
58+
var booleanColumn1 = columns.Single(x => x.Name == booleanColumnName1);
59+
var int32Column1 = columns.Single(x => x.Name == int32ColumnName1);
60+
var int64Column1 = columns.Single(x => x.Name == int64ColumnName1);
61+
var stringColumn1 = columns.Single(x => x.Name == stringColumnName1);
62+
var stringColumn2 = columns.Single(x => x.Name == stringColumnName2);
6063

6164
Assert.That(dateTimeColumn1.DefaultValue, Is.EqualTo(dateTimeDefaultValue));
6265
Assert.That(dateTimeColumn2.DefaultValue, Is.EqualTo(dateTimeDefaultValue));
6366
Assert.That(decimalColumn1.DefaultValue, Is.EqualTo(DecimalDefaultValue));
6467
Assert.That(guidColumn1.DefaultValue, Is.EqualTo(guidDefaultValue));
68+
Assert.That(booleanColumn1.DefaultValue, Is.True);
69+
Assert.That(int32Column1.DefaultValue, Is.EqualTo(43));
70+
Assert.That(int64Column1.DefaultValue, Is.EqualTo(88));
6571
}
6672
}

src/Migrator/Providers/Impl/PostgreSQL/PostgreSQLTransformationProvider.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,21 @@ public override Column[] GetColumns(string table)
403403
}
404404
else if (column.Type == DbType.Boolean)
405405
{
406-
column.DefaultValue = column.DefaultValue.ToString().Trim() == "1" || column.DefaultValue.ToString().Trim().Equals("TRUE", StringComparison.OrdinalIgnoreCase) || column.DefaultValue.ToString().Trim() == "YES";
406+
var truthy = new[] { "1", "TRUE", "YES", "'true'", "on", "'on'", "t", "'t'" };
407+
var falsy = new[] { "0", "FALSE", "NO", "'false'", "off", "'off'", "f", "'f'" };
408+
409+
if (truthy.Any(x => x.Equals(defaultValueString.Trim(), StringComparison.OrdinalIgnoreCase)))
410+
{
411+
column.DefaultValue = true;
412+
}
413+
else if (falsy.Any(x => x.Equals(defaultValueString.Trim(), StringComparison.OrdinalIgnoreCase)))
414+
{
415+
column.DefaultValue = false;
416+
}
417+
else
418+
{
419+
throw new NotImplementedException($"Cannot interpret the given default value in column '{column.Name}'");
420+
}
407421
}
408422
else if (column.Type == DbType.DateTime || column.Type == DbType.DateTime2)
409423
{

0 commit comments

Comments
 (0)