code simplification
This commit is contained in:
@@ -6,17 +6,17 @@ namespace Umbraco.Core.Persistence.DatabaseModelDefinitions
|
|||||||
{
|
{
|
||||||
public ConstraintDefinition(ConstraintType type)
|
public ConstraintDefinition(ConstraintType type)
|
||||||
{
|
{
|
||||||
constraintType = type;
|
_constraintType = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ConstraintType constraintType;
|
private readonly ConstraintType _constraintType;
|
||||||
public bool IsPrimaryKeyConstraint { get { return ConstraintType.PrimaryKey == constraintType; } }
|
public bool IsPrimaryKeyConstraint => ConstraintType.PrimaryKey == _constraintType;
|
||||||
public bool IsUniqueConstraint { get { return ConstraintType.Unique == constraintType; } }
|
public bool IsUniqueConstraint => ConstraintType.Unique == _constraintType;
|
||||||
public bool IsNonUniqueConstraint { get { return ConstraintType.NonUnique == constraintType; } }
|
public bool IsNonUniqueConstraint => ConstraintType.NonUnique == _constraintType;
|
||||||
|
|
||||||
public string SchemaName { get; set; }
|
public string SchemaName { get; set; }
|
||||||
public string ConstraintName { get; set; }
|
public string ConstraintName { get; set; }
|
||||||
public string TableName { get; set; }
|
public string TableName { get; set; }
|
||||||
public ICollection<string> Columns = new HashSet<string>();
|
public ICollection<string> Columns = new HashSet<string>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
namespace Umbraco.Core.Persistence.DatabaseModelDefinitions
|
namespace Umbraco.Core.Persistence.DatabaseModelDefinitions
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -5,9 +7,17 @@ namespace Umbraco.Core.Persistence.DatabaseModelDefinitions
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
internal class DbIndexDefinition
|
internal class DbIndexDefinition
|
||||||
{
|
{
|
||||||
public virtual string IndexName { get; set; }
|
public DbIndexDefinition(Tuple<string, string, string, bool> data)
|
||||||
public virtual string TableName { get; set; }
|
{
|
||||||
public virtual string ColumnName { get; set; }
|
TableName = data.Item1;
|
||||||
public virtual bool IsUnique { get; set; }
|
IndexName = data.Item2;
|
||||||
|
ColumnName = data.Item3;
|
||||||
|
IsUnique = data.Item4;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string IndexName { get; }
|
||||||
|
public string TableName { get; }
|
||||||
|
public string ColumnName { get; }
|
||||||
|
public bool IsUnique { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -159,13 +159,7 @@ namespace Umbraco.Core.Persistence.Migrations.Initial
|
|||||||
|
|
||||||
//get the db index defs
|
//get the db index defs
|
||||||
result.DbIndexDefinitions = _sqlSyntaxProvider.GetDefinedIndexes(_database)
|
result.DbIndexDefinitions = _sqlSyntaxProvider.GetDefinedIndexes(_database)
|
||||||
.Select(x => new DbIndexDefinition()
|
.Select(x => new DbIndexDefinition(x)).ToArray();
|
||||||
{
|
|
||||||
TableName = x.Item1,
|
|
||||||
IndexName = x.Item2,
|
|
||||||
ColumnName = x.Item3,
|
|
||||||
IsUnique = x.Item4
|
|
||||||
}).ToArray();
|
|
||||||
|
|
||||||
foreach (var item in OrderedTables.OrderBy(x => x.Key))
|
foreach (var item in OrderedTables.OrderBy(x => x.Key))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -28,13 +28,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven
|
|||||||
public override void Up()
|
public override void Up()
|
||||||
{
|
{
|
||||||
var dbIndexes = _skipIndexCheck ? new DbIndexDefinition[]{} : SqlSyntax.GetDefinedIndexes(Context.Database)
|
var dbIndexes = _skipIndexCheck ? new DbIndexDefinition[]{} : SqlSyntax.GetDefinedIndexes(Context.Database)
|
||||||
.Select(x => new DbIndexDefinition()
|
.Select(x => new DbIndexDefinition(x)).ToArray();
|
||||||
{
|
|
||||||
TableName = x.Item1,
|
|
||||||
IndexName = x.Item2,
|
|
||||||
ColumnName = x.Item3,
|
|
||||||
IsUnique = x.Item4
|
|
||||||
}).ToArray();
|
|
||||||
|
|
||||||
//make sure it doesn't already exist
|
//make sure it doesn't already exist
|
||||||
if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_cmsMacroProperty_Alias")) == false)
|
if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_cmsMacroProperty_Alias")) == false)
|
||||||
@@ -54,4 +48,4 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven
|
|||||||
Delete.Index("IX_cmsMacroProperty_Alias").OnTable("cmsMacroProperty");
|
Delete.Index("IX_cmsMacroProperty_Alias").OnTable("cmsMacroProperty");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,13 +30,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven
|
|||||||
public override void Up()
|
public override void Up()
|
||||||
{
|
{
|
||||||
var dbIndexes = _forTesting ? new DbIndexDefinition[] { } : SqlSyntax.GetDefinedIndexes(Context.Database)
|
var dbIndexes = _forTesting ? new DbIndexDefinition[] { } : SqlSyntax.GetDefinedIndexes(Context.Database)
|
||||||
.Select(x => new DbIndexDefinition()
|
.Select(x => new DbIndexDefinition(x)).ToArray();
|
||||||
{
|
|
||||||
TableName = x.Item1,
|
|
||||||
IndexName = x.Item2,
|
|
||||||
ColumnName = x.Item3,
|
|
||||||
IsUnique = x.Item4
|
|
||||||
}).ToArray();
|
|
||||||
|
|
||||||
//make sure it doesn't already exist
|
//make sure it doesn't already exist
|
||||||
if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_cmsMacro_Alias")) == false)
|
if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_cmsMacro_Alias")) == false)
|
||||||
@@ -75,4 +69,4 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven
|
|||||||
Delete.Index("IX_cmsMacro_Alias").OnTable("cmsMacro");
|
Delete.Index("IX_cmsMacro_Alias").OnTable("cmsMacro");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,13 +18,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven
|
|||||||
public override void Up()
|
public override void Up()
|
||||||
{
|
{
|
||||||
var dbIndexes = SqlSyntax.GetDefinedIndexes(Context.Database)
|
var dbIndexes = SqlSyntax.GetDefinedIndexes(Context.Database)
|
||||||
.Select(x => new DbIndexDefinition()
|
.Select(x => new DbIndexDefinition(x)).ToArray();
|
||||||
{
|
|
||||||
TableName = x.Item1,
|
|
||||||
IndexName = x.Item2,
|
|
||||||
ColumnName = x.Item3,
|
|
||||||
IsUnique = x.Item4
|
|
||||||
}).ToArray();
|
|
||||||
|
|
||||||
//add a foreign key to the parent id column too!
|
//add a foreign key to the parent id column too!
|
||||||
|
|
||||||
@@ -54,4 +48,4 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven
|
|||||||
throw new DataLossException("Cannot downgrade from a version 7 database to a prior version, the database schema has already been modified");
|
throw new DataLossException("Cannot downgrade from a version 7 database to a prior version, the database schema has already been modified");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,13 +26,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven
|
|||||||
// it is absolutely required to exist in order to have it as a foreign key reference, so we'll need to check it's existence
|
// it is absolutely required to exist in order to have it as a foreign key reference, so we'll need to check it's existence
|
||||||
// this came to light from this issue: http://issues.umbraco.org/issue/U4-4133
|
// this came to light from this issue: http://issues.umbraco.org/issue/U4-4133
|
||||||
var dbIndexes = SqlSyntax.GetDefinedIndexes(Context.Database)
|
var dbIndexes = SqlSyntax.GetDefinedIndexes(Context.Database)
|
||||||
.Select(x => new DbIndexDefinition()
|
.Select(x => new DbIndexDefinition(x)).ToArray();
|
||||||
{
|
|
||||||
TableName = x.Item1,
|
|
||||||
IndexName = x.Item2,
|
|
||||||
ColumnName = x.Item3,
|
|
||||||
IsUnique = x.Item4
|
|
||||||
}).ToArray();
|
|
||||||
if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_cmsContent")) == false)
|
if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_cmsContent")) == false)
|
||||||
{
|
{
|
||||||
Create.Index("IX_cmsContent").OnTable("cmsContent").OnColumn("nodeId").Ascending().WithOptions().Unique();
|
Create.Index("IX_cmsContent").OnTable("cmsContent").OnColumn("nodeId").Ascending().WithOptions().Unique();
|
||||||
@@ -95,4 +89,4 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven
|
|||||||
//don't do anything, these keys should have always existed!
|
//don't do anything, these keys should have always existed!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,13 +62,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZe
|
|||||||
}
|
}
|
||||||
|
|
||||||
var dbIndexes = SqlSyntax.GetDefinedIndexes(Context.Database)
|
var dbIndexes = SqlSyntax.GetDefinedIndexes(Context.Database)
|
||||||
.Select(x => new DbIndexDefinition
|
.Select(x => new DbIndexDefinition(x)).ToArray();
|
||||||
{
|
|
||||||
TableName = x.Item1,
|
|
||||||
IndexName = x.Item2,
|
|
||||||
ColumnName = x.Item3,
|
|
||||||
IsUnique = x.Item4
|
|
||||||
}).ToArray();
|
|
||||||
|
|
||||||
//make sure it doesn't already exist
|
//make sure it doesn't already exist
|
||||||
if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_cmsDictionary_id")) == false)
|
if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_cmsDictionary_id")) == false)
|
||||||
@@ -104,4 +98,4 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZe
|
|||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -120,13 +120,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZe
|
|||||||
|
|
||||||
|
|
||||||
var dbIndexes = SqlSyntax.GetDefinedIndexes(Context.Database)
|
var dbIndexes = SqlSyntax.GetDefinedIndexes(Context.Database)
|
||||||
.Select(x => new DbIndexDefinition()
|
.Select(x => new DbIndexDefinition(x)).ToArray();
|
||||||
{
|
|
||||||
TableName = x.Item1,
|
|
||||||
IndexName = x.Item2,
|
|
||||||
ColumnName = x.Item3,
|
|
||||||
IsUnique = x.Item4
|
|
||||||
}).ToArray();
|
|
||||||
|
|
||||||
//in some databases there's an index (IX_Master) on the master column which needs to be dropped first
|
//in some databases there's an index (IX_Master) on the master column which needs to be dropped first
|
||||||
var foundIndex = dbIndexes.FirstOrDefault(x => x.TableName.InvariantEquals("cmsTemplate") && x.ColumnName.InvariantEquals("master"));
|
var foundIndex = dbIndexes.FirstOrDefault(x => x.TableName.InvariantEquals("cmsTemplate") && x.ColumnName.InvariantEquals("master"));
|
||||||
@@ -167,4 +161,4 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZe
|
|||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,13 +15,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZe
|
|||||||
public override void Up()
|
public override void Up()
|
||||||
{
|
{
|
||||||
var indexes = SqlSyntax.GetDefinedIndexes(Context.Database)
|
var indexes = SqlSyntax.GetDefinedIndexes(Context.Database)
|
||||||
.Select(x => new DbIndexDefinition()
|
.Select(x => new DbIndexDefinition(x)).ToArray();
|
||||||
{
|
|
||||||
TableName = x.Item1,
|
|
||||||
IndexName = x.Item2,
|
|
||||||
ColumnName = x.Item3,
|
|
||||||
IsUnique = x.Item4
|
|
||||||
}).ToArray();
|
|
||||||
|
|
||||||
// drop the index if it exists
|
// drop the index if it exists
|
||||||
if (indexes.Any(x => x.IndexName.InvariantEquals("IX_umbracoNodeUniqueID")))
|
if (indexes.Any(x => x.IndexName.InvariantEquals("IX_umbracoNodeUniqueID")))
|
||||||
@@ -38,4 +32,4 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenThreeZe
|
|||||||
public override void Down()
|
public override void Down()
|
||||||
{ }
|
{ }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,14 +48,8 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenTwoZero
|
|||||||
//Some very old schemas don't have an index on the cmsContentType.nodeId column, I'm not actually sure when it was added but
|
//Some very old schemas don't have an index on the cmsContentType.nodeId column, I'm not actually sure when it was added but
|
||||||
// it is absolutely required to exist in order to add other foreign keys and much better for perf, so we'll need to check it's existence
|
// it is absolutely required to exist in order to add other foreign keys and much better for perf, so we'll need to check it's existence
|
||||||
// this came to light from this issue: http://issues.umbraco.org/issue/U4-4133
|
// this came to light from this issue: http://issues.umbraco.org/issue/U4-4133
|
||||||
var dbIndexes = SqlSyntaxContext.SqlSyntaxProvider.GetDefinedIndexes(Context.Database)
|
var dbIndexes = SqlSyntax.GetDefinedIndexes(Context.Database)
|
||||||
.Select(x => new DbIndexDefinition()
|
.Select(x => new DbIndexDefinition(x)).ToArray();
|
||||||
{
|
|
||||||
TableName = x.Item1,
|
|
||||||
IndexName = x.Item2,
|
|
||||||
ColumnName = x.Item3,
|
|
||||||
IsUnique = x.Item4
|
|
||||||
}).ToArray();
|
|
||||||
if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_cmsContentType")) == false)
|
if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_cmsContentType")) == false)
|
||||||
{
|
{
|
||||||
Create.Index("IX_cmsContentType").OnTable("cmsContentType").OnColumn("nodeId").Ascending().WithOptions().Unique();
|
Create.Index("IX_cmsContentType").OnTable("cmsContentType").OnColumn("nodeId").Ascending().WithOptions().Unique();
|
||||||
@@ -82,4 +76,4 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSevenTwoZero
|
|||||||
throw new DataLossException("Cannot downgrade from a version 7.2 database to a prior version, the database schema has already been modified");
|
throw new DataLossException("Cannot downgrade from a version 7.2 database to a prior version, the database schema has already been modified");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,13 +20,7 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSixTwoZero
|
|||||||
{
|
{
|
||||||
|
|
||||||
var dbIndexes = SqlSyntax.GetDefinedIndexes(Context.Database)
|
var dbIndexes = SqlSyntax.GetDefinedIndexes(Context.Database)
|
||||||
.Select(x => new DbIndexDefinition()
|
.Select(x => new DbIndexDefinition(x)).ToArray();
|
||||||
{
|
|
||||||
TableName = x.Item1,
|
|
||||||
IndexName = x.Item2,
|
|
||||||
ColumnName = x.Item3,
|
|
||||||
IsUnique = x.Item4
|
|
||||||
}).ToArray();
|
|
||||||
|
|
||||||
//do not create any indexes if they already exist in the database
|
//do not create any indexes if they already exist in the database
|
||||||
|
|
||||||
@@ -118,4 +112,4 @@ DROP TABLE ""umbracoUserLogins_temp""");
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,13 +9,7 @@ namespace Umbraco.Core.Persistence.SqlSyntax
|
|||||||
public static IEnumerable<DbIndexDefinition> GetDefinedIndexesDefinitions(this ISqlSyntaxProvider sql, Database db)
|
public static IEnumerable<DbIndexDefinition> GetDefinedIndexesDefinitions(this ISqlSyntaxProvider sql, Database db)
|
||||||
{
|
{
|
||||||
return sql.GetDefinedIndexes(db)
|
return sql.GetDefinedIndexes(db)
|
||||||
.Select(x => new DbIndexDefinition()
|
.Select(x => new DbIndexDefinition(x)).ToArray();
|
||||||
{
|
|
||||||
TableName = x.Item1,
|
|
||||||
IndexName = x.Item2,
|
|
||||||
ColumnName = x.Item3,
|
|
||||||
IsUnique = x.Item4
|
|
||||||
}).ToArray();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -57,4 +51,4 @@ namespace Umbraco.Core.Persistence.SqlSyntax
|
|||||||
In,
|
In,
|
||||||
NotIn
|
NotIn
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user