/// <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()); }
/// <summary> /// The uninstall database schema. /// </summary> internal void UninstallDatabaseSchema() { _logger.Info <MerchelloDatabaseSchemaHelper>("Uninstalling Merchello database schema"); var creation = new DatabaseSchemaCreation(_db, _logger, _umbSchemaHelper, _syntaxProvider); creation.UninstallDatabaseSchema(); _logger.Info <MerchelloDatabaseSchemaHelper>("Merchello database schema removed"); }
public override void FixtureSetup() { base.FixtureSetup(); var serviceContext = (ServiceContext)MerchelloContext.Current.Services; _databaseSchemaCreation = new DatabaseSchemaCreation(serviceContext.DatabaseUnitOfWorkProvider.GetUnitOfWork().Database); }
public virtual void Initialize() { // Disable medium trust var transform = TransformWebConfig("Release"); var assemblyPath = TestHelper.CurrentAssemblyDirectory; assemblyPath = Path.Combine(assemblyPath, @"..\..\..\Umbraco.Web.UI\"); var webUiPath = Path.GetFullPath(new Uri(assemblyPath).LocalPath); var installedPackagesConfig = string.Format("{0}App_Data\\packages\\installed\\installedPackages.config", webUiPath); if (File.Exists(installedPackagesConfig)) { File.Delete(installedPackagesConfig); } var databaseDataPath = string.Format(@"{0}\App_Data\Umbraco.sdf", webUiPath); var connectionString = string.Format(@"Data Source={0}", databaseDataPath); //Create the Sql CE database using (var engine = new SqlCeEngine(connectionString)) { if (File.Exists(databaseDataPath) == false) { engine.CreateDatabase(); } } var syntaxProvider = new SqlCeSyntaxProvider(); SqlSyntaxContext.SqlSyntaxProvider = syntaxProvider; _database = new UmbracoDatabase(connectionString, Constants.DatabaseProviders.SqlCe, Mock.Of <ILogger>()); // First remove anything in the database var creation = new DatabaseSchemaCreation(_database, Mock.Of <ILogger>(), syntaxProvider); creation.UninstallDatabaseSchema(); // Then populate it with fresh data _database.CreateDatabaseSchema(false); _database.Execute("UPDATE umbracoUser SET userName = '******', userPassword = '******', userEmail = 'none' WHERE id = 0"); // password: test // Recycle app pool so the new user can log in //var webConfigFilePath = string.Format(@"{0}\web.config", webUiPath); //File.SetLastWriteTime(webConfigFilePath, DateTime.Now); // Disable medium trust transform = TransformWebConfig("Release"); Driver = new FirefoxDriver(); BaseUrl = "http://localhost:61639/"; _verificationErrors = new StringBuilder(); }
internal void CreateDatabaseSchemaDo(IMigrationEntryService migrationEntryService) { _logger.Info <Database>("Initializing database schema creation"); var creation = new DatabaseSchemaCreation(_db, _logger, _syntaxProvider); creation.InitializeDatabaseSchema(); _logger.Info <Database>("Finalized database schema creation"); }
/// <summary> /// The create database schema. /// </summary> public void CreateDatabaseSchema() { _logger.Info <MerchelloDatabaseSchemaHelper>("Initializing database schema creation"); var creation = new DatabaseSchemaCreation(_db, _logger, _umbSchemaHelper, _syntaxProvider); creation.InitializeDatabaseSchema(); _logger.Info <MerchelloDatabaseSchemaHelper>("Finalized database schema creation"); }
public void Init() { var syntax = (DbSyntax)Enum.Parse(typeof(DbSyntax), ConfigurationManager.AppSettings["syntax"]); var worker = new DbPreTestDataWorker { SqlSyntax = syntax }; _database = worker.Database; var deletions = new DatabaseSchemaCreation(_database); deletions.UninstallDatabaseSchema(); }
public void Init() { var syntax = (DbSyntax)Enum.Parse(typeof(DbSyntax), ConfigurationManager.AppSettings["syntax"]); _worker = new DbPreTestDataWorker { SqlSyntax = syntax }; var schemaHelper = new DatabaseSchemaHelper(_worker.Database, _worker.TestLogger, _worker.SqlSyntaxProvider); var deletions = new DatabaseSchemaCreation(_worker.Database, _worker.TestLogger, schemaHelper, _worker.SqlSyntaxProvider); deletions.UninstallDatabaseSchema(); }
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); }
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); }
/// <summary> /// Undoes the specified package name. /// </summary> /// <param name="packageName">Name of the package.</param> /// <param name="xmlData">The XML data.</param> /// <returns></returns> public bool Undo(string packageName, System.Xml.XmlNode xmlData) { try { var deletions = new DatabaseSchemaCreation(Umbraco.Core.ApplicationContext.Current.DatabaseContext.Database); deletions.UninstallDatabaseSchema(); return(true); } catch (Exception ex) { var message = string.Concat("Error at undo ", this.Alias(), " package action: ", ex); LogHelper.Error(typeof(CreateDatabase), message, ex); } return(false); }
internal static void CreateDatabaseSchema(this Database db, bool guardConfiguration) { if (guardConfiguration && ApplicationContext.Current.IsConfigured) { throw new Exception("Umbraco is already configured!"); } NewTable += PetaPocoExtensions_NewTable; LogHelper.Info <Database>("Initializing database schema creation"); var creation = new DatabaseSchemaCreation(db); creation.InitializeDatabaseSchema(); LogHelper.Info <Database>("Finalized database schema creation"); NewTable -= PetaPocoExtensions_NewTable; }
/// <summary> /// Executes the specified package name. /// </summary> /// <param name="packageName">Name of the package.</param> /// <param name="xmlData">The XML data.</param> /// <returns></returns> public bool Execute(string packageName, System.Xml.XmlNode xmlData) { try { var creation = new DatabaseSchemaCreation(Umbraco.Core.ApplicationContext.Current.DatabaseContext.Database); creation.InitializeDatabaseSchema(); var creationData = new BaseDataCreation(Umbraco.Core.ApplicationContext.Current.DatabaseContext.Database); bool dataCreationResult = CreateInitialMerchelloData(creationData); return(true); } catch (Exception ex) { var message = string.Concat("Error at install ", this.Alias(), " package action: ", ex); LogHelper.Error(typeof(CreateDatabase), message, ex); } return(false); }
private void RebuildDatabase() { // migration var schema = new DatabaseSchemaCreation(Database); // drop all the tables schema.UninstallDatabaseSchema(); // install the schema schema.InitializeDatabaseSchema(); // add the default data var baseDataCreation = new BaseDataCreation(Database); baseDataCreation.InitializeBaseData("merchDBTypeField"); baseDataCreation.InitializeBaseData("merchInvoiceStatus"); baseDataCreation.InitializeBaseData("merchOrderStatus"); baseDataCreation.InitializeBaseData("merchWarehouse"); baseDataCreation.InitializeBaseData("merchGatewayProviderSettings"); baseDataCreation.InitializeBaseData("merchStoreSetting"); }
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); }
private void SetupSqlCe(string path, ILogger logger) { var dbName = string.Concat("Umb", Guid.NewGuid(), ".sdf"); AppDomain.CurrentDomain.SetData("DataDirectory", path); var sqlCeConnectionString = $"Datasource=|DataDirectory|\\{dbName};Flush Interval=1;"; _dbFile = Path.Combine(path, dbName); //only create the db one time if (_initDbBytes == null) { using (var engine = new SqlCeEngine(sqlCeConnectionString)) { engine.CreateDatabase(); } //use the db to create the initial schema so we can reuse in each bench using (_dbSqlCe = new UmbracoDatabase( sqlCeConnectionString, Constants.DatabaseProviders.SqlCe, logger)) { var creation = new DatabaseSchemaCreation(_dbSqlCe, logger, _sqlCeSyntax); creation.InitializeDatabaseSchema(); } _initDbBytes = File.ReadAllBytes(_dbFile); } else { File.WriteAllBytes(_dbFile, _initDbBytes); } //create the db _dbSqlCe = new UmbracoDatabase( sqlCeConnectionString, Constants.DatabaseProviders.SqlCe, logger); }
/// <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, _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); }
/// <summary> /// Completely uninstalls Merchello's database schema /// </summary> public void UninstallDatabaseSchema() { var uninstaller = new DatabaseSchemaCreation(_database); uninstaller.UninstallDatabaseSchema(); }
internal void UninstallDatabaseSchema() { var creation = new DatabaseSchemaCreation(_db, _logger, _syntaxProvider); creation.UninstallDatabaseSchema(); }
public void Successfully_Create_Default_Database_Schema() { var creation = new DatabaseSchemaCreation(_database); creation.InitializeDatabaseSchema(); }
public void Can_Drop_All_Database_Tables() { var deletions = new DatabaseSchemaCreation(_database); deletions.UninstallDatabaseSchema(); }
internal static void UninstallDatabaseSchema(this Database db) { var creation = new DatabaseSchemaCreation(db); creation.UninstallDatabaseSchema(); }
/// <summary> /// Creates a new version of Merchello's Database Schema /// </summary> public void InitializeDatabaseSchema() { var creation = new DatabaseSchemaCreation(_database); creation.InitializeDatabaseSchema(); }
/// <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); }