/// <summary> /// Ensures the Merchello database has been installed. /// </summary> /// <returns> /// The <see cref="bool"/>. /// </returns> internal bool EnsureDatabase() { var databaseSchemaCreation = new DatabaseSchemaCreation(_database, _logger, new DatabaseSchemaHelper(_database, _logger, _sqlSyntaxProvider), _sqlSyntaxProvider); var schemaResult = databaseSchemaCreation.ValidateSchema(); var databaseVersion = schemaResult.DetermineInstalledVersion(); if (databaseVersion != new Version("0.0.0")) { return(true); } // install the database var schemaHelper = new MerchelloDatabaseSchemaHelper(this._database, this._logger, this._sqlSyntaxProvider); schemaHelper.CreateDatabaseSchema(); var baseDataCreation = new BaseDataCreation(this._database, this._logger); baseDataCreation.InitializeBaseData("merchTypeField"); baseDataCreation.InitializeBaseData("merchInvoiceStatus"); baseDataCreation.InitializeBaseData("merchOrderStatus"); baseDataCreation.InitializeBaseData("merchWarehouse"); baseDataCreation.InitializeBaseData("merchGatewayProviderSettings"); baseDataCreation.InitializeBaseData("merchStoreSetting"); baseDataCreation.InitializeBaseData("merchShipmentStatus"); return(false); }
public virtual void DatabaseSchemaCreation_Returns_DatabaseSchemaResult_Where_DetermineInstalledVersion_Is_4_7_0() { // Arrange var db = GetConfiguredDatabase(); var schema = new DatabaseSchemaCreation(db); //Create db schema and data from old Total.sql file for Sql Ce string statements = GetDatabaseSpecificSqlScript(); // replace block comments by whitespace statements = FindComments.Replace(statements, " "); // execute all non-empty statements foreach (string statement in statements.Split(";".ToCharArray())) { string rawStatement = statement.Replace("GO", "").Trim(); if (rawStatement.Length > 0) { db.Execute(new Sql(rawStatement)); } } // Act var result = schema.ValidateSchema(); // Assert var expected = new Version(4, 7, 0); Assert.AreEqual(expected, result.DetermineInstalledVersion()); }
public void DatabaseSchemaCreation_Produces_DatabaseSchemaResult_With_Zero_Errors() { // Arrange var db = DatabaseContext.Database; var schema = new DatabaseSchemaCreation(db); // Act var result = schema.ValidateSchema(); // Assert Assert.That(result.Errors.Count, Is.EqualTo(0)); Assert.AreEqual(result.DetermineInstalledVersion(), UmbracoVersion.Current); }
public void Can_Determine_The_MerchelloDatabaseVersion() { //// Arrange var expected = new Version(1, 7, 0); //// Act var result = _databaseSchemaCreation.ValidateSchema(); Assert.NotNull(result); var version = result.DetermineInstalledVersion(); //// Assert Assert.AreEqual(expected, version); }
internal DatabaseSchemaResult ValidateDatabaseSchema() { if (_configured == false || (string.IsNullOrEmpty(_connectionString) || string.IsNullOrEmpty(ProviderName))) { return(new DatabaseSchemaResult()); } if (_result == null) { var database = new UmbracoDatabase(_connectionString, ProviderName); var dbSchema = new DatabaseSchemaCreation(database); _result = dbSchema.ValidateSchema(); } return(_result); }
internal DatabaseSchemaResult ValidateDatabaseSchema() { if (_configured == false || (string.IsNullOrEmpty(_connectionString) || string.IsNullOrEmpty(ProviderName))) { return(new DatabaseSchemaResult()); } if (_result == null) { if (SystemUtilities.GetCurrentTrustLevel() != AspNetHostingPermissionLevel.Unrestricted && ProviderName == Constants.DatabaseProviders.MySql) { throw new InvalidOperationException("Cannot use MySql in Medium Trust configuration"); } var database = new UmbracoDatabase(_connectionString, ProviderName, _logger); var dbSchema = new DatabaseSchemaCreation(database, _logger, SqlSyntax); _result = dbSchema.ValidateSchema(); } return(_result); }
/// <summary> /// Ensures the Merchello database has been installed. /// </summary> /// <returns> /// The <see cref="bool"/>. /// </returns> internal bool EnsureDatabase() { var databaseSchemaCreation = new DatabaseSchemaCreation(_database, _logger, new DatabaseSchemaHelper(_database, _logger, _sqlSyntaxProvider), _sqlSyntaxProvider); var schemaResult = databaseSchemaCreation.ValidateSchema(); var databaseVersion = schemaResult.DetermineInstalledVersion(); if (databaseVersion != new Version("0.0.0")) { return(true); } // install the database var schemaHelper = new MerchelloDatabaseSchemaHelper(this._database, this._logger, this._sqlSyntaxProvider); schemaHelper.CreateDatabaseSchema(); var baseDataCreation = new BaseDataCreation(this._database, this._logger); baseDataCreation.InitializeBaseData("merchTypeField"); baseDataCreation.InitializeBaseData("merchInvoiceStatus"); baseDataCreation.InitializeBaseData("merchOrderStatus"); baseDataCreation.InitializeBaseData("merchWarehouse"); baseDataCreation.InitializeBaseData("merchGatewayProviderSettings"); baseDataCreation.InitializeBaseData("merchStoreSetting"); baseDataCreation.InitializeBaseData("merchShipmentStatus"); // Add 'merchello' to the admin group var ug = new UserGroup2AppDto { UserGroupId = 1, AppAlias = "merchello" }; _database.Insert(ug); // TODO clear cache return(false); }
/// <summary> /// Executes the Migration runner. /// </summary> /// <param name="database"> /// The database. /// </param> /// <returns> /// A value indicating whether or not the migration was successful. /// </returns> private bool UpgradeMerchello(Database database) { var databaseSchemaCreation = new DatabaseSchemaCreation(database); var schemaResult = databaseSchemaCreation.ValidateSchema(); var dbVersion = schemaResult.DetermineInstalledVersion(); if (dbVersion != MerchelloVersion.Current) { try { LogHelper.Info <CoreMigrationManager>("Merchello database upgraded required. Initializing Upgrade."); var runner = new MigrationRunner( MerchelloConfiguration.ConfigurationStatusVersion, MerchelloVersion.Current, MerchelloConfiguration.MerchelloMigrationName); var upgraded = runner.Execute(database); if (upgraded) { var migrationKey = this.EnsureMigrationKey(schemaResult); var record = new MigrationRecord() { MigrationKey = migrationKey, CurrentVersion = dbVersion.ToString(), TargetVersion = MerchelloVersion.Current.ToString(), DbProvider = database.GetDatabaseProvider().ToString(), InstallDate = DateTime.Now, IsUpgrade = true }; this.OnUpgraded(record); LogHelper.Info <CoreMigrationManager>("Merchello Schema Migration completed successfully"); } LogHelper.Debug <CoreMigrationManager>("Merchello migration runner returned false."); } catch (Exception ex) { LogHelper.Error <CoreMigrationManager>("Merchello Database Schema Upgrade Failed", ex); throw; } } else { // this is a new install var migrationKey = this.EnsureMigrationKey(schemaResult); var record = new MigrationRecord() { MigrationKey = migrationKey, CurrentVersion = MerchelloConfiguration.ConfigurationStatus, TargetVersion = MerchelloVersion.Current.ToString(), DbProvider = database.GetDatabaseProvider().ToString(), InstallDate = DateTime.Now, IsUpgrade = !MerchelloConfiguration.ConfigurationStatus.Equals("0.0.0") }; this.OnUpgraded(record); } MerchelloConfiguration.ConfigurationStatus = MerchelloVersion.Current.ToString(); return(true); }
/// <summary> /// Executes the Migration runner. /// </summary> /// <param name="database"> /// The database. /// </param> /// <returns> /// A value indicating whether or not the migration was successful. /// </returns> private bool UpgradeMerchello(Database database) { var databaseSchemaCreation = new DatabaseSchemaCreation(_database, _logger, new DatabaseSchemaHelper(_database, _logger, _sqlSyntaxProvider), _sqlSyntaxProvider); var schemaResult = databaseSchemaCreation.ValidateSchema(); var dbVersion = schemaResult.DetermineInstalledVersion(); var upgraded = false; if (dbVersion != MerchelloVersion.Current) { try { _logger.Info <CoreMigrationManager>("Merchello database upgraded required. Initializing Upgrade."); var resolver = new MigrationResolver(_logger, PluginManager.Current.ResolveMerchelloMigrations()); var migrations = resolver.OrderedUpgradeMigrations( MerchelloConfiguration.ConfigurationStatusVersion, MerchelloVersion.Current).ToList(); var context = InitializeMigrations(migrations, _database, _database.GetDatabaseProvider()); try { ExecuteMigrations(context, _database); upgraded = true; } catch (Exception ex) { _logger.Error <CoreMigrationManager>("Merchello migration failed", ex); upgraded = false; } _logger.Debug <CoreMigrationManager>("Merchello migration runner returned false."); } catch (Exception ex) { _logger.Error <CoreMigrationManager>("Merchello Database Schema Upgrade Failed", ex); throw; } } var currentVersion = dbVersion.ToString(); if (!upgraded) { currentVersion = MerchelloConfiguration.ConfigurationStatusVersion.ToString(); } var migrationKey = this.EnsureMigrationKey(schemaResult); var record = new MigrationRecord() { MigrationKey = migrationKey, CurrentVersion = currentVersion, TargetVersion = MerchelloVersion.Current.ToString(), DbProvider = database.GetDatabaseProvider().ToString(), InstallDate = DateTime.Now, IsUpgrade = currentVersion != "0.0.0" }; this.OnUpgraded(record); _logger.Info <CoreMigrationManager>("Merchello Schema Migration completed successfully"); MerchelloConfiguration.ConfigurationStatus = MerchelloVersion.Current.ToString(); return(true); }
/// <summary> /// Executes the Migration runner. /// </summary> /// <param name="database"> /// The database. /// </param> /// <returns> /// A value indicating whether or not the migration was successful. /// </returns> private bool UpgradeMerchello(Database database) { var databaseSchemaCreation = new DatabaseSchemaCreation(_database, _logger, new DatabaseSchemaHelper(_database, _logger, _sqlSyntaxProvider), _sqlSyntaxProvider); var schemaResult = databaseSchemaCreation.ValidateSchema(); var dbVersion = schemaResult.DetermineInstalledVersion(); if (dbVersion != MerchelloVersion.Current) { try { _logger.Info <CoreMigrationManager>("Merchello database upgraded required. Initializing Upgrade."); var resolver = new MigrationResolver(_logger, PluginManager.Current.ResolveMerchelloMigrations()); var migrations = resolver.OrderedUpgradeMigrations( MerchelloConfiguration.ConfigurationStatusVersion, MerchelloVersion.Current); bool upgraded; try { foreach (var m in migrations) { m.Up(); } upgraded = true; } catch (Exception ex) { _logger.Error <CoreMigrationManager>("Merchello migration failed", ex); upgraded = false; } //var entryService = ApplicationContext.Current.Services.MigrationEntryService; //var runner = new MigrationRunner( // entryService, // _logger, // new SemVersion(MerchelloConfiguration.ConfigurationStatusVersion), // new SemVersion(MerchelloVersion.Current), // MerchelloConfiguration.MerchelloMigrationName); //var upgraded = runner.Execute(database); if (upgraded) { var migrationKey = this.EnsureMigrationKey(schemaResult); var record = new MigrationRecord() { MigrationKey = migrationKey, CurrentVersion = dbVersion.ToString(), TargetVersion = MerchelloVersion.Current.ToString(), DbProvider = database.GetDatabaseProvider().ToString(), InstallDate = DateTime.Now, IsUpgrade = true }; this.OnUpgraded(record); _logger.Info <CoreMigrationManager>("Merchello Schema Migration completed successfully"); } _logger.Debug <CoreMigrationManager>("Merchello migration runner returned false."); } catch (Exception ex) { _logger.Error <CoreMigrationManager>("Merchello Database Schema Upgrade Failed", ex); throw; } } else { // this is a new install var migrationKey = this.EnsureMigrationKey(schemaResult); var record = new MigrationRecord() { MigrationKey = migrationKey, CurrentVersion = MerchelloConfiguration.ConfigurationStatus, TargetVersion = MerchelloVersion.Current.ToString(), DbProvider = database.GetDatabaseProvider().ToString(), InstallDate = DateTime.Now, IsUpgrade = !MerchelloConfiguration.ConfigurationStatus.Equals("0.0.0") }; this.OnUpgraded(record); } MerchelloConfiguration.ConfigurationStatus = MerchelloVersion.Current.ToString(); return(true); }