Skip to content

Commit 2adefe8

Browse files
JaBistDuNarrischJaBistDuNarrisch
authored andcommitted
AddTable now uses GENERATED ALWAYS AS IDENTITY in Oracle / Added data loader for oracle
1 parent 2b11fde commit 2adefe8

20 files changed

+456
-185
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
using System.Data;
2+
using DotNetProjects.Migrator.Framework;
3+
using Migrator.Tests.Providers.Base;
4+
using NUnit.Framework;
5+
6+
namespace Migrator.Tests.Providers.Generic;
7+
8+
[TestFixture]
9+
public abstract class Generic_AddTableTestsBase : TransformationProviderBase
10+
{
11+
[Test]
12+
public void AddTable_PrimaryKeyWithIdentity_Success()
13+
{
14+
// Arrange
15+
var tableName = "TableName";
16+
var column1Name = "Column1";
17+
var column2Name = "Column2";
18+
19+
// Act
20+
Provider.AddTable(tableName,
21+
new Column(column1Name, DbType.Int32, ColumnProperty.NotNull | ColumnProperty.PrimaryKeyWithIdentity),
22+
new Column(column2Name, DbType.Int32, ColumnProperty.NotNull)
23+
);
24+
25+
// Assert
26+
var column1 = Provider.GetColumnByName(tableName, column1Name);
27+
var column2 = Provider.GetColumnByName(tableName, column2Name);
28+
29+
Assert.That(column1.ColumnProperty.HasFlag(ColumnProperty.PrimaryKeyWithIdentity), Is.True);
30+
Assert.That(column2.ColumnProperty.HasFlag(ColumnProperty.NotNull), Is.True);
31+
}
32+
33+
[Test]
34+
public void AddTable_NotNull_Success()
35+
{
36+
// Arrange
37+
var tableName = "TableName";
38+
var column1Name = "Column1";
39+
40+
// Act
41+
Provider.AddTable(tableName,
42+
new Column(column1Name, DbType.Int32, ColumnProperty.NotNull)
43+
);
44+
45+
// Assert
46+
var column1 = Provider.GetColumnByName(tableName, column1Name);
47+
48+
Assert.That(column1.ColumnProperty.HasFlag(ColumnProperty.NotNull), Is.True);
49+
}
50+
51+
52+
[Test]
53+
public void AddTableWithCompoundPrimaryKey()
54+
{
55+
Provider.AddTable("Test",
56+
new Column("PersonId", DbType.Int32, ColumnProperty.PrimaryKey),
57+
new Column("AddressId", DbType.Int32, ColumnProperty.PrimaryKey)
58+
);
59+
60+
Assert.That(Provider.TableExists("Test"), Is.True, "Table doesn't exist");
61+
Assert.That(Provider.PrimaryKeyExists("Test", "PK_Test"), Is.True, "Constraint doesn't exist");
62+
}
63+
}
Lines changed: 2 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,16 @@
1-
using System.Data;
21
using System.Threading.Tasks;
3-
using DotNetProjects.Migrator.Framework;
4-
using Migrator.Tests.Providers.Base;
2+
using Migrator.Tests.Providers.Generic;
53
using NUnit.Framework;
64

75
namespace Migrator.Tests.Providers.OracleProvider;
86

97
[TestFixture]
108
[Category("Oracle")]
11-
public class OracleTransformationProvider_AddTable_Tests : TransformationProviderBase
9+
public class OracleTransformationProvider_AddTable_Tests : Generic_AddTableTestsBase
1210
{
1311
[SetUp]
1412
public async Task SetUpAsync()
1513
{
1614
await BeginOracleTransactionAsync();
1715
}
18-
19-
[Test]
20-
public void AddTableWithCompoundPrimaryKey()
21-
{
22-
Provider.AddTable("Test",
23-
new Column("PersonId", DbType.Int32, ColumnProperty.PrimaryKey),
24-
new Column("AddressId", DbType.Int32, ColumnProperty.PrimaryKey)
25-
);
26-
27-
Assert.That(Provider.TableExists("Test"), Is.True, "Table doesn't exist");
28-
Assert.That(Provider.PrimaryKeyExists("Test", "PK_Test"), Is.True, "Constraint doesn't exist");
29-
}
30-
31-
[Test]
32-
public void AddTable_NotNull_Success()
33-
{
34-
// Arrange
35-
var tableName = "TableName";
36-
var column1Name = "Column1";
37-
38-
// Act
39-
Provider.AddTable(tableName,
40-
new Column(column1Name, DbType.Int32, ColumnProperty.NotNull)
41-
);
42-
43-
// Assert
44-
var column1 = Provider.GetColumnByName(tableName, column1Name);
45-
46-
Assert.That(column1.ColumnProperty.HasFlag(ColumnProperty.NotNull), Is.True);
47-
}
4816
}
Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,16 @@
1-
using System.Data;
2-
using DotNetProjects.Migrator.Framework;
3-
using Migrator.Tests.Providers.PostgreSQL.Base;
1+
using System.Threading.Tasks;
2+
using Migrator.Tests.Providers.Generic;
43
using NUnit.Framework;
54

65
namespace Migrator.Tests.Providers.PostgreSQL;
76

87
[TestFixture]
98
[Category("Postgre")]
10-
public class PostgreSQLTransformationProvider_AddTableTests : PostgreSQLTransformationProviderTestBase
9+
public class PostgreSQLTransformationProvider_AddTableTests : Generic_AddTableTestsBase
1110
{
12-
[Test]
13-
public void AddTableWithCompoundPrimaryKey()
11+
[SetUp]
12+
public async Task SetUpAsync()
1413
{
15-
Provider.AddTable("Test",
16-
new Column("PersonId", DbType.Int32, ColumnProperty.PrimaryKey),
17-
new Column("AddressId", DbType.Int32, ColumnProperty.PrimaryKey)
18-
);
19-
20-
Assert.That(Provider.TableExists("Test"), Is.True, "Table doesn't exist");
21-
Assert.That(Provider.PrimaryKeyExists("Test", "PK_Test"), Is.True, "Constraint doesn't exist");
14+
await BeginPostgreSQLTransactionAsync();
2215
}
2316
}

src/Migrator.Tests/Providers/SQLServer/SQLServerTransformationProvider_AddTableTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
using System.Data;
22
using System.Threading.Tasks;
33
using DotNetProjects.Migrator.Framework;
4-
using Migrator.Tests.Providers.Base;
4+
using Migrator.Tests.Providers.Generic;
55
using NUnit.Framework;
66

77
namespace Migrator.Tests.Providers.SQLServer;
88

99
[TestFixture]
1010
[Category("SqlServer")]
11-
public class SQLServerTransformationProvider_AddTableTests : TransformationProviderBase
11+
public class SQLServerTransformationProvider_AddTableTests : Generic_AddTableTestsBase
1212
{
1313
[SetUp]
1414
public async Task SetUpAsync()

src/Migrator.Tests/Providers/SQLite/SQLiteTransformationProvider_AddTableTests.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,23 @@
11
using System.Data.SQLite;
22
using System.Linq;
3+
using System.Threading.Tasks;
34
using DotNetProjects.Migrator.Framework;
45
using DotNetProjects.Migrator.Providers.Impl.SQLite;
5-
using Migrator.Tests.Providers.SQLite.Base;
6+
using Migrator.Tests.Providers.Generic;
67
using NUnit.Framework;
78

89
namespace Migrator.Tests.Providers.SQLite;
910

1011
[TestFixture]
1112
[Category("SQLite")]
12-
public class SQLiteTransformationProvider_AddTableTests : SQLiteTransformationProviderTestBase
13+
public class SQLiteTransformationProvider_AddTableTests : Generic_AddTableTestsBase
1314
{
15+
[SetUp]
16+
public async Task SetUpAsync()
17+
{
18+
await BeginSQLiteTransactionAsync();
19+
}
20+
1421
[Test]
1522
public void AddTable_UniqueOnlyOnColumnLevel_Obsolete_UniquesListIsEmpty()
1623
{

src/Migrator/Framework/IDialect.cs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,9 @@ public interface IDialect
5151
DbType GetDbType(string databaseTypeName);
5252

5353
void RegisterProperty(ColumnProperty property, string sql);
54+
5455
string SqlForProperty(ColumnProperty property, Column column);
55-
string Quote(string value);
56+
5657
string Default(object defaultValue);
5758

5859
/// <summary>
@@ -61,4 +62,25 @@ public interface IDialect
6162
/// <param name="type">The DbType</param>
6263
/// <returns>True if the database type has an unsigned variant, otherwise false</returns>
6364
bool IsUnsignedCompatible(DbType type);
65+
66+
/// <summary>
67+
/// Quotes the string.
68+
/// </summary>
69+
/// <param name="value"></param>
70+
/// <returns></returns>
71+
string Quote(string value);
72+
73+
/// <summary>
74+
/// Quotes the table name if necessary.
75+
/// </summary>
76+
/// <param name="tableName"></param>
77+
/// <returns></returns>
78+
string QuoteTableNameIfRequired(string tableName);
79+
80+
/// <summary>
81+
/// Quotes the column name if necessary.
82+
/// </summary>
83+
/// <param name="columnName"></param>
84+
/// <returns></returns>
85+
string QuoteColumnNameIfRequired(string columnName);
6486
}

0 commit comments

Comments
 (0)