private void _migrate_Action(MigrateManager m, ApiAction e) { this.UIThread(delegate { if (e == null) { return; } progressBarFinish.Value = e.Count > progressBarFinish.Maximum ? progressBarFinish.Maximum : e.Count; labelFinisDomain.Text = e.DomainName; labelFinishMessage.Text = e.Message; labelFinishCounter.Text = String.Format("{0}/{1}", e.Count, progressbarMaximum); labelFinishErrorCount.Text = e.ErrorCount.ToString(); if (executeTask.IsCompleted) { MessageBox.Show("Migration Complete", "", MessageBoxButtons.OK, MessageBoxIcon.Information); buttonShowLogs.Enabled = true; } if (executeTask.IsCanceled) { MessageBox.Show("Operation cancelled by user", "", MessageBoxButtons.OK, MessageBoxIcon.Warning); buttonShowLogs.Enabled = true; } if (executeTask.IsFaulted) { MessageBox.Show("Error: " + executeTask.Exception.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error); buttonShowLogs.Enabled = true; } }); }
/// <summary> /// /// </summary> private static void RegisterDatabaseCommands(MigrateManager migrateManager) { migrateManager.ServicesContainer.RegisterTransient <ICreateTableCommand, PostgresCreateTableCommand>(); migrateManager.ServicesContainer.RegisterTransient <IRenameTableCommand, PostgresRenameTableCommand>(); migrateManager.ServicesContainer.RegisterTransient <IDropTableCommand, PostgresDropTableCommand>(); migrateManager.ServicesContainer.RegisterTransient <ITableValuesCommand, PostgresTableValuesCommand>(); migrateManager.ServicesContainer.RegisterTransient <ICreateColumnCommand, PostgresCreateColumnCommand>(); migrateManager.ServicesContainer.RegisterTransient <IAlterColumnCommand, PostgresAlterColumnCommand>(); migrateManager.ServicesContainer.RegisterTransient <IRenameColumnCommand, PostgresRenameColumnCommand>(); migrateManager.ServicesContainer.RegisterTransient <IDropColumnCommand, PostgresDropColumnCommand>(); migrateManager.ServicesContainer.RegisterTransient <ICreateColumnDefaultValueCommand, PostgresCreateColumnDefaultValueCommand>(); migrateManager.ServicesContainer.RegisterTransient <IDropColumnDefaultValueCommand, PostgresDropColumnDefaultValueCommand>(); migrateManager.ServicesContainer.RegisterTransient <ICreateUniqueKeyCommand, PostgresCreateUniqueCommand>(); migrateManager.ServicesContainer.RegisterTransient <IDropUniqueKeyCommand, PostgresDropUniqueCommand>(); migrateManager.ServicesContainer.RegisterTransient <ICreatePrimaryKeyCommand, PostgresCreatePrimaryKeyCommand>(); migrateManager.ServicesContainer.RegisterTransient <IDropPrimaryKeyCommand, PostgresDropPrimaryKeyCommand>(); migrateManager.ServicesContainer.RegisterTransient <ICreateForeignKeyCommand, PostgresCreateForeignKeyCommand>(); migrateManager.ServicesContainer.RegisterTransient <IDropForeignKeyCommand, PostgresDropForeignKeyCommand>(); migrateManager.ServicesContainer.Register <IBeforeActualizationScriptCommand, PostgresBeforeActualizationScriptCommand>(); migrateManager.ServicesContainer.Register <IAfterActualizationScriptCommand, PostgresAfterActualizationScriptCommand>(); }
/// <summary> /// /// </summary> /// <returns></returns> public static MigrateManager UseEfCodeTablesManager(this MigrateManager migrateManager) { migrateManager.ServicesContainer.Register <ICodeTablesManager, EfCodeTablesManager>(); migrateManager.ServicesContainer.Register <IMigrateValidator, EntityFrameworkMigrationValidator>(); migrateManager.ServicesContainer.Register <ITableFinder, TableFinder>(); migrateManager.UseSafeMode(); return(migrateManager); }
/// <summary> /// /// </summary> /// <returns></returns> public static MigrateManager UseMetadataManager(this MigrateManager migrateManager) { migrateManager.ServicesContainer.Register <ICodeTablesManager, MetadataCodeTablesManager>(); migrateManager.ServicesContainer.Register <IMigrateValidator, MetadataMigrationValidator>(); migrateManager.ServicesContainer.Register <MetadataManager>(); migrateManager.UseSafeMode(); return(migrateManager); }
/// <summary> /// /// </summary> /// <param name="args"></param> static void Main(string[] args) { MigrateManager.Create(ConnectionString) .UseSqlServerDatabase() .UseMetadataManager() .Migrate(); Console.WriteLine("Migrate success"); Console.ReadLine(); }
/// <summary> /// /// </summary> /// <returns></returns> public static MigrateManager UseMySqlServerDatabase(this MigrateManager migrateManager) { migrateManager.ServicesContainer.Register <IDatabaseTablesManager, MySqlDatabaseTablesManager>(); migrateManager.ServicesContainer.Register <IDatabaseCreator, MySqlDatabaseCreator>(); migrateManager.ServicesContainer.Register <IMigrationsHistoryRepository, MySqlMigrationsHistoryRepository>(); migrateManager.ServicesContainer.Register <IColumnTypeMappingSource, MySqlColumnTypeMappingSource>(); RegisterDatabaseCommands(migrateManager); return(migrateManager); }
/// <summary> /// /// </summary> /// <param name="args"></param> static void Main(string[] args) { MigrateManager.Create(ConnectionString) .UsePostgresServerDatabase() .UseEfCodeTablesManager() .Migrate(); Console.WriteLine("Migrate success"); Console.ReadLine(); }
/// <summary> /// /// </summary> /// <param name="args"></param> static void Main(string[] args) { TableAttribute.DefaultSchema = "testmetadatamigrator"; MigrateManager.Create(ConnectionString) .UseMySqlServerDatabase() .UseMetadataManager() .Migrate(); Console.WriteLine("Migrate success"); Console.ReadLine(); }
/// <summary> /// /// </summary> /// <param name="table"></param> /// <param name="foreignKeyMetadata"></param> /// <returns></returns> private ForeignKeyInfo GetForeignKey(MetadataTableInfo table, ForeignKeyMetadata foreignKeyMetadata) { var foreignKey = new ForeignKeyInfo(); foreignKey.Name = foreignKeyMetadata.Name; foreignKey.Column = table.GetColumn(foreignKeyMetadata.Column.Name); foreignKey.Table = table; foreignKey.ReferenceTable = GetReferenceTable(foreignKeyMetadata); foreignKey.ReferenceColumn = GetReferenceColumn(foreignKey, foreignKeyMetadata); MigrateManager.CorrectName(foreignKey); return(foreignKey); }
/// <summary> /// /// </summary> /// <param name="tableInfo"></param> /// <param name="columnMetadata"></param> /// <returns></returns> private ColumnInfo GetColumn(TableInfo tableInfo, ColumnMetadata columnMetadata) { var columnInfo = new ColumnInfo(); columnInfo.Table = tableInfo; columnInfo.IsAllowNull = columnMetadata.IsAllowNull; columnInfo.Name = columnMetadata.Name; columnInfo.Description = columnMetadata.Decription; columnInfo.DefaultValue = columnMetadata.DefaultValue; columnInfo.Identity = GetColumnIdentity(columnMetadata); columnInfo.Type = new MetadataColumnTypeInfo(this, columnMetadata); MigrateManager.CorrectName(columnInfo); return(columnInfo); }
/// <summary> /// /// </summary> /// <returns></returns> public static MigrateManager UsePostgresServerDatabase(this MigrateManager migrateManager) { migrateManager.ServicesContainer.Register <IDatabaseTablesManager, PostgresDatabaseTablesManager>(); migrateManager.ServicesContainer.Register <IDatabaseCreator, PostgresDatabaseCreator>(); migrateManager.ServicesContainer.Register <IMigrationsHistoryRepository, PostgresMigrationsHistoryRepository>(); migrateManager.ServicesContainer.Register <IColumnTypeMappingSource, PostgresColumnTypeMappingSource>(); migrateManager.ServicesContainer.Register <PostgresTableManager>(); migrateManager.ServicesContainer.Register <PostgresColumnManager>(); migrateManager.ServicesContainer.Register <PostgresPrimaryKeyManager>(); migrateManager.ServicesContainer.Register <PostgresUniqueKeyManager>(); migrateManager.ServicesContainer.Register <PostgresForeignKeyManager>(); RegisterDatabaseCommands(migrateManager); return(migrateManager); }
/// <summary> /// /// </summary> /// <param name="tableMetadata"></param> /// <returns></returns> private MetadataTableInfo GetTableInfo(TableMetadata tableMetadata) { var databaseTablesManager = MigrateManager.ServicesContainer.GetService <IDatabaseTablesManager>(); var tableInfo = new MetadataTableInfo(); tableInfo.TableMetadata = tableMetadata; tableInfo.Name = tableMetadata.Name; tableInfo.Description = tableMetadata.Decription; tableInfo.Schema = tableMetadata.Schema ?? databaseTablesManager?.DefaultSchema; MigrateManager.CorrectName(tableInfo); tableInfo.Columns = GetColumns(tableInfo, tableMetadata); tableInfo.PrimaryKey = GetPrimaryKey(tableInfo, tableMetadata); tableInfo.TableValues = GetTableValues(tableInfo, tableMetadata); return(tableInfo); }
/// <summary> /// /// </summary> /// <param name="tableInfo"></param> /// <param name="tableMetadata"></param> /// <returns></returns> private PrimaryKeyInfo GetPrimaryKey(MetadataTableInfo tableInfo, TableMetadata tableMetadata) { var primaryKeyMetadata = tableMetadata.PrimaryKey; if (primaryKeyMetadata == null) { return(null); } var primaryKey = new PrimaryKeyInfo(); primaryKey.Table = tableInfo; primaryKey.Name = primaryKeyMetadata.Name; primaryKey.PrimaryColumn = tableInfo.GetColumn(primaryKeyMetadata.PrimaryColumn?.Name); MigrateManager.CorrectName(primaryKey); return(primaryKey); }
private void MigratePage() { if (m2v.HasValue || !string.IsNullOrEmpty(Request.QueryString["m2vsetup"])) { WebForms.RegisterClientScriptBlock(Page, "m2vStyle", "<div class='style-wrapper'><style type=\"text/css\">#dnn_ContentPane >.DnnModule{display:none !important;}</style></div>", false); } //Only work when call is not from Iframe like page,role etc extension, if (string.IsNullOrEmpty(Request.QueryString["mid"]) && string.IsNullOrEmpty(Request.QueryString["icp"])) { if (m2v.HasValue && !string.IsNullOrEmpty(Request.QueryString["SkinSrc"]) && Request.QueryString["SkinSrc"].ToLower() == "[G]Skins/Vanjaro/Base".ToLower() && PortalSettings.UserInfo.IsInRole("Administrators")) { Pages page = GetPage(); if (page != null && !page.IsPublished) { if (!m2v.Value && !page.Content.Contains("data-m2v")) { HtmlDocument html = new HtmlDocument(); html.LoadHtml(page.Content.ToString()); page.Content = MigrateManager.MigrateInjectBlocks(PortalSettings, html); PageManager.UpdatePage(page, PortalSettings.UserInfo.UserID); Response.Redirect(NavigationManager.NavigateURL(PortalSettings.ActiveTab.TabID, "", "m2v=true", "skinsrc=[g]skins/vanjaro/base", "containersrc=[g]containers/vanjaro/base")); } // Redirect if Page already migrated if (page.Content.ToString().Contains("data-m2v") && !m2v.Value) { Response.Redirect(NavigationManager.NavigateURL(PortalSettings.ActiveTab.TabID, "", "m2v=true", "skinsrc=[g]skins/vanjaro/base", "containersrc=[g]containers/vanjaro/base")); } else { if (!(!string.IsNullOrEmpty(Request.QueryString["pv"]) && Request.QueryString["pv"] == "true")) { WebForms.RegisterStartupScript(Page, "MigratePage", "<script type=\"text/javascript\" vanjarocore=\"true\">" + MigrateManager.GetMigratePageToastMarkup(Page) + "</script> <style type=\"text/css\">" + MigrateManager.GetMigratePageCSS(Page) + "</style>", false); } } } } } }
internal static string MigrateInjectBlocks(PortalSettings PortalSettings, HtmlDocument html) { IEnumerable <HtmlNode> query = html.DocumentNode.Descendants("div"); List <string> DataPanes = new List <string>(); foreach (HtmlNode item in query.ToList()) { foreach (ModuleInfo m in PortalSettings.ActiveTab.Modules) { if (item.Attributes.Where(a => a.Name == "data-pane").FirstOrDefault() != null && !string.IsNullOrEmpty(item.Attributes.Where(a => a.Name == "data-pane").FirstOrDefault().Value) && item.Attributes.Where(a => a.Name == "data-pane").FirstOrDefault().Value.ToLower() == m.PaneName.ToLower()) { if (m.DesktopModule.ModuleName.ToUpper() == "DNN_HTML") { item.InnerHtml += "<div data-m2v=\"\" data-appname=\"" + m.ModuleTitle + "\">" + HttpUtility.HtmlDecode(MigrateManager.GetHTMLText(m)) + "</div>"; } else { item.InnerHtml += "<div data-m2v=\"\" data-appname=\"" + m.ModuleTitle + "\" dmid=\"" + m.DesktopModuleID + "\" mid=\"" + m.ModuleID + "\" uid=\"0\"><div vjmod=\"true\"><app id=\"" + m.ModuleID + "\"></app></div></div>"; } DataPanes.AddRange(item.Attributes.Where(a => a.Name == "data-pane").Select(s => s.Value.ToLower()).ToList()); } } } string Outhtml = html.DocumentNode.OuterHtml; foreach (ModuleInfo m in PortalSettings.ActiveTab.Modules) { if (!DataPanes.Contains(m.PaneName.ToLower())) { if (m.DesktopModule.ModuleName.ToUpper() == "DNN_HTML") { Outhtml += "<div data-m2v=\"\" data-appname=\"" + m.ModuleTitle + "\">" + HttpUtility.HtmlDecode(MigrateManager.GetHTMLText(m)) + "</div>"; } else { Outhtml += "<div data-m2v=\"\" data-appname=\"" + m.ModuleTitle + "\" dmid=\"" + m.DesktopModuleID + "\" mid=\"" + m.ModuleID + "\" uid=\"0\"><div vjmod=\"true\"><app id=\"" + m.ModuleID + "\"></app></div></div>"; } } } return(Outhtml); }