From 7113df7f24c1ff1303e9a8c0470af0fe6844c6a9 Mon Sep 17 00:00:00 2001 From: Jordan Marr Date: Tue, 22 Aug 2023 17:04:19 -0400 Subject: [PATCH] Refactored `FilterPatterns` type to `Filters`. --- src/SqlHydra.Cli/Console.fs | 6 +++--- src/SqlHydra.Cli/SchemaFilters.fs | 6 ++++-- src/SqlHydra.Cli/TomlConfigParser.fs | 8 ++++---- src/SqlHydra.Domain/Domain.fs | 9 +++++---- src/Tests/Npgsql/Generation.fs | 2 +- src/Tests/SqlServer/Generation.fs | 2 +- src/Tests/Sqlite/Generation.fs | 2 +- src/Tests/UnitTests/TomlConfigParser.fs | 6 +++--- 8 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/SqlHydra.Cli/Console.fs b/src/SqlHydra.Cli/Console.fs index 204e9ee8..fd7daf58 100644 --- a/src/SqlHydra.Cli/Console.fs +++ b/src/SqlHydra.Cli/Console.fs @@ -68,7 +68,7 @@ let newConfigWizard (args: Args) = Config.ProviderDbTypeAttributes = true Config.TableDeclarations = true Config.Readers = Some { ReadersConfig.ReaderType = app.DefaultReaderType } - Config.Filters = FilterPatterns.Empty // User must manually configure filter in .toml file + Config.Filters = Filters.Empty // User must manually configure filter in .toml file } | OtherDataLibrary -> { @@ -79,7 +79,7 @@ let newConfigWizard (args: Args) = Config.ProviderDbTypeAttributes = false Config.TableDeclarations = false Config.Readers = None - Config.Filters = FilterPatterns.Empty // User must manually configure filter in .toml file + Config.Filters = Filters.Empty // User must manually configure filter in .toml file } | Standalone -> { @@ -90,7 +90,7 @@ let newConfigWizard (args: Args) = Config.ProviderDbTypeAttributes = false Config.TableDeclarations = false Config.Readers = Some { ReadersConfig.ReaderType = app.DefaultReaderType } - Config.Filters = FilterPatterns.Empty // User must manually configure filter in .toml file + Config.Filters = Filters.Empty // User must manually configure filter in .toml file } AnsiConsole.MarkupLine($"[green]-[/] {args.TomlFile.Name} has been created!") diff --git a/src/SqlHydra.Cli/SchemaFilters.fs b/src/SqlHydra.Cli/SchemaFilters.fs index 287a66d9..dd0974f4 100644 --- a/src/SqlHydra.Cli/SchemaFilters.fs +++ b/src/SqlHydra.Cli/SchemaFilters.fs @@ -3,7 +3,8 @@ module SqlHydra.SchemaFilters open GlobExpressions open SqlHydra.Domain -let inline filterTables (filters: FilterPatterns) (tables: 'Table seq when 'Table : (member Schema: string) and 'Table : (member Name: string)) = +/// Applies glob include and exclude patterns to filter schemas and tables. +let inline filterTables (filters: Filters) (tables: 'Table seq when 'Table : (member Schema: string) and 'Table : (member Name: string)) = let isTableFilter (filter: string) = not (filter.Contains ".") let includeFilters = filters.Includes |> List.filter isTableFilter let excludeFilters = filters.Excludes |> List.filter isTableFilter @@ -29,7 +30,8 @@ let inline filterTables (filters: FilterPatterns) (tables: 'Table seq when 'Tabl let filteredTables = filteredPaths |> Seq.map (fun path -> tablesByPath.[path]) |> Seq.toList filteredTables -let inline filterColumns (filters: FilterPatterns) (schema: string) (table: string) (columns: Column seq when 'Column : (member Name: string)) = +/// Applies glob include and exclude patterns to filter columns. +let inline filterColumns (filters: Filters) (schema: string) (table: string) (columns: Column seq when 'Column : (member Name: string)) = let isColumnFilter (filter: string) = filter.Contains "." let includeFilters = filters.Includes |> List.filter isColumnFilter let excludeFilters = filters.Excludes |> List.filter isColumnFilter diff --git a/src/SqlHydra.Cli/TomlConfigParser.fs b/src/SqlHydra.Cli/TomlConfigParser.fs index f9e7187c..98d39ef1 100644 --- a/src/SqlHydra.Cli/TomlConfigParser.fs +++ b/src/SqlHydra.Cli/TomlConfigParser.fs @@ -53,9 +53,9 @@ let read(toml: string) = match filtersTableMaybe with | Some filtersTable -> { - FilterPatterns.Includes = filtersTable.Get "include" |> Seq.cast |> Seq.toList - FilterPatterns.Excludes = filtersTable.Get "exclude" |> Seq.cast |> Seq.toList - FilterPatterns.Restrictions = + Filters.Includes = filtersTable.Get "include" |> Seq.cast |> Seq.toList + Filters.Excludes = filtersTable.Get "exclude" |> Seq.cast |> Seq.toList + Filters.Restrictions = match filtersTable.TryGet "restrictions" with | Some restrictions -> restrictions @@ -71,7 +71,7 @@ let read(toml: string) = Map.empty } | None -> - FilterPatterns.Empty + Filters.Empty } /// Saves a Config to .toml file. diff --git a/src/SqlHydra.Domain/Domain.fs b/src/SqlHydra.Domain/Domain.fs index 90bfc388..d047f3a4 100644 --- a/src/SqlHydra.Domain/Domain.fs +++ b/src/SqlHydra.Domain/Domain.fs @@ -75,11 +75,12 @@ type ReadersConfig = ReaderType: string } -type FilterPatterns = +type Filters = { + /// Glob patterns to include "{schema}/{table}.{column}" Includes: string list - Excludes: string list - + /// Glob patterns to exclude "{schema}/{table}.{column}" + Excludes: string list /// Restrictions applied to GetSchema() calls. Ex: Map [ "Tables", [| "dbo" |]; "Views", [||]; "Columns", [||] ] Restrictions: Map } @@ -112,5 +113,5 @@ type Config = Readers: ReadersConfig option /// Filters: optional filters for schemas, tables and columns - Filters: FilterPatterns + Filters: Filters } diff --git a/src/Tests/Npgsql/Generation.fs b/src/Tests/Npgsql/Generation.fs index 4c8bf988..a0c1f2b6 100644 --- a/src/Tests/Npgsql/Generation.fs +++ b/src/Tests/Npgsql/Generation.fs @@ -16,7 +16,7 @@ let cfg = ProviderDbTypeAttributes = true TableDeclarations = false Readers = Some { ReadersConfig.ReaderType = AppInfo.info.DefaultReaderType } - Filters = FilterPatterns.Empty + Filters = Filters.Empty } [] diff --git a/src/Tests/SqlServer/Generation.fs b/src/Tests/SqlServer/Generation.fs index 5be8700a..f523ed8d 100644 --- a/src/Tests/SqlServer/Generation.fs +++ b/src/Tests/SqlServer/Generation.fs @@ -16,7 +16,7 @@ let cfg = ProviderDbTypeAttributes = true TableDeclarations = false Readers = Some { ReadersConfig.ReaderType = "Microsoft.Data.SqlClient.SqlDataReader" } - Filters = FilterPatterns.Empty + Filters = Filters.Empty } [] diff --git a/src/Tests/Sqlite/Generation.fs b/src/Tests/Sqlite/Generation.fs index 4f3ebbab..9423d00d 100644 --- a/src/Tests/Sqlite/Generation.fs +++ b/src/Tests/Sqlite/Generation.fs @@ -22,7 +22,7 @@ let cfg = ProviderDbTypeAttributes = true TableDeclarations = false Readers = Some { ReadersConfig.ReaderType = "System.Data.Common.DbDataReader" } - Filters = FilterPatterns.Empty + Filters = Filters.Empty } [] diff --git a/src/Tests/UnitTests/TomlConfigParser.fs b/src/Tests/UnitTests/TomlConfigParser.fs index 424c54e4..9223690e 100644 --- a/src/Tests/UnitTests/TomlConfigParser.fs +++ b/src/Tests/UnitTests/TomlConfigParser.fs @@ -23,7 +23,7 @@ let tests = Config.ProviderDbTypeAttributes = true Config.TableDeclarations = true Config.Readers = Some { ReadersConfig.ReaderType = "Microsoft.Data.SqlClient.SqlDataReader" } - Config.Filters = FilterPatterns.Empty + Config.Filters = Filters.Empty } let toml = TomlConfigParser.save(cfg) @@ -69,7 +69,7 @@ let tests = Config.ProviderDbTypeAttributes = true Config.TableDeclarations = false Config.Readers = Some { ReadersConfig.ReaderType = "Microsoft.Data.SqlClient.SqlDataReader" } - Config.Filters = FilterPatterns.Empty + Config.Filters = Filters.Empty } let cfg = TomlConfigParser.read(toml) @@ -96,7 +96,7 @@ let tests = Config.ProviderDbTypeAttributes = true Config.TableDeclarations = false Config.Readers = None - Config.Filters = FilterPatterns.Empty + Config.Filters = Filters.Empty } let cfg = TomlConfigParser.read(toml)