public HashedFileSystemScriptsProvider(string directoryPath, FileSystemScriptOptions fileSystemScriptOptions, Func <string, bool> filter, IHashedJournal journal) : base(journal) { _directoryPath = directoryPath; _fileSystemScriptOptions = fileSystemScriptOptions; this._filter = filter; }
///<summary> ///</summary> ///<param name="directoryPath">Path to SQL upgrade scripts</param> ///<param name="options">Different options for the file system script provider</param> public FileSystemScriptProvider(string directoryPath, FileSystemScriptOptions options) { if (options==null) throw new ArgumentNullException("options"); this.directoryPath = directoryPath; this.filter = options.Filter; this.encoding = options.Encoding; this.options = options; }
public override FileSystemScriptProvider Given() { TestScripts.Create(out testPath); var options = new FileSystemScriptOptions() { IncludeSubDirectories = true }; return(new FileSystemScriptProvider(testPath, options)); }
public bool ApplyUpgrades(string scriptPath, string connectionString) { if (connectionString.StartsWith("$")) { // Use the connectionString = Environment.GetEnvironmentVariable(connectionString.Substring(1)); } var scriptPathInfo = new DirectoryInfo(scriptPath); var connectionParser = new SqlConnectionStringBuilder(connectionString); Log.Information("Executing upgrade on: {database}", connectionParser.InitialCatalog); var fsOptions = new FileSystemScriptOptions() { //Extensions = new string[] { ".sql" }, IncludeSubDirectories = true, Filter = (file) => { Log.Information("Found file {filename} for consideration", file); return(true); } }; var customLogger = new DbUpLogger(); var upgrader = DeployChanges.To .SqlDatabase(connectionString) //.WithScripts(provider) .WithScriptsFromFileSystem(scriptPathInfo.FullName, fsOptions) //.LogToAutodetectedLog() .LogToNowhere() .LogTo(customLogger) .Build(); var result = upgrader.PerformUpgrade(); if (!result.Successful) { var scripts = customLogger.BrokenScripts; var sqlException = result.Error as SqlException; var scriptName = "unknown"; if (scripts.Count > 0) { scriptName = scripts.FirstOrDefault(); } Log.Error("UpgradeSchema failed: {message} in {scriptName} (Line number: {lineNumber})", result.Error.Message, scriptName, sqlException.LineNumber); return(false); } return(true); }
public FileSystemScriptsDbUpdater(string folderName, FileSystemScriptOptions fileSystemScriptOptions, string databaseName, string connectionStringName, IDictionary <string, string> scriptVariables, bool seedData = false, Env env = Env.Undefined, IUpgradeLog upgradeLog = null) : base(folderName, databaseName, connectionStringName, scriptVariables, seedData, env, upgradeLog) { this._fileSystemScriptOptions = fileSystemScriptOptions; }
public override FileSystemScriptProvider Given() { TestScripts.Create(out testPath); // Given a filter is provided.. options = new FileSystemScriptOptions() { Filter = (a) => { _FilterExecuted = true; return(true); } }; return(new FileSystemScriptProvider(testPath, options)); }
private static DatabaseUpgradeResult ExecuteDBScript(string connectionString, string dbScriptFileName) { FileSystemScriptOptions fsso = new FileSystemScriptOptions(); fsso.IncludeSubDirectories = true; fsso.Filter = (string s) => s.EndsWith(Path.GetFileName(dbScriptFileName)); string directoryPath = Path.GetDirectoryName(dbScriptFileName); var upgrader = DeployChanges.To .MySqlDatabase(connectionString) .WithScriptsFromFileSystem(directoryPath, fsso) .LogToConsole() .JournalTo(new NullJournal()) .Build(); return(upgrader.PerformUpgrade()); }
public static DbUpdater UsingScriptsInFileSystem(string folderName, string databaseName, string connectionStringName, IDictionary <string, string> scriptVariables, FileSystemScriptOptions fileSystemScriptOptions = null, bool seedData = false, Env env = Env.Undefined, IUpgradeLog logger = null) { if (fileSystemScriptOptions == null) { fileSystemScriptOptions = new FileSystemScriptOptions() { IncludeSubDirectories = true, Filter = name => name.EndsWith(".sql") }; } return(new FileSystemScriptsDbUpdater(folderName, fileSystemScriptOptions, databaseName, connectionStringName, scriptVariables, seedData, env, logger)); }
private IEnumerable <FileInfo> GetAllFiles(string directoryPath, FileSystemScriptOptions fileSystemScriptOptions) { var files = new List <FileInfo>(); if (!Directory.Exists(directoryPath)) { throw new DirectoryNotFoundException($"No directory found at {directoryPath}."); } var directory = new DirectoryInfo(directoryPath); if (fileSystemScriptOptions.IncludeSubDirectories) { foreach (var subDirectory in directory.EnumerateDirectories()) { files.AddRange(GetAllFiles(subDirectory.FullName, fileSystemScriptOptions)); } } files.AddRange(directory.GetFiles()); return(files); }
/// <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 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)); }
public void options_should_include_sql() { var options = new FileSystemScriptOptions(); options.Extensions.ShouldContain("*.sql"); }