private MigrationScript LoadMigrationFromFile(string script, string prefix, string separator) { Check.FileExists(script, nameof(script)); // V1_3_1__Migration_description.sql Check.NotNullOrEmpty(prefix, nameof(prefix)); // V Check.NotNullOrEmpty(separator, nameof(separator)); // __ MigrationUtil.ExtractVersionAndDescription(script, prefix, separator, out string version, out string description); return(new MigrationScript(script, version, description)); }
public IEnumerable <MigrationScript> GetMigrations(string prefix, string separator, string suffix, Encoding?encoding = null) { Check.NotNullOrEmpty(prefix, nameof(prefix)); // V Check.NotNullOrEmpty(separator, nameof(separator)); // __ Check.NotNullOrEmpty(suffix, nameof(suffix)); // .sql var migrations = new List <EmbeddedResourceMigrationScript>(); encoding ??= Encoding.UTF8; foreach (var assembly in _assemblies) { assembly.GetManifestResourceNames() .Where(x => _filters.Any() ? _filters.Any(f => x.StartsWith(f, StringComparison.OrdinalIgnoreCase)) : true) .Where(x => x.EndsWith(suffix, StringComparison.OrdinalIgnoreCase)) .Where(x => //GetFileName(x).StartsWith(prefix, StringComparison.OrdinalIgnoreCase) GetFileName(x).Substring(GetFileName(x).IndexOf(separator) + separator.Length, prefix.Length).Equals(prefix, StringComparison.OrdinalIgnoreCase) // "*V*" ) .Select(x => { MigrationUtil.ExtractVersionAndDescription(GetFileName(x), prefix, separator, out string version, out string description); return(new EmbeddedResourceMigrationScript( version, description, name: GetFileName(x), content: assembly.GetManifestResourceStream(x), type: MetadataType.Migration, encoding)); }) .ToList() .ForEach(x => migrations.Add(x)); } return(migrations.Cast <MigrationBase>() // NET 3.5 .CheckForDuplicateVersion() .OrderBy(x => x.Version) .Cast <MigrationScript>() // NET 3.5 .ToList()); }
public IEnumerable <MigrationScript> GetMigrations(string prefix, string separator, string suffix, Encoding?encoding = null) { Check.NotNullOrEmpty(prefix, nameof(prefix)); // V Check.NotNullOrEmpty(separator, nameof(separator)); // __ Check.NotNullOrEmpty(suffix, nameof(suffix)); // .sql var migrations = new List <FileMigrationScript>(); encoding ??= Encoding.UTF8; foreach (string location in _locations.Distinct(StringComparer.OrdinalIgnoreCase)) // Remove duplicate locations if any { DirectoryInfo dirToScan = ResolveDirectory(location); if (!dirToScan.Exists) { continue; } dirToScan.GetFiles("*", SearchOption.AllDirectories) // Get scripts recursively .Where(f => !migrations.Any(m => m.Path == f.FullName) // Scripts not already loaded //&& f.Name.StartsWith(prefix, StringComparison.OrdinalIgnoreCase) // "V*" && f.Name.Substring(f.Name.IndexOf(separator) + separator.Length, prefix.Length).Equals(prefix, StringComparison.OrdinalIgnoreCase) && // "*V*" f.Name.EndsWith(suffix, StringComparison.OrdinalIgnoreCase)) // "*.sql" .Select(f => { MigrationUtil.ExtractVersionAndDescription(f.FullName, prefix, separator, out string version, out string description); return(new FileMigrationScript(path: f.FullName, version, description, MetadataType.Migration, encoding)); }) .ToList() .ForEach(x => migrations.Add(x)); } return(migrations.Cast <MigrationBase>() // NET 3.5 .CheckForDuplicateVersion() .OrderBy(x => x.Version) .Cast <MigrationScript>() // NET 3.5 .ToList()); }
public void When_migration_name_format_is_incorrect_Throws_EvolveConfigurationException(string script) { Assert.Throws <EvolveConfigurationException>(() => MigrationUtil.ExtractVersionAndDescription(script, "V", "__", out string version, out string description)); }
public void Can_get_migration_version_and_description(string script, string expectedVersion, string expectedDescription) { MigrationUtil.ExtractVersionAndDescription(script, "V", "__", out string version, out string description); Assert.Equal(expectedVersion, version); Assert.Equal(expectedDescription, description); }
public void When_migration_name_format_is_incorrect_Throws_EvolveConfigurationException(string script) { Assert.Throws <EvolveConfigurationException>(() => MigrationUtil.ExtractVersionAndDescription(script, TestContext.SqlMigrationPrefix, TestContext.SqlMigrationSeparator, out string version, out string description)); }
public void Can_get_migration_version_and_description(string script, string expectedVersion, string expectedDescription) { MigrationUtil.ExtractVersionAndDescription(script, TestContext.SqlMigrationPrefix, TestContext.SqlMigrationSeparator, out string version, out string description); Assert.Equal(expectedVersion, version); Assert.Equal(expectedDescription, description); }