Skip to content

Commit 68b11f4

Browse files
committed
Fixed up the behavior of joining table transformation provider extensions to be consistent with the existing migrations in some of our apps (i.e. removing common words is applied when generating foreign keys, but not primary keys for joining tables). At some point we will "reset" the clock on these projects migrations so we can abandon these hacks (i.e. for the next major version start from a single migration to create everything, and require customers upgrading products from older versions to upgrade to the second to last version, prior to upgrading to the next major version).
1 parent 04bd6b5 commit 68b11f4

File tree

3 files changed

+27
-15
lines changed

3 files changed

+27
-15
lines changed

src/Migrator.Framework/JoiningTableTransformationProviderExtensions.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@ static string GetNameOfJoiningTable(string lhsTableName, string rhsTableName)
2828
return (Inflector.Singularize(lhsTableName) ?? lhsTableName) + (Inflector.Pluralize(rhsTableName) ?? rhsTableName);
2929
}
3030

31-
public static ITransformationProvider AddManyToManyJoiningTable(this ITransformationProvider database, string schema, string lhsTableName, string lhsKey, string rhsTableName, string rhsKey,
32-
string joiningTableName)
31+
public static ITransformationProvider AddManyToManyJoiningTable(this ITransformationProvider database, string schema, string lhsTableName, string lhsKey, string rhsTableName, string rhsKey, string joiningTableName)
3332
{
3433
string joiningTableWithSchema = TransformationProviderUtility.FormatTableName(schema, joiningTableName);
3534

@@ -60,7 +59,7 @@ public static ITransformationProvider AddManyToManyJoiningTable(this ITransforma
6059

6160
static string ShortenKeyNameToBeSuitableForOracle(string pkName)
6261
{
63-
return TransformationProviderUtility.AdjustNameToSize(pkName, TransformationProviderUtility.MaxLengthForForeignKeyInOracle);
62+
return TransformationProviderUtility.AdjustNameToSize(pkName, TransformationProviderUtility.MaxLengthForForeignKeyInOracle, false);
6463
}
6564

6665
public static ITransformationProvider RemoveManyToManyJoiningTable(this ITransformationProvider database, string schema, string lhsTableName, string rhsTableName)

src/Migrator.Framework/Support/TransformationProviderUtility.cs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,24 @@ public static class TransformationProviderUtility
66
{
77
public const int MaxLengthForForeignKeyInOracle = 30;
88
static readonly ILog log = LogManager.GetLogger(typeof (TransformationProviderUtility));
9+
static readonly string[] CommonWords = new[] {"Test"};
910

1011
public static string CreateForeignKeyName(string tableName, string foreignKeyTableName)
1112
{
1213
string fkName = string.Format("FK_{0}_{1}", tableName, foreignKeyTableName);
1314

14-
return AdjustNameToSize(fkName, MaxLengthForForeignKeyInOracle);
15+
return AdjustNameToSize(fkName, MaxLengthForForeignKeyInOracle, true);
1516
}
1617

17-
public static string AdjustNameToSize(string name, int totalCharacters)
18+
public static string AdjustNameToSize(string name, int totalCharacters, bool removeCommmonWords)
1819
{
1920
string adjustedName = name;
2021

2122
if (adjustedName.Length > totalCharacters)
2223
{
23-
if (adjustedName.Contains("Test"))
24+
if (removeCommmonWords)
2425
{
25-
adjustedName = adjustedName.Replace("Test", "");
26+
adjustedName = RemoveCommonWords(adjustedName);
2627
}
2728
}
2829

@@ -36,6 +37,18 @@ public static string AdjustNameToSize(string name, int totalCharacters)
3637
return adjustedName;
3738
}
3839

40+
static string RemoveCommonWords(string adjustedName)
41+
{
42+
foreach (var word in CommonWords)
43+
{
44+
if (adjustedName.Contains(word))
45+
{
46+
adjustedName = adjustedName.Replace(word, string.Empty);
47+
}
48+
}
49+
return adjustedName;
50+
}
51+
3952
public static string FormatTableName(string schema, string tableName)
4053
{
4154
return string.IsNullOrEmpty(schema) ? tableName : string.Format("{0}.{1}", schema, tableName);

src/Migrator.Providers/Impl/Oracle/OracleTransformationProvider.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -263,14 +263,6 @@ public override void AddTable(string name, params Column[] columns)
263263
base.AddTable(name, columns);
264264
}
265265

266-
public override string Encode(Guid guid)
267-
{
268-
byte[] bytes = guid.ToByteArray();
269-
var hex = new StringBuilder(bytes.Length * 2);
270-
foreach (byte b in bytes) hex.AppendFormat("{0:X2}", b);
271-
return hex.ToString();
272-
}
273-
274266
void GuardAgainstMaximumColumnNameLengthForOracle(string name, Column[] columns)
275267
{
276268
foreach (Column column in columns)
@@ -283,5 +275,13 @@ void GuardAgainstMaximumColumnNameLengthForOracle(string name, Column[] columns)
283275
}
284276
}
285277
}
278+
279+
public override string Encode(Guid guid)
280+
{
281+
byte[] bytes = guid.ToByteArray();
282+
var hex = new StringBuilder(bytes.Length*2);
283+
foreach (byte b in bytes) hex.AppendFormat("{0:X2}", b);
284+
return hex.ToString();
285+
}
286286
}
287287
}

0 commit comments

Comments
 (0)