Skip to content

Commit 2401c4d

Browse files
committed
add Enum and EnumMembers attributes
1 parent ec0e052 commit 2401c4d

17 files changed

+99
-7
lines changed

Generator/Enumeration.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ namespace Efrpg
55
public class Enumeration
66
{
77
public readonly string EnumName;
8-
public readonly List<KeyValuePair<string, string>> Items;
8+
public readonly List<EnumerationMember> Items;
99

10-
public Enumeration(string enumName, List<KeyValuePair<string, string>> items)
10+
public List<string> EnumAttributes = new List<string>();
11+
12+
public Enumeration(string enumName, List<EnumerationMember> items)
1113
{
1214
EnumName = enumName;
1315
Items = items;

Generator/EnumerationMember.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
using System.Collections.Generic;
2+
3+
namespace Efrpg
4+
{
5+
public class EnumerationMember
6+
{
7+
public readonly string Key;
8+
public readonly string Value;
9+
public readonly Dictionary<string, object> AllValues;
10+
11+
public List<string> Attributes = new List<string>();
12+
13+
public EnumerationMember(string key, string value, Dictionary<string, object> allValues)
14+
{
15+
Key = key;
16+
Value = value;
17+
AllValues = allValues;
18+
}
19+
}
20+
}

Generator/Filtering/DbContextFilter.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ protected DbContextFilter()
3030
public abstract string MappingTableRename(string mappingTable, string tableName, string entityName);
3131
public abstract void UpdateTable(Table table);
3232
public abstract void UpdateColumn(Column column, Table table);
33+
public abstract void UpdateEnum(Enumeration enumeration);
34+
public abstract void UpdateEnumMember(EnumerationMember enumerationMember);
3335
public abstract void ViewProcessing(Table view);
3436
public abstract string StoredProcedureRename(StoredProcedure sp);
3537
public abstract string StoredProcedureReturnModelRename(string name, StoredProcedure sp);

Generator/Filtering/IDbContextFilter.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ public interface IDbContextFilter
2121
string MappingTableRename(string mappingTable, string tableName, string entityName);
2222
void UpdateTable(Table table);
2323
void UpdateColumn(Column column, Table table);
24+
void UpdateEnum(Enumeration enumeration);
25+
void UpdateEnumMember(EnumerationMember enumerationMember);
2426
void ViewProcessing(Table view);
2527
string StoredProcedureRename(StoredProcedure sp);
2628
string StoredProcedureReturnModelRename(string name, StoredProcedure sp);

Generator/Filtering/MultiContextFilter.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,16 @@ public override void UpdateColumn(Column column, Table table)
346346
Settings.UpdateColumn?.Invoke(column, table, null);
347347
}
348348

349+
public override void UpdateEnum(Enumeration enumeration)
350+
{
351+
352+
}
353+
354+
public override void UpdateEnumMember(EnumerationMember enumerationMember)
355+
{
356+
357+
}
358+
349359
public override void ViewProcessing(Table view)
350360
{
351361
// Find the multi-context settings for this view

Generator/Filtering/SingleContextFilter.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,16 @@ public override void UpdateColumn(Column column, Table table)
9494
Settings.UpdateColumn?.Invoke(column, table, EnumDefinitions);
9595
}
9696

97+
public override void UpdateEnum(Enumeration enumeration)
98+
{
99+
Settings.UpdateEnum?.Invoke(enumeration);
100+
}
101+
102+
public override void UpdateEnumMember(EnumerationMember enumerationMember)
103+
{
104+
Settings.UpdateEnumMember?.Invoke(enumerationMember);
105+
}
106+
97107
public override void ViewProcessing(Table view)
98108
{
99109
// Callback to Settings, which can be set within <database>.tt

Generator/Generator.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
<ItemGroup>
6262
<Compile Include="AssemblyHelper.cs" />
6363
<Compile Include="EfrpgVersion.cs" />
64+
<Compile Include="EnumerationMember.cs" />
6465
<Compile Include="FileManagement\VisualStudioFileManager.cs" />
6566
<Compile Include="FileManagement\CustomFileManager.cs" />
6667
<Compile Include="FileManagement\EntityFrameworkTemplateFileManager.cs" />

Generator/Generators/Generator.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -416,6 +416,15 @@ private void AddTablesToFilters(List<RawTable> rawTables)
416416

417417
table.Suffix = Settings.TableSuffix;
418418
}
419+
420+
foreach (var enumeration in filter.Enums)
421+
{
422+
filter.UpdateEnum(enumeration);
423+
foreach (var enumerationMember in enumeration.Items)
424+
{
425+
filter.UpdateEnumMember(enumerationMember);
426+
}
427+
}
419428
}
420429
}
421430

Generator/Readers/DatabaseReader.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -807,7 +807,8 @@ public List<Enumeration> ReadEnums(List<EnumerationSettings> enums)
807807
{
808808
using (var rdr = cmd.ExecuteReader())
809809
{
810-
var items = new List<KeyValuePair<string, string>>();
810+
var items = new List<EnumerationMember>();
811+
811812
while (rdr.Read())
812813
{
813814
var name = rdr["NameField"].ToString().Trim();
@@ -823,11 +824,20 @@ public List<Enumeration> ReadEnums(List<EnumerationSettings> enums)
823824
if (string.IsNullOrEmpty(value))
824825
continue;
825826

826-
items.Add(new KeyValuePair<string, string>(name, value));
827+
var allValues = new Dictionary<string, object>();
828+
for (var n = 2; n < rdr.FieldCount; ++n)
829+
{
830+
var o = rdr.GetValue(n);
831+
allValues.Add(rdr.GetName(n), o != DBNull.Value ? o : null);
832+
}
833+
834+
items.Add(new EnumerationMember(name, value, allValues));
827835
}
828836

829837
if(items.Any())
838+
{
830839
result.Add(new Enumeration(e.Name, items));
840+
}
831841
}
832842
}
833843
catch (Exception)

Generator/Readers/PostgreSqlDatabaseReader.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ protected override string MultiContextSQL()
193193

194194
protected override string EnumSQL(string table, string nameField, string valueField)
195195
{
196-
return string.Format(@"SELECT ""{0}"" as ""NameField"", ""{1}"" as ""ValueField"" FROM ""{2}"";", nameField, valueField, table);
196+
return string.Format(@"SELECT ""{0}"" as ""NameField"", ""{1}"" as ""ValueField"", * FROM ""{2}"";", nameField, valueField, table);
197197
}
198198

199199
protected override string SequenceSQL()

0 commit comments

Comments
 (0)