Skip to content

Commit 713656f

Browse files
committed
Batch enums definition
1 parent 73d03f1 commit 713656f

File tree

15 files changed

+581
-91
lines changed

15 files changed

+581
-91
lines changed

EntityFramework Reverse POCO Generator/EntityFramework Reverse POCO Generator.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
<IsWebBootstrapper>false</IsWebBootstrapper>
2525
<UseApplicationTrust>false</UseApplicationTrust>
2626
<BootstrapperEnabled>true</BootstrapperEnabled>
27+
<TargetFrameworkProfile />
2728
</PropertyGroup>
2829
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
2930
<PropertyGroup>
@@ -36,7 +37,7 @@
3637
<AppDesignerFolder>Properties</AppDesignerFolder>
3738
<RootNamespace>EntityFramework_Reverse_POCO_Generator</RootNamespace>
3839
<AssemblyName>EntityFramework Reverse POCO Generator</AssemblyName>
39-
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
40+
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
4041
<GeneratePkgDefFile>false</GeneratePkgDefFile>
4142
<IncludeAssemblyInVSIXContainer>false</IncludeAssemblyInVSIXContainer>
4243
<IncludeDebugSymbolsInVSIXContainer>false</IncludeDebugSymbolsInVSIXContainer>

EntityFramework.Reverse.POCO.Generator/EF.Reverse.POCO.v3.ttinclude

Lines changed: 319 additions & 41 deletions
Large diffs are not rendered by default.

Generator.Tests.Unit/FilterTests.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,26 +59,36 @@ public void SetUp()
5959

6060
// Stored procedure
6161
[TestCase("ab", FilterType.StoredProcedure, false)]
62+
63+
// Enum
64+
[TestCase("Enum.PriceType", FilterType.EnumTable, false)]
65+
[TestCase("Enum.ProductType", FilterType.EnumTable, true)]
6266
public void IsTypeExcluded(string name, FilterType filterType, bool expectedExclusion)
6367
{
6468
var item = CreateType(name, filterType);
6569
var isExcluded = _sut.IsExcluded(item);
6670
Assert.AreEqual(expectedExclusion, isExcluded);
6771
}
6872

69-
private EntityName CreateType(string name, FilterType filterType)
73+
private static EntityName CreateType(string name, FilterType filterType)
7074
{
75+
string[] split;
7176
switch (filterType)
7277
{
7378
case FilterType.Schema:
7479
return new Schema(name);
7580
case FilterType.Table:
76-
var split = name.Split('.');
81+
split = name.Split('.');
7782
return new Table(null, new Schema(split[0]), split[1], false);
7883
case FilterType.Column:
7984
return new Column { DbName = name };
8085
case FilterType.StoredProcedure:
8186
return new StoredProcedure { Schema = new Schema("dbo"), DbName = name };
87+
case FilterType.EnumSchema:
88+
return new EnumSchemaSource(name);
89+
case FilterType.EnumTable:
90+
split = name.Split('.');
91+
return new EnumTableSource(new EnumSchemaSource(split[0]), split[1]);
8292
default:
8393
throw new ArgumentOutOfRangeException(nameof(filterType), filterType, null);
8494
}

Generator.Tests.Unit/TestDbContextFilter.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,16 @@ public class TestContextFilter : SingleContextFilter
88
{
99
public TestContextFilter()
1010
{
11+
EnumerationSchemaFilters.AddRange(new List<IFilterType<EnumSchemaSource>>
12+
{
13+
new RegexIncludeFilter("^Enum$")
14+
});
15+
16+
EnumerationTableFilters.AddRange(new List<IFilterType<EnumTableSource>>
17+
{
18+
new RegexExcludeFilter("^ProductType$")
19+
});
20+
1121
SchemaFilters.AddRange(new List<IFilterType<Schema>>
1222
{
1323
// Only include the schemas 'dbo' and 'events'

Generator/EnumSchemaSource.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
namespace Efrpg
2+
{
3+
public class EnumSchemaSource : EntityName
4+
{
5+
public EnumSchemaSource(string dbName)
6+
{
7+
DbName = dbName;
8+
}
9+
}
10+
}

Generator/EnumTableSource.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
namespace Efrpg
2+
{
3+
public class EnumTableSource : EntityName
4+
{
5+
public EnumSchemaSource Schema;
6+
7+
public EnumTableSource(EnumSchemaSource schema, string dbName)
8+
{
9+
Schema = schema;
10+
DbName = dbName;
11+
}
12+
}
13+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using System;
2+
3+
namespace Efrpg.Filtering
4+
{
5+
public class EnumerationSchemaFilter : IFilterType<EnumSchemaSource>
6+
{
7+
// Filtering of stored procedures using a function.
8+
// Return true to exclude the stored procedure, return false to include it.
9+
public bool IsExcluded(EnumSchemaSource enumSchemaSource)
10+
{
11+
// Example: Exclude any stored procedure in dbo schema with "order" in its name.
12+
//if(sp.Schema.DbName.Equals("dbo", StringComparison.InvariantCultureIgnoreCase) && sp.NameHumanCase.ToLowerInvariant().Contains("order"))
13+
// return false;
14+
15+
return false;
16+
}
17+
}
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using System;
2+
3+
namespace Efrpg.Filtering
4+
{
5+
public class EnumerationTableFilter : IFilterType<EnumTableSource>
6+
{
7+
// Filtering of stored procedures using a function.
8+
// Return true to exclude the stored procedure, return false to include it.
9+
public bool IsExcluded(EnumTableSource enumTableSource)
10+
{
11+
// Example: Exclude any stored procedure in dbo schema with "order" in its name.
12+
//if(sp.Schema.DbName.Equals("dbo", StringComparison.InvariantCultureIgnoreCase) && sp.NameHumanCase.ToLowerInvariant().Contains("order"))
13+
// return false;
14+
15+
return false;
16+
}
17+
}
18+
}

Generator/Filtering/FilterSettings.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,29 @@ public static class FilterSettings
2222
public static readonly List<IFilterType<Table>> TableFilters;
2323
public static readonly List<IFilterType<Column>> ColumnFilters;
2424
public static readonly List<IFilterType<StoredProcedure>> StoredProcedureFilters;
25+
public static readonly List<IFilterType<EnumTableSource>> EnumerationTableFilters;
26+
public static readonly List<IFilterType<EnumSchemaSource>> EnumerationSchemaFilters;
2527

2628
static FilterSettings()
2729
{
2830
SchemaFilters = new List<IFilterType<Schema>>();
2931
TableFilters = new List<IFilterType<Table>>();
3032
ColumnFilters = new List<IFilterType<Column>>();
3133
StoredProcedureFilters = new List<IFilterType<StoredProcedure>>();
34+
EnumerationTableFilters = new List<IFilterType<EnumTableSource>>();
35+
EnumerationSchemaFilters = new List<IFilterType<EnumSchemaSource>>();
3236
}
3337

38+
39+
3440
public static void Reset()
3541
{
3642
SchemaFilters .RemoveAll(x => true);
3743
TableFilters .RemoveAll(x => true);
3844
ColumnFilters .RemoveAll(x => true);
3945
StoredProcedureFilters.RemoveAll(x => true);
46+
EnumerationTableFilters.RemoveAll(x => true);
47+
EnumerationSchemaFilters.RemoveAll(x => true);
4048
}
4149

4250
public static void AddDefaults()
@@ -51,6 +59,8 @@ public static void AddDefaults()
5159
AddDefaultTableFilters();
5260
AddDefaultColumnFilters();
5361
AddDefaultStoredProcedureFilters();
62+
AddDefaultEnumerationTableFilters();
63+
AddDefaultEnumerationSchemaFilters();
5464
}
5565

5666
public static void CheckSettings()
@@ -121,5 +131,23 @@ public static void AddDefaultStoredProcedureFilters()
121131
new HasNameFilter(FilterType.StoredProcedure)
122132
});
123133
}
134+
135+
public static void AddDefaultEnumerationTableFilters()
136+
{
137+
EnumerationTableFilters.AddRange(new List<IFilterType<EnumTableSource>>
138+
{
139+
// Add your own code to these custom filter classes
140+
new EnumerationTableFilter(),
141+
});
142+
}
143+
144+
public static void AddDefaultEnumerationSchemaFilters()
145+
{
146+
EnumerationSchemaFilters.AddRange(new List<IFilterType<EnumSchemaSource>>
147+
{
148+
// Add your own code to these custom filter classes
149+
new EnumerationSchemaFilter(),
150+
});
151+
}
124152
}
125153
}

Generator/Filtering/FilterType.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ public enum FilterType
55
Schema, // Can only be used on Schema
66
Table, // Can only used on Tables
77
Column, // Can only used on Columns
8-
StoredProcedure // Can only used on Stored Procedures
8+
StoredProcedure,// Can only used on Stored Procedures
9+
EnumSchema, // Can only used on Enums
10+
EnumTable // Can only used on Enums
911
}
1012
}

0 commit comments

Comments
 (0)