/// <summary> /// Get scripts from the specified version folder. /// The version folder name is prefixed to the scriptname to make scripts with duplicate names unique when from different folders. /// </summary> /// <param name="folder">name of subfolder within directory path</param> private IEnumerable <SqlScript> GetScriptsFromFolder(string folder) { var absoluteFolderPath = Path.Combine(directoryPath, folder); var folderedFileNames = Directory.GetFiles(absoluteFolderPath, "*.sql") .Select(f => Path.Combine(folder, new FileInfo(f).Name)) .AsEnumerable(); // filter on folder\file combination if (this.filter != null) { folderedFileNames = folderedFileNames.Where(filter); } // load file contents var sqlScripts = new List <SqlScript>(); foreach (var folderedFileName in folderedFileNames) { var filePath = Path.Combine(directoryPath, folderedFileName); using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { sqlScripts.Add(SqlScript.FromStream(folderedFileName, fileStream, encoding)); } } return(sqlScripts); }
private IEnumerable <SqlScript> GetAssemblyScripts() { var allScripts = _assembly.GetManifestResourceNames().Where(_filter).ToArray() .Select(resourceName => SqlScript.FromStream(resourceName, _assembly.GetManifestResourceStream(resourceName), _encoding)) .OrderBy(sqlScript => sqlScript.Name) .ToList(); return(allScripts); }
public IEnumerable <SqlScript> GetScripts() { return(assembly .GetManifestResourceNames() .Where(filter) .OrderBy(x => x) .Select(s => SqlScript.FromStream(s, assembly.GetManifestResourceStream(s), encoding)) .ToList()); }
/// <summary> /// Gets all scripts that should be executed. /// </summary> /// <returns></returns> public IEnumerable <SqlScript> GetScripts(IConnectionManager connectionManager) { return(assemblies .Select(assembly => new { Assembly = assembly, ResourceNames = assembly.GetManifestResourceNames().Where(filter).ToArray() }) .SelectMany(x => x.ResourceNames.Select(resourceName => SqlScript.FromStream(resourceName, x.Assembly.GetManifestResourceStream(resourceName), encoding, sqlScriptOptions))) .OrderBy(sqlScript => sqlScript.Name) .ToList()); }
/// <summary> /// Gets all scripts that should be executed. /// </summary> /// <returns></returns> public IEnumerable <SqlScript> GetScripts(IConnectionManager connectionManager) { var assembliesList = this.assemblies .Select(assembly => new { Assembly = assembly, ResourceNames = assembly.GetManifestResourceNames().Where(this.filter).ToArray() }); var sqlScripts = assembliesList .SelectMany(x => x.ResourceNames.Select(resourceName => SqlScript.FromStream(resourceName, x.Assembly.GetManifestResourceStream(resourceName), this.encoding))) .OrderBy(sqlScript => sqlScript.Name) .ToList(); return(sqlScripts); }
/// <summary> /// Gets all scripts that should be executed. /// </summary> public IEnumerable <SqlScript> GetScripts(IConnectionManager connectionManager) { if (!options.UseOnlyFilenameForScriptName) { var files = new List <string>(); foreach (var scriptExtension in options.Extensions) { files.AddRange(Directory.GetFiles(directoryPath, scriptExtension, ShouldSearchSubDirectories())); } if (filter != null) { files = files.Where(filter).ToList(); } return(files.Select(x => SqlScript.FromFile(directoryPath, x, encoding, sqlScriptOptions)) .OrderBy(x => x.Name) .ToList()); } else { var files = new List <FileInfo>(); foreach (var scriptExtension in options.Extensions) { files.AddRange( new DirectoryInfo(directoryPath).GetFiles(scriptExtension, ShouldSearchSubDirectories()) ); } var dupeFiles = files.GroupBy(f => f.Name).Where(grp => grp.Count() > 1).SelectMany(f => f.Select(fi => fi.FullName)).ToList(); if (dupeFiles.Count > 0) { var sbError = new StringBuilder(); sbError.AppendLine("Duplicate filenames:"); foreach (var file in dupeFiles) { sbError.AppendLine($"- {file}"); } throw new Exception(sbError.ToString()); } if (filter != null) { files = files.Where(x => filter(x.Name)).ToList(); } return(files.Select(x => SqlScript.FromStream(x.Name, new FileStream(x.FullName, FileMode.Open, FileAccess.Read), encoding, sqlScriptOptions)) .OrderBy(x => x.Name) .ToList()); } }
public IEnumerable <SqlScript> GetScripts(IConnectionManager connectionManager) { var sqlScripts = _assembly.GetManifestResourceNames() .Where(IsApplicable) .ToArray() .Select(x => SqlScript.FromStream(x, _assembly.GetManifestResourceStream(x), Encoding.UTF8)) .OrderBy(x => { var folders = x.Name.Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries); if (folders.Length < 2) { return(folders[folders.Length - 2]); } return(x.Name); }).ToList(); return(sqlScripts); }
/// <summary> /// Gets all the migration scripts from the assemblies and ensures order. /// </summary> private List <SqlScript> GetMigrationScripts(Assembly[] assemblies) { var scripts = new List <SqlScript>(); var count = 0; foreach (var ass in assemblies) { foreach (var name in ass.GetManifestResourceNames().Where(x => ScriptsNamespaceFilter(x))) { scripts.Add(SqlScript.FromStream(name, ass.GetManifestResourceStream(name), Encoding.Default, new SqlScriptOptions { RunGroupOrder = count, ScriptType = DbUp.Support.ScriptType.RunOnce })); } count++; } return(scripts); }