public void TestFixtureSetUp()
        {
            dbPlatform = new SQLitePlatform();
            migrationVersionInfoManager = new DbMigrationVersionInfoManager(dbPlatform, new DbCommandExecutionStrategy(), "SchemaInfo");
            connectionString = ConfigurationManager.AppSettings["connectionString"];

            dbPlatform.DeploymentManager.Deploy(connectionString, DbDeploymentMode.Redeploy);
        }
 public void ExecuteMigrationScripts(IDbPlatform dbPlatform, IMigrationVersionInfoManager migrationVersionInfoManager, 
     string connectionString, MigrationScriptCollection migrationScripts, 
     long currentVersion, long? targetVersion, MigrationMode migrationMode)
 {
     this.migrationScripts = migrationScripts;
     this.currentVersion = currentVersion;
     this.targetVersion = targetVersion;
     this.migrationMode = migrationMode;
 }
 public static IList<long> GetRegisteredMigrationVersions(IMigrationVersionInfoManager migrationVersionInfoManager, 
     IDbPlatform dbPlatform, string connectionString)
 {
     return DbUtil.ExecuteInTransaction<IList<long>>(dbPlatform, connectionString, 
         delegate(IDbTransaction transaction)
             {
                 return migrationVersionInfoManager.GetRegisteredMigrationVersions(transaction);
             });
 }
 public static long GetCurrentMigrationVersion(IMigrationVersionInfoManager migrationVersionInfoManager,
     IDbPlatform dbPlatform, string connectionString)
 {
     return DbUtil.ExecuteInTransaction<long>(dbPlatform, connectionString, 
         delegate(IDbTransaction transaction)
             {
                 return migrationVersionInfoManager.GetCurrentMigrationVersion(transaction);
             });
 }
        public void TestFixtureSetUp()
        {
            dbPlatform = new SQLitePlatform();
            migrationVersionInfoManager = new DbMigrationVersionInfoManager(dbPlatform, new DbCommandExecutionStrategy(), "SchemaInfo");
            sourceConnectionString = ConfigurationManager.AppSettings["connectionString"];
            targetConnectionString = ConfigurationManager.AppSettings["secondaryConnectionString"];

            migrationService = new MigrationService(dbPlatform, migrationVersionInfoManager,
                new DbMigrationScriptExecutive(new DbCommandExecutionStrategy()), null);
        }
 public void Execute(IDbPlatform dbPlatform, IDbCommand dbCommand)
 {
     try
     {
         dbPlatform.ExceptionTranslator.Execute(() => dbCommand.ExecuteNonQuery());
     } // try
     catch(DbPlatformException e)
     {
         throw new DbPlatformException(string.Format("Could not execute SQL '{0}'", dbCommand.CommandText), e);
     } // catch
 }
        public void TestFixtureSetUp()
        {
            dbPlatform = new SqlCePlatform();
            connectionString = ConfigurationManager.AppSettings["connectionString"];

            migrationVersionInfoManager = new DbMigrationVersionInfoManager(dbPlatform, new DbCommandExecutionStrategy(), "SchemaInfo");
            migrationService = new MigrationService(
                dbPlatform,
                migrationVersionInfoManager,
                new DbMigrationScriptExecutive(new DbCommandExecutionStrategy()),
                new FileSystemNativeSqlResourceProvider(
                Path.Combine(
                    GetAssemblyLocation(Assembly.GetExecutingAssembly()), "Resources")));
        }
        public void Execute(IDbPlatform platform, IRefactorNode refactorNode, Environment environment)
        {
            string auditTableName = AstNodePropertyUtil.AsString(refactorNode.Properties["audit-table"].Value);
            string tableName = AstNodePropertyUtil.AsString(refactorNode.Properties["table"].Value);
            //
            // We only need columns here
            ITableDefinition tableDefinition = environment.Schema.GetTable(tableName);

            ITableDefinition auditTable = new TableDefinition(auditTableName);
            foreach(ColumnDefinition column in tableDefinition.Columns)
            {
                //
                // Keep name and type only.
                IColumnDefinition auditColumn = new ColumnDefinition(column.Name);
                
                //
                // Special handling for rowversion
                if(column.Type == DbType.Time)
                {
                    auditColumn.Length = 8;
                    auditColumn.Type = DbType.Binary;
                } // if
                else
                {
                    auditColumn.Length = column.Length;
                    auditColumn.Type = column.Type;
                } // else

                auditColumn.Nullable = true;

                auditTable.AddColumn(auditColumn);
            } // foreach

            environment.Schema.AddTable(auditTable);

            //
            // Now build an AST
            IAddTableNode addAuditTableNode = new AddTableNode(refactorNode.Parent, auditTableName);
            foreach(IColumnDefinition auditColumn in auditTable.Columns)
            {
                IAddColumnNode addAuditColumnNode = new AddColumnNode(addAuditTableNode, auditColumn.Name);
                addAuditColumnNode.Type = auditColumn.Type;
                addAuditColumnNode.Length = auditColumn.Length;
                addAuditColumnNode.Nullable = auditColumn.Nullable;

                addAuditTableNode.ChildNodes.Add(addAuditColumnNode);
            } // foreach

            addAuditTableNode.Parent.ChildNodes.Add(addAuditTableNode);
        }
        public IAstNode ReverseEngineer(IDbPlatform dbPlatform, string connectionString)
        {
            Schema schema = dbPlatform.SchemaProvider.GetSchema(connectionString);
            
            IBaselineNode baselineNode = new BaselineNode(null);
            AstUtil.BuildAstNodeFromSchema(baselineNode, schema);

            IList<IAstNode> addReferenceNodes= new List<IAstNode>();
            Algorithms.RemoveIf(baselineNode.ChildNodes,
                delegate(IAstNode astNode) { return astNode is IAddReferenceNode; }, 
                delegate(IAstNode astNode) { addReferenceNodes.Add(astNode); });

            Algorithms.Copy(addReferenceNodes, baselineNode.ChildNodes);

            return baselineNode;
        }
Exemple #10
0
    public Compares(LocalDB db, IDbPlatform idbPlatform)
    {
        Platform platform;

        List       = new ObservableCollection <Compare>();
        Database   = db;
        Title      = idbPlatform.Title + " - " + Enum.GetName(typeof(LocalDB), db);
        DBreleases = new List <IDbRelease>();
        RReleases  = new List <Release>();

        foreach (IDbRelease idbRelease in idbPlatform.Releases)
        {
            DBreleases.Add(idbRelease);
        }

        switch (db)
        {
        case LocalDB.GamesDB:
            platform = R.Data.Platforms.FirstOrDefault(x => x.ID_GDB == idbPlatform.ID);
            if (platform != null)
            {
                RReleases = new List <Release>(platform.Releases.Where(x => x.ID_GDB == null && x.IsGame));
            }
            break;

        case LocalDB.GiantBomb:
            platform = R.Data.Platforms.FirstOrDefault(x => x.ID_GB == idbPlatform.ID);
            if (platform != null)
            {
                RReleases = new List <Release>(platform.Releases.Where(x => x.ID_GB == null && x.IsGame));
            }
            break;

        case LocalDB.LaunchBox:
            platform = R.Data.Platforms.FirstOrDefault(x => x.ID_LB == idbPlatform.ID);
            if (platform != null)
            {
                RReleases = new List <Release>(platform.Releases.Where(x => x.ID_LB == null && x.IsGame));
            }
            break;
        }
    }
        public void TestFixtureSetUp()
        {
            dbPlatform = new SQLitePlatform();
            connectionString = ConfigurationManager.AppSettings["connectionString"];
            dbPlatform.DeploymentManager.Deploy(connectionString, DbDeploymentMode.Redeploy);

            migrationService = new MigrationService(
                dbPlatform,
                new DbMigrationVersionInfoManager(dbPlatform, new DbCommandExecutionStrategy(), "SchemaInfo"),
                new DbMigrationScriptExecutive(new DbCommandExecutionStrategy()),
                null);

            try
            {
                MigrateTo(null);
            } // try
            catch(Exception e)
            {
                MigrateTo(0);
                Assert.Fail(e.Message);
            } // catch
        }
Exemple #12
0
    void CompareToOVGDB(IDbPlatform idbPlatform)
    {
        // There are no results in OVGDB for arcade, so skip it
        if (idbPlatform.Title.Contains("Arcade"))
        {
            Reporter.Report("Skiping platform \"Arcade\"");
            return;
        }

        Platform RPlatform = R.Data.Platforms.FirstOrDefault(x => x.ID == idbPlatform.ID);

        OVGRelease OVGRelease;

        foreach (Release release in RPlatform.Releases)
        {
            OVGRelease = R.Data.OVGReleases.FirstOrDefault(x => x.SHA1 == release.Rom.SHA1 && x.Region_ID == release.Region_ID && (x.BoxFrontUrl != null || x.BoxBackUrl != null));
            if (OVGRelease != null)
            {
                release.ID_OVG = OVGRelease.ID;
            }
        }
    }
        /// <summary>
        /// Returns an array of <see cref="string"/> object which contains a Native SQL resource <paramref name="name"/>
        /// to be executed while upgrading to version <paramref name="version"/> 
        /// for platform <paramref name="dbPlatform"/>.
        /// </summary>
        /// <param name="dbPlatform"></param>
        /// <param name="name"></param>
        /// <param name="version"></param>
        /// <returns></returns>
        public string[] GetUpgradeResources(IDbPlatform dbPlatform, string name, long version)
        {
            var resourceFileName = string.Format("{0}.sql", name);
            var alias = DbPlatformUtil.GetDbPlatformAlias(dbPlatform);
            var potentialPaths = new[]
                {
                    Path.Combine(Path.Combine(baseDirectory, Path.Combine(alias, version.ToString())), resourceFileName),
                    Path.Combine(Path.Combine(baseDirectory, Path.Combine("shared", version.ToString())), resourceFileName)
                };
            
            var resourceFilePath = potentialPaths.FirstOrDefault(File.Exists);

            if(string.IsNullOrEmpty(resourceFilePath)) return null;

            string nativeResource;
            using(var fileStream = File.Open(resourceFilePath, FileMode.Open, FileAccess.Read))
                using(var streamReader = new StreamReader(fileStream, true))
                    nativeResource = streamReader.ReadToEnd();

            var goRegex = new Regex(@"^\s*go\s*", RegexOptions.Multiline);

            return goRegex.Split(nativeResource);
        }
 public void Deploy(IDbPlatform dbPlatform, string connectionString)
 {
     dbPlatform.DeploymentManager.Deploy(connectionString, DbDeploymentMode.Deploy);
 }
 protected DbPlatformDependencyBase(IDbPlatform platform)
 {
     this.platform = platform;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="SqlServer2000SchemaProvider"/> class.
 /// </summary>
 /// <param name="platform"></param>
 public SqlServer2000SchemaProvider(IDbPlatform platform) : 
     base(platform)
 {
 }
 private void EnsurePlatformResolved(MigrationParameters parameters, IDbPlatform dbPlatform)
 {
     if(dbPlatform == null)
         throw new MigrationException(
             string.Format(Resources.CouldNotResolvePlatformAlias, parameters.PlatformAlias));
 }
 public void Execute(IDbPlatform dbPlatform, IDbCommand dbCommand)
 {
     using(StreamWriter sw = new StreamWriter(fileName, true))
         sw.WriteLine(dbCommand.CommandText);
 }
 private static IDbTransaction BeginDdlTransaction(IDbPlatform dbPlatform, IDbConnection connection)
 {
     return dbPlatform.Capabilities.IsSupported(DbPlatformCapabilities.SupportsTransactionalDdl) ? 
         connection.BeginTransaction() :
         new NullDbTransaction(connection);
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="MigrationService"/> class.
        /// </summary>
        /// <param name="dbPlatform"></param>
        /// <param name="migrationVersionInfoManager"></param>
        /// <param name="migrationScriptExecutive"></param>
        /// <param name="nativeSqlResourceProvider"></param>
        public MigrationService(IDbPlatform dbPlatform, IMigrationVersionInfoManager migrationVersionInfoManager,
            IMigrationScriptExecutive migrationScriptExecutive, INativeSqlResourceProvider nativeSqlResourceProvider)
        {
            this.dbPlatform = dbPlatform;
            this.migrationVersionInfoManager = migrationVersionInfoManager;
            this.migrationScriptExecutive = migrationScriptExecutive;
            this.nativeSqlResourceProvider = nativeSqlResourceProvider;

            this.migrationScriptExecutive.Migrating +=
                delegate(object sender, MigrationScriptExecutionEventArgs args)
                    { InvokeMigrating(new MigrationEventArgs(args.Version, args.Mode)); };
            this.migrationScriptExecutive.Migrated +=
                delegate(object sender, MigrationScriptExecutionEventArgs args)
                    { InvokeMigrated(new MigrationEventArgs(args.Version, args.Mode)); };
        }
 public RefactoringStage(IDbPlatform dbPlatform)
 {
     this.dbPlatform = dbPlatform;
 }
        public void ExecuteMigrationScripts(IDbPlatform dbPlatform, IMigrationVersionInfoManager migrationVersionInfoManager, 
            string connectionString, MigrationScriptCollection migrationScripts, 
            long currentVersion, long? targetVersion, MigrationMode migrationMode)
        {
            using(IDbConnection dbConnection = dbPlatform.ProviderFactory.CreateConnection())
            {
                dbConnection.ConnectionString = connectionString;
                dbConnection.Open();

                IList<MigrationScript> effectiveMigrationScripts = 
                    new List<MigrationScript>(GetMigrationScripts(migrationScripts, currentVersion, targetVersion, migrationMode));
                foreach(MigrationScript migrationScript in effectiveMigrationScripts)
                {
                    using(IDbTransaction ddlTransaction = BeginDdlTransaction(dbPlatform, dbConnection))
                    {
                        using(IDbCommand dbCommand = dbConnection.CreateCommand())
                        {
                            InvokeMigrating(new MigrationScriptExecutionEventArgs(migrationMode, migrationScript.MigrationVersion));

                            foreach(string ddlScript in migrationScript.DdlScripts)
                            {
                                dbCommand.CommandText = ddlScript;
                                dbCommand.CommandType = CommandType.Text;

                                Trace.WriteLine(ddlScript);

                                //
                                // Workaround for Jet
                                if(!(ddlTransaction is NullDbTransaction))
                                    dbCommand.Transaction = ddlTransaction;

                                try
                                {
                                    dbCommandExecutionStrategy.Execute(dbPlatform, dbCommand);
                                } // try

                                // TODO: Replace with DbPlatformException or something
                                catch(Exception e)
                                {
                                    throw new MigrationException(
                                        string.Format(migrationMode == MigrationMode.Upgrade ?
                                            Properties.Resources.ErrorWhileUpgradingToVersion:
                                            Properties.Resources.ErrorWhileDowngradingToVersion, migrationScript.MigrationVersion, e.ToString()), 
                                        ddlScript, e);
                                } // catch
                                
                            } // foreach
                        } // using

                        //
                        // If we're downgrading all way down, do not register it, since SchemaInfo
                        // will be deleted too.
                        if(!(migrationMode == MigrationMode.Downgrade && targetVersion == 0 && effectiveMigrationScripts.IndexOf(migrationScript) ==
                            effectiveMigrationScripts.Count - 1))
                            migrationVersionInfoManager.RegisterMigrationVersion(ddlTransaction, migrationMode,
                                migrationScript.MigrationVersion);

                        ddlTransaction.Commit();

                        InvokeMigrated(new MigrationScriptExecutionEventArgs(migrationMode, migrationScript.MigrationVersion));
                    } // using
                } // foreach
            } // foreach
        }
 public void TextFixtureSetUp()
 {
     connectionString = ConfigurationManager.AppSettings["connectionString"];
     dbPlatform = new SQLitePlatform();
 }
 private static MigrationScriptCollection CompileMigrationScripts(IDbPlatform dbPlatform, INativeSqlResourceProvider nativeSqlResourceProvider,
     TextReader migrationDefinition, MigrationMode migrationMode)
 {
     MigrationScriptCompiler migrationScriptCompiler = new MigrationScriptCompiler(dbPlatform, nativeSqlResourceProvider, migrationMode);
     return migrationScriptCompiler.CompileMigrationScripts(migrationDefinition);
 }
 public MigrationScriptCompiler(IDbPlatform dbPlatform, INativeSqlResourceProvider nativeSqlResourceProvider, MigrationMode migrationMode)
 {
     this.dbPlatform = dbPlatform;
     this.nativeSqlResourceProvider = nativeSqlResourceProvider;
     this.migrationMode = migrationMode;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="DbSchemaProviderBase"/> class.
 /// </summary>
 /// <param name="platform"></param>
 protected DbSchemaProviderBase(IDbPlatform platform) : 
     base(platform)
 {
 }
 public SQLiteDeploymentManager(IDbPlatform platform) : 
     base(platform)
 {
 }
 /// <summary>
 /// Returns an array of <see cref="string"/> object which contains a Native SQL resource <paramref name="name"/>
 /// to be executed while downgrading from version <paramref name="version"/> 
 /// for platform <paramref name="dbPlatform"/>.
 /// </summary>
 /// <param name="dbPlatform"></param>
 /// <param name="name"></param>
 /// <param name="version"></param>
 /// <returns></returns>
 public string[] GetDowngradeResources(IDbPlatform dbPlatform, string name, long version)
 {
     return GetUpgradeResources(dbPlatform, name, version);
 }
 public SqlServer2000DeploymentManager(IDbPlatform platform) : 
     base(platform)
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="DbMigrationVersionInfoManager"/> class.
 /// </summary>
 /// <param name="dbPlatform"></param>
 /// <param name="dbCommandExecutionStrategy"></param>
 /// <param name="tableName"></param>
 public DbMigrationVersionInfoManager(IDbPlatform dbPlatform, IDbCommandExecutionStrategy dbCommandExecutionStrategy, string tableName)
 {
     this.dbPlatform = dbPlatform;
     this.dbCommandExecutionStrategy = dbCommandExecutionStrategy;
     this.tableName = tableName;
 }
 public FirebirdDeploymentManager(IDbPlatform platform) : 
     base(platform)
 {
 }
 public static string GetDbPlatformAlias(IDbPlatform dbPlatform)
 {
     return GetDbPlatformAlias(dbPlatform.GetType());
 }