diff --git a/dialects/postgresql/builder_test.go b/dialects/postgresql/builder_test.go index 61b4ce0..be598a1 100644 --- a/dialects/postgresql/builder_test.go +++ b/dialects/postgresql/builder_test.go @@ -77,6 +77,11 @@ func TestAlterTableAddColumn(t *testing.T) { returnedSQL = sqlBuilder.AlterTableAddColumn(userTableName, createdAtColumn) testutils.AssertEqualWithLabel(t, expectedSQL, returnedSQL, "SQLBuilder.AlterTableAddColumn") + activatedAtColumn := testutils.FakeActivatedAtColumn(t) + expectedSQL = "ALTER TABLE \"user\" ADD COLUMN \"activated_at\" TIMESTAMP(6) NOT NULL DEFAULT '1900-01-01 00:00:00.000000';" + returnedSQL = sqlBuilder.AlterTableAddColumn(userTableName, activatedAtColumn) + testutils.AssertEqualWithLabel(t, expectedSQL, returnedSQL, "SQLBuilder.AlterTableAddColumn") + priceColumn := testutils.FakePriceColumn(t) expectedSQL = "ALTER TABLE \"user\" ADD COLUMN \"price\" NUMERIC(17,2) NOT NULL DEFAULT 0.0;" returnedSQL = sqlBuilder.AlterTableAddColumn(userTableName, priceColumn) diff --git a/dialects/sqlite/builder_test.go b/dialects/sqlite/builder_test.go index 222e1fa..5ffcdb1 100644 --- a/dialects/sqlite/builder_test.go +++ b/dialects/sqlite/builder_test.go @@ -57,6 +57,11 @@ func TestAlterTableAddColumn(t *testing.T) { returnedSQL = sqlBuilder.AlterTableAddColumn(userTableName, createdAtColumn) testutils.AssertEqualWithLabel(t, expectedSQL, returnedSQL, "SQLBuilder.AlterTableAddColumn") + activatedAtColumn := testutils.FakeActivatedAtColumn(t) + expectedSQL = "ALTER TABLE \"user\" ADD COLUMN \"activated_at\" DATETIME NOT NULL DEFAULT '1900-01-01 00:00:00.000000';" + returnedSQL = sqlBuilder.AlterTableAddColumn(userTableName, activatedAtColumn) + testutils.AssertEqualWithLabel(t, expectedSQL, returnedSQL, "SQLBuilder.AlterTableAddColumn") + priceColumn := testutils.FakePriceColumn(t) expectedSQL = "ALTER TABLE \"user\" ADD COLUMN \"price\" REAL NOT NULL DEFAULT 0.0;" returnedSQL = sqlBuilder.AlterTableAddColumn(userTableName, priceColumn) diff --git a/dialects/sqlserver/builder_test.go b/dialects/sqlserver/builder_test.go index e9af989..4ceb78a 100644 --- a/dialects/sqlserver/builder_test.go +++ b/dialects/sqlserver/builder_test.go @@ -57,6 +57,11 @@ func TestAlterTableAddColumn(t *testing.T) { returnedSQL = sqlBuilder.AlterTableAddColumn(userTableName, createdAtColumn) testutils.AssertEqualWithLabel(t, expectedSQL, returnedSQL, "SQLBuilder.AlterTableAddColumn") + activatedAtColumn := testutils.FakeActivatedAtColumn(t) + expectedSQL = "ALTER TABLE [user] ADD COLUMN [activated_at] DATETIME2(6) NOT NULL DEFAULT '1900-01-01 00:00:00.000000';" + returnedSQL = sqlBuilder.AlterTableAddColumn(userTableName, activatedAtColumn) + testutils.AssertEqualWithLabel(t, expectedSQL, returnedSQL, "SQLBuilder.AlterTableAddColumn") + priceColumn := testutils.FakePriceColumn(t) expectedSQL = "ALTER TABLE [user] ADD COLUMN [price] MONEY NOT NULL DEFAULT 0.0;" returnedSQL = sqlBuilder.AlterTableAddColumn(userTableName, priceColumn) diff --git a/internal/builder_generic.go b/internal/builder_generic.go index b2ae8a8..b9ba9fb 100644 --- a/internal/builder_generic.go +++ b/internal/builder_generic.go @@ -70,10 +70,12 @@ func (sb *genericSQLBuilder) AlterTableAddColumn(table string, column schema.Col switch column.Type() { case schema.Boolean, schema.Integer: defaultValue += "0" - case schema.DateTime, schema.DateTimeOffSet: - defaultValue += "'1900-01-01 00:00:00.000000 +00:00'" + case schema.DateTime: + defaultValue += "'1900-01-01 00:00:00.000000'" case schema.Monetary, schema.Decimal: defaultValue += "0.0" + case schema.DateTimeOffSet: + defaultValue += "'1900-01-01 00:00:00.000000 +00:00'" default: defaultValue += "''" } diff --git a/internal/builder_generic_test.go b/internal/builder_generic_test.go index 0fe57cd..5e69b59 100644 --- a/internal/builder_generic_test.go +++ b/internal/builder_generic_test.go @@ -50,6 +50,11 @@ func TestAlterTableAddColumn(t *testing.T) { returnedSQL = sqlBuilder.AlterTableAddColumn(userTableName, createdAtColumn) testutils.AssertEqualWithLabel(t, expectedSQL, returnedSQL, "SQLBuilder.AlterTableAddColumn") + activatedAtColumn := testutils.FakeActivatedAtColumn(t) + expectedSQL = "ALTER TABLE \"user\" ADD COLUMN \"activated_at\" <> DEFAULT '1900-01-01 00:00:00.000000';" + returnedSQL = sqlBuilder.AlterTableAddColumn(userTableName, activatedAtColumn) + testutils.AssertEqualWithLabel(t, expectedSQL, returnedSQL, "SQLBuilder.AlterTableAddColumn") + priceColumn := testutils.FakePriceColumn(t) expectedSQL = "ALTER TABLE \"user\" ADD COLUMN \"price\" <> DEFAULT 0.0;" returnedSQL = sqlBuilder.AlterTableAddColumn(userTableName, priceColumn) diff --git a/internal/testutils/fake.go b/internal/testutils/fake.go index 25691dc..0837e02 100644 --- a/internal/testutils/fake.go +++ b/internal/testutils/fake.go @@ -167,6 +167,16 @@ func FakeCreatedAtColumn(t *testing.T) schema.Column { }) } +func FakeActivatedAtColumn(t *testing.T) schema.Column { + return schema.NewColumn(schema.NewColumnParams{ + Name: "activated_at", + Type: schema.DateTime, + PrimaryKey: false, + NotNull: true, + AutoIncrement: false, + }) +} + func FakeScoreColumn(t *testing.T) schema.Column { return schema.NewColumn(schema.NewColumnParams{ Name: "score",