public override void Up() { //Now we need to check if we can actually do this because we won't be able to if there's data in there that is too long Execute.Code(database => { var dbIndexes = SqlSyntax.GetDefinedIndexesDefinitions(database); var colLen = (SqlSyntax is MySqlSyntaxProvider) ? database.ExecuteScalar <int?>(string.Format("select max(LENGTH({0})) from cmsDictionary", SqlSyntax.GetQuotedColumnName("key"))) : database.ExecuteScalar <int?>(string.Format("select max(datalength({0})) from cmsDictionary", SqlSyntax.GetQuotedColumnName("key"))); if (colLen < 900 == false) { return(null); } var localContext = new LocalMigrationContext(Context.CurrentDatabaseProvider, database, SqlSyntax, Logger); //if it exists we need to drop it first if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_cmsDictionary_key"))) { localContext.Delete.Index("IX_cmsDictionary_key").OnTable("cmsDictionary"); } //we can apply the col length change localContext.Alter.Table("cmsDictionary") .AlterColumn("key") .AsString(450) .NotNullable(); return(localContext.GetSql()); }); }
public override void Up() { Execute.Code(database => { var userGroups = database.Fetch <UserGroupDto>( new Sql().Select("*") .From <UserGroupDto>(SqlSyntax) .Where <UserGroupDto>(x => x.Alias == "admin" || x.Alias == "editor", SqlSyntax)); var localContext = new LocalMigrationContext(Context.CurrentDatabaseProvider, database, SqlSyntax, Logger); foreach (var userGroup in userGroups) { if (userGroup.DefaultPermissions.Contains('ï') == false) { userGroup.DefaultPermissions += "ï"; localContext.Update.Table("umbracoUserGroup") .Set(new { userGroupDefaultPermissions = userGroup.DefaultPermissions }) .Where(new { id = userGroup.Id }); } } return(localContext.GetSql()); }); }
public override void Up() { Execute.Code(database => { //Now we need to check if we can actually do this because we won't be able to if there's data in there that is too long var colLen = (SqlSyntax is MySqlSyntaxProvider) ? database.ExecuteScalar <int?>(string.Format("select max(LENGTH({0})) from cmsDictionary", SqlSyntax.GetQuotedColumnName("key"))) : database.ExecuteScalar <int?>(string.Format("select max(datalength({0})) from cmsDictionary", SqlSyntax.GetQuotedColumnName("key"))); if (colLen < 900 == false && colLen != null) { return(null); } var dbIndexes = SqlSyntax.GetDefinedIndexesDefinitions(Context.Database); //make sure it doesn't already exist if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_cmsDictionary_key")) == false) { var localContext = new LocalMigrationContext(Context.CurrentDatabaseProvider, database, SqlSyntax, Logger); //we can apply the index localContext.Create.Index("IX_cmsDictionary_key").OnTable("cmsDictionary") .OnColumn("key") .Ascending() .WithOptions() .NonClustered(); return(localContext.GetSql()); } return(null); }); }
public override void Up() { //Now we need to check if we can actually d6 this because we won't be able to if there's data in there that is too long //http://issues.umbraco.org/issue/U4-9758 Execute.Code(database => { var dbIndexes = SqlSyntax.GetDefinedIndexesDefinitions(database); var colLen = (SqlSyntax is MySqlSyntaxProvider) ? database.ExecuteScalar <int?>("select max(LENGTH(LoginName)) from cmsMember") : database.ExecuteScalar <int?>("select max(datalength(LoginName)) from cmsMember"); if (colLen < 900 == false) { return(null); } var localContext = new LocalMigrationContext(Context.CurrentDatabaseProvider, database, SqlSyntax, Logger); //if it exists we need to drop it first if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_cmsMember_LoginName"))) { localContext.Delete.Index("IX_cmsMember_LoginName").OnTable("cmsMember"); } //we can apply the col length change localContext.Alter.Table("cmsMember") .AlterColumn("LoginName") .AsString(225) .NotNullable(); return(localContext.GetSql()); }); }
public override void Up() { Execute.Code(database => { var localContext = new LocalMigrationContext(Context.CurrentDatabaseProvider, database, SqlSyntax, Logger); // Some people seem to have a constraint in their DB instead of an index, we'd need to drop that one // See: https://our.umbraco.com/forum/using-umbraco-and-getting-started/93282-upgrade-from-711-to-712-fails var constraints = SqlSyntax.GetConstraintsPerTable(database).Distinct().ToArray(); if (constraints.Any(x => x.Item2.InvariantEquals("IX_umbracoLanguage_languageISOCode"))) { localContext.Delete.UniqueConstraint("IX_umbracoLanguage_languageISOCode").FromTable("umbracoLanguage"); return(localContext.GetSql()); } return(null); }); Execute.Code(database => { var localContext = new LocalMigrationContext(Context.CurrentDatabaseProvider, database, SqlSyntax, Logger); //Now check for indexes of that name and drop that if it exists var dbIndexes = SqlSyntax.GetDefinedIndexes(database) .Select(x => new DbIndexDefinition(x)).ToArray(); if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_umbracoLanguage_languageISOCode"))) { localContext.Delete.Index("IX_umbracoLanguage_languageISOCode").OnTable("umbracoLanguage"); return(localContext.GetSql()); } return(null); }); Alter.Table("umbracoLanguage") .AlterColumn("languageISOCode") .AsString(14) .Nullable(); Create.Index("IX_umbracoLanguage_languageISOCode") .OnTable("umbracoLanguage") .OnColumn("languageISOCode") .Ascending() .WithOptions() .Unique(); }
private string MigrationCode(Database database) { var umbracoRedirectUrlTableName = "umbracoRedirectUrl"; var localContext = new LocalMigrationContext(Context.CurrentDatabaseProvider, database, SqlSyntax, Logger); var tables = SqlSyntax.GetTablesInSchema(database).ToArray(); if (tables.InvariantContains(umbracoRedirectUrlTableName)) { var columns = SqlSyntax.GetColumnsInSchema(database).ToArray(); if (columns.Any(x => x.TableName.InvariantEquals(umbracoRedirectUrlTableName) && x.ColumnName.InvariantEquals("id") && x.DataType == "uniqueidentifier")) { return(null); } localContext.Delete.Table(umbracoRedirectUrlTableName); } localContext.Create.Table(umbracoRedirectUrlTableName) .WithColumn("id").AsGuid().NotNullable().PrimaryKey("PK_" + umbracoRedirectUrlTableName) .WithColumn("createDateUtc").AsDateTime().NotNullable() .WithColumn("url").AsString(2048).NotNullable() .WithColumn("contentKey").AsGuid().NotNullable() .WithColumn("urlHash").AsString(40).NotNullable(); localContext.Create.Index("IX_" + umbracoRedirectUrlTableName).OnTable(umbracoRedirectUrlTableName) .OnColumn("urlHash") .Ascending() .OnColumn("contentKey") .Ascending() .OnColumn("createDateUtc") .Descending() .WithOptions().NonClustered(); localContext.Create.ForeignKey("FK_" + umbracoRedirectUrlTableName) .FromTable(umbracoRedirectUrlTableName).ForeignColumn("contentKey") .ToTable("umbracoNode").PrimaryColumn("uniqueID"); return(localContext.GetSql()); }
public override void Up() { //Now we need to check if we can actually d6 this because we won't be able to if there's data in there that is too long //http://issues.umbraco.org/issue/U4-9758 Execute.Code(database => { var dbIndexes = SqlSyntax.GetDefinedIndexesDefinitions(database); var colLen = (SqlSyntax is MySqlSyntaxProvider) ? database.ExecuteScalar <int?>("select max(LENGTH(LoginName)) from cmsMember") : database.ExecuteScalar <int?>("select max(datalength(LoginName)) from cmsMember"); if (colLen < 900 == false) { return(null); } var localContext = new LocalMigrationContext(Context.CurrentDatabaseProvider, database, SqlSyntax, Logger); //if an index exists on this table we need to drop it. Normally we'd check via index name but in some odd cases (i.e. Our) //the index name is something odd (starts with "mi_"). In any case, the index cannot exist if we want to alter the column //so we'll drop whatever index is there and add one with the correct name after. var loginNameIndex = dbIndexes.FirstOrDefault(x => x.TableName.InvariantEquals("cmsMember") && x.ColumnName.InvariantEquals("LoginName")); if (loginNameIndex != null) { localContext.Delete.Index(loginNameIndex.IndexName).OnTable("cmsMember"); } //we can apply the col length change localContext.Alter.Table("cmsMember") .AlterColumn("LoginName") .AsString(225) .NotNullable(); return(localContext.GetSql()); }); }
public override void Up() { Execute.Code(database => { var dbIndexes = SqlSyntax.GetDefinedIndexesDefinitions(database); //make sure it doesn't already exist if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_cmsPropertyTypeAlias")) == false) { var localContext = new LocalMigrationContext(Context.CurrentDatabaseProvider, database, SqlSyntax, Logger); //we can apply the index localContext.Create.Index("IX_cmsPropertyTypeAlias").OnTable("cmsPropertyType") .OnColumn("Alias") .Ascending() .WithOptions() .NonClustered(); return(localContext.GetSql()); } return(null); }); }
private string MigrationCode(Database database) { var localContext = new LocalMigrationContext(Context.CurrentDatabaseProvider, database, SqlSyntax, Logger); //Clear all stylesheet data if the tables exist var tables = SqlSyntax.GetTablesInSchema(Context.Database).ToArray(); if (tables.InvariantContains("cmsStylesheetProperty")) { localContext.Delete.FromTable("cmsStylesheetProperty").AllRows(); localContext.Delete.FromTable("umbracoNode").Row(new { nodeObjectType = new Guid(Constants.ObjectTypes.StylesheetProperty) }); localContext.Delete.Table("cmsStylesheetProperty"); } if (tables.InvariantContains("cmsStylesheet")) { localContext.Delete.FromTable("cmsStylesheet").AllRows(); localContext.Delete.FromTable("umbracoNode").Row(new { nodeObjectType = new Guid(Constants.ObjectTypes.Stylesheet) }); localContext.Delete.Table("cmsStylesheet"); } return(localContext.GetSql()); }