/// <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))); }
/// <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))); }
/// <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); }
/// <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)); }
/// <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))); }
/// <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)); }
/// <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)); }
/// <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); }
/// <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))); }
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(); } }
/// <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); }
public static UpgradeEngineBuilder OverrideConnectionFactory(this UpgradeEngineBuilder engineBuilder, IConnectionFactory connectionFactory) { engineBuilder.Configure(c => ((DatabaseConnectionManager)c.ConnectionManager).OverrideFactoryForTest(connectionFactory)); return(engineBuilder); }
public static UpgradeEngineBuilder OverrideConnectionFactory(this UpgradeEngineBuilder engineBuilder, IDbConnection connection) { return(engineBuilder.OverrideConnectionFactory(new DelegateConnectionFactory(l => connection))); }
/// <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())); }
/// <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); }
/// <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); }