Checks for index existence before trying to add

This commit is contained in:
Shannon
2014-03-12 18:52:05 +11:00
parent 9d7d866467
commit 0c4e442578
3 changed files with 70 additions and 12 deletions

View File

@@ -1,5 +1,8 @@
using System;
using System.Linq;
using Umbraco.Core.Configuration;
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
using Umbraco.Core.Persistence.SqlSyntax;
namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven
{
@@ -11,11 +14,26 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven
{
public override void Up()
{
Create.Index("IX_cmsMacroProperty_Alias").OnTable("cmsMacroProperty")
var dbIndexes = SqlSyntaxContext.SqlSyntaxProvider.GetDefinedIndexes(Context.Database)
.Select(x => new DbIndexDefinition()
{
TableName = x.Item1,
IndexName = x.Item2,
ColumnName = x.Item3,
IsUnique = x.Item4
}).ToArray();
//make sure it doesn't already exist
if (dbIndexes.Any(x => x.IndexName == "IX_cmsMacroProperty_Alias") == false)
{
Create.Index("IX_cmsMacroProperty_Alias").OnTable("cmsMacroProperty")
.OnColumn("macro")
.Ascending()
.OnColumn("macroPropertyAlias")
.Unique();
}
}
public override void Down()

View File

@@ -1,5 +1,8 @@
using System;
using System.Linq;
using Umbraco.Core.Configuration;
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
using Umbraco.Core.Persistence.SqlSyntax;
namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven
{
@@ -11,7 +14,21 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven
{
public override void Up()
{
Create.Index("IX_cmsMacro_Alias").OnTable("cmsMacro").OnColumn("macroAlias").Unique();
var dbIndexes = SqlSyntaxContext.SqlSyntaxProvider.GetDefinedIndexes(Context.Database)
.Select(x => new DbIndexDefinition()
{
TableName = x.Item1,
IndexName = x.Item2,
ColumnName = x.Item3,
IsUnique = x.Item4
}).ToArray();
//make sure it doesn't already exist
if (dbIndexes.Any(x => x.IndexName == "IX_cmsMacro_Alias") == false)
{
Create.Index("IX_cmsMacro_Alias").OnTable("cmsMacro").OnColumn("macroAlias").Unique();
}
}
public override void Down()

View File

@@ -1,6 +1,9 @@
using System;
using System.Data;
using System.Linq;
using Umbraco.Core.Configuration;
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
using Umbraco.Core.Persistence.SqlSyntax;
namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven
{
@@ -9,17 +12,37 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSeven
{
public override void Up()
{
//add a foreign key to the parent id column too!
Create.ForeignKey("FK_cmsTags_cmsTags")
.FromTable("cmsTags")
.ForeignColumn("ParentId")
.ToTable("cmsTags")
.PrimaryColumn("id")
.OnDelete(Rule.None)
.OnUpdate(Rule.None);
var dbIndexes = SqlSyntaxContext.SqlSyntaxProvider.GetDefinedIndexes(Context.Database)
.Select(x => new DbIndexDefinition()
{
TableName = x.Item1,
IndexName = x.Item2,
ColumnName = x.Item3,
IsUnique = x.Item4
}).ToArray();
//add an index to tag/group since it's queried often
Create.Index("IX_cmsTags").OnTable("cmsTags").OnColumn("tag").Ascending().OnColumn("group").Ascending().WithOptions().NonClustered();
var constraints = SqlSyntaxContext.SqlSyntaxProvider.GetConstraintsPerColumn(Context.Database).DistinctBy(x => x.Item3).ToList();
//make sure it doesn't already exist
if (constraints.Any(x => x.Item3 == "FK_cmsTags_cmsTags") == false)
{
//add a foreign key to the parent id column too!
Create.ForeignKey("FK_cmsTags_cmsTags")
.FromTable("cmsTags")
.ForeignColumn("ParentId")
.ToTable("cmsTags")
.PrimaryColumn("id")
.OnDelete(Rule.None)
.OnUpdate(Rule.None);
}
//make sure it doesn't already exist
if (dbIndexes.Any(x => x.IndexName == "IX_cmsTags") == false)
{
//add an index to tag/group since it's queried often
Create.Index("IX_cmsTags").OnTable("cmsTags").OnColumn("tag").Ascending().OnColumn("group").Ascending().WithOptions().NonClustered();
}
}
public override void Down()