コード例 #1
0
 /// <summary>
 /// Adds all scripts found as embedded resources in the given assembly, with a custom filter (you'll need to exclude non- .SQL files yourself).
 /// </summary>
 /// <param name="builder">The builder.</param>
 /// <param name="assembly">The assembly.</param>
 /// <param name="filter">The filter. Don't forget to ignore any non- .SQL files.</param>
 /// <returns>
 /// The same builder
 /// </returns>
 public static UpgradeEngineBuilder WithScriptsEmbeddedInAssembly(this UpgradeEngineBuilder builder, Assembly assembly, Func <string, bool> filter)
 {
     return(WithScripts(builder, new EmbeddedScriptProvider(assembly, filter)));
 }
コード例 #2
0
 /// <summary>
 /// Adds all scripts found as embedded resources in the given assembly, with custom encoding.
 /// </summary>
 /// <param name="builder">The builder.</param>
 /// <param name="assembly">The assembly.</param>
 /// <param name="encoding">The encoding.</param>
 /// <returns>
 /// The same builder
 /// </returns>
 public static UpgradeEngineBuilder WithScriptsEmbeddedInAssembly(this UpgradeEngineBuilder builder, Assembly assembly, Encoding encoding)
 {
     return(WithScripts(builder, new EmbeddedScriptProvider(assembly, s => s.EndsWith(".sql", StringComparison.InvariantCultureIgnoreCase), encoding)));
 }
コード例 #3
0
 /// <summary>
 /// Logs to a custom logger.
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="log">The logger.</param>
 /// <returns>
 /// The same builder
 /// </returns>
 public static UpgradeEngineBuilder LogTo(this UpgradeEngineBuilder builder, IUpgradeLog log)
 {
     builder.Configure(c => c.Log = log);
     return(builder);
 }
コード例 #4
0
    /// <summary>
    /// Adds a single static script to the upgrader.
    /// </summary>
    /// <param name="builder">The builder.</param>
    /// <param name="name">The name of the script. This should never change once executed.</param>
    /// <param name="contents">The script body.</param>
    /// <returns>
    /// The same builder
    /// </returns>
    public static UpgradeEngineBuilder WithScript(this UpgradeEngineBuilder builder, string name, string contents)
    {
        var script = new SqlScript(name, contents);

        return(WithScripts(builder, script));
    }
コード例 #5
0
 /// <summary>
 /// Adds all scripts from a folder on the file system, with custom options (Encoding, filter, etc.).
 /// </summary>
 /// <param name="builder">The builder.</param>
 /// <param name="path">The directory path.</param>
 /// <param name="options">Options for the file System Provider</param>
 /// <returns>
 /// The same builder
 /// </returns>
 public static UpgradeEngineBuilder WithScriptsFromFileSystem(this UpgradeEngineBuilder builder, string path, FileSystemScriptOptions options)
 {
     return(WithScripts(builder, new FileSystemScriptProvider(path, options)));
 }
コード例 #6
0
 /// <summary>
 /// Adds a static set of scripts to the upgrader.
 /// </summary>
 /// <param name="builder">The builder.</param>
 /// <param name="scripts">The scripts.</param>
 /// <returns>
 /// The same builder
 /// </returns>
 public static UpgradeEngineBuilder WithScripts(this UpgradeEngineBuilder builder, params SqlScript[] scripts)
 {
     return(WithScripts(builder, (IEnumerable <SqlScript>)scripts));
 }
コード例 #7
0
 /// <summary>
 /// Adds a single static script to the upgrader.
 /// </summary>
 /// <param name="builder">The builder.</param>
 /// <param name="script">The script.</param>
 /// <returns>
 /// The same builder
 /// </returns>
 public static UpgradeEngineBuilder WithScript(this UpgradeEngineBuilder builder, SqlScript script)
 {
     return(WithScripts(builder, script));
 }
コード例 #8
0
 /// <summary>
 /// Adds a custom script provider to the upgrader.
 /// </summary>
 /// <param name="builder">The builder.</param>
 /// <param name="scriptProvider">The script provider.</param>
 /// <returns>
 /// The same builder
 /// </returns>
 public static UpgradeEngineBuilder WithScripts(this UpgradeEngineBuilder builder, IScriptProvider scriptProvider)
 {
     builder.Configure(c => c.ScriptProviders.Add(scriptProvider));
     return(builder);
 }
コード例 #9
0
 /// <summary>
 /// Adds a static set of scripts to the upgrader.
 /// </summary>
 /// <param name="builder">The builder.</param>
 /// <param name="scripts">The scripts.</param>
 /// <returns>
 /// The same builder
 /// </returns>
 public static UpgradeEngineBuilder WithScripts(this UpgradeEngineBuilder builder, IEnumerable <SqlScript> scripts)
 {
     return(WithScripts(builder, new StaticScriptProvider(scripts)));
 }
コード例 #10
0
        private void PerformUpgrade(Func <UpgradeEngineBuilder, UpgradeEngineBuilder> customBuilderTransform, UpgradeEngineBuilder builder)
        {
            var upgrader     = customBuilderTransform(builder).Build();
            var createResult = upgrader.PerformUpgrade();

            if (!createResult.Successful)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(createResult.Error);
                throw createResult.Error;
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("Success!");
                Console.ResetColor();
            }
        }
コード例 #11
0
 /// <summary>
 /// Tracks the list of executed scripts in a CockroachDb table.
 /// </summary>
 /// <param name="builder">The builder.</param>
 /// <param name="schema">The schema.</param>
 /// <param name="table">The table.</param>
 /// <returns></returns>
 public static UpgradeEngineBuilder JournalToCockroachDbTable(this UpgradeEngineBuilder builder, string schema, string table)
 {
     builder.Configure(c => c.Journal = new PostgresqlTableJournal(() => c.ConnectionManager, () => c.Log, schema, table));
     return(builder);
 }
コード例 #12
0
 public static UpgradeEngineBuilder OverrideConnectionFactory(this UpgradeEngineBuilder engineBuilder, IConnectionFactory connectionFactory)
 {
     engineBuilder.Configure(c => ((DatabaseConnectionManager)c.ConnectionManager).OverrideFactoryForTest(connectionFactory));
     return(engineBuilder);
 }
コード例 #13
0
 public static UpgradeEngineBuilder OverrideConnectionFactory(this UpgradeEngineBuilder engineBuilder, IDbConnection connection)
 {
     return(engineBuilder.OverrideConnectionFactory(new DelegateConnectionFactory(l => connection)));
 }
コード例 #14
0
 /// <summary>
 /// Logs to SqlContext.Pipe, for use with "context connection=true".
 /// </summary>
 /// <param name="builder">The builder.</param>
 /// <returns>
 /// The same builder
 /// </returns>
 public static UpgradeEngineBuilder LogToSqlContext(this UpgradeEngineBuilder builder)
 {
     return(builder.LogTo(new SqlContextUpgradeLog()));
 }
コード例 #15
0
 /// <summary>
 /// Tracks the list of executed scripts in a SQL Server table.
 /// </summary>
 /// <param name="builder">The builder.</param>
 /// <param name="schema">The schema.</param>
 /// <param name="table">The table.</param>
 /// <returns></returns>
 public static UpgradeEngineBuilder JournalToSqlTable(this UpgradeEngineBuilder builder, string schema, string table)
 {
     builder.Configure(c => c.Journal = new SqlTableJournal(() => c.ConnectionManager, () => c.Log, () => new Hasher(), schema, table));
     return(builder);
 }
コード例 #16
0
 /// <summary>
 /// Override the LogsTo to inject an any logger based on <see cref="ILogger"/>.
 /// </summary>
 /// <param name="builder">The builder.</param>
 /// <param name="logger">The logger to be used.</param>
 /// <returns>The builder itself.</returns>
 public static UpgradeEngineBuilder LogTo(this UpgradeEngineBuilder builder, ILogger logger)
 {
     builder.LogTo(new LoggerWrapper(logger));
     return(builder);
 }