diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2020-04-13 20:23:02 +1000 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2020-04-13 20:25:55 +1000 |
commit | 477561ad2027979bb9dd3c9ab0a8ff1db9888ecb (patch) | |
tree | 996d0601ee825c02609084f641abced6dfcbbd87 /src | |
parent | f5b9effe3945b7faf8a5b4876eb57dc52e7c7f96 (diff) | |
download | wix-477561ad2027979bb9dd3c9ab0a8ff1db9888ecb.tar.gz wix-477561ad2027979bb9dd3c9ab0a8ff1db9888ecb.tar.bz2 wix-477561ad2027979bb9dd3c9ab0a8ff1db9888ecb.zip |
Update TablesAndTuples for taking TupleDefinition.
Update nullable field logic.
Diffstat (limited to 'src')
-rw-r--r-- | src/TablesAndTuples/Program.cs | 35 | ||||
-rw-r--r-- | src/TablesAndTuples/WixTableDefinition.cs | 5 |
2 files changed, 28 insertions, 12 deletions
diff --git a/src/TablesAndTuples/Program.cs b/src/TablesAndTuples/Program.cs index 99b15a8c..83766930 100644 --- a/src/TablesAndTuples/Program.cs +++ b/src/TablesAndTuples/Program.cs | |||
@@ -100,6 +100,16 @@ namespace TablesAndTuples | |||
100 | { | 100 | { |
101 | type = "path"; | 101 | type = "path"; |
102 | } | 102 | } |
103 | else if (columnDefinition.Type == ColumnType.Number && columnDefinition.Length == 2 && | ||
104 | columnDefinition.MinValue == 0 && columnDefinition.MaxValue == 1) | ||
105 | { | ||
106 | type = "bool"; | ||
107 | } | ||
108 | |||
109 | if (columnDefinition.Type == ColumnType.Number && columnDefinition.Nullable) | ||
110 | { | ||
111 | type += "?"; | ||
112 | } | ||
103 | 113 | ||
104 | var field = new JsonObject | 114 | var field = new JsonObject |
105 | { | 115 | { |
@@ -173,7 +183,7 @@ namespace TablesAndTuples | |||
173 | var clrType = ConvertToClrType(fieldType); | 183 | var clrType = ConvertToClrType(fieldType); |
174 | fieldType = ConvertToFieldType(fieldType); | 184 | fieldType = ConvertToFieldType(fieldType); |
175 | 185 | ||
176 | var asFunction = $"As{fieldType}()"; | 186 | var asFunction = $"As{(clrType.Contains("?") ? "Nullable" : "")}{fieldType}()"; |
177 | 187 | ||
178 | yield return (Name: fieldName, Type: fieldType, ClrType: clrType, AsFunction: asFunction); | 188 | yield return (Name: fieldName, Type: fieldType, ClrType: clrType, AsFunction: asFunction); |
179 | } | 189 | } |
@@ -194,7 +204,8 @@ namespace TablesAndTuples | |||
194 | " {"); | 204 | " {"); |
195 | var startTableDef = String.Join(Environment.NewLine, | 205 | var startTableDef = String.Join(Environment.NewLine, |
196 | " public static readonly TableDefinition {1} = new TableDefinition(", | 206 | " public static readonly TableDefinition {1} = new TableDefinition(", |
197 | " \"{1}\",", | 207 | " \"{2}\",", |
208 | " {3},", | ||
198 | " new[]", | 209 | " new[]", |
199 | " {"); | 210 | " {"); |
200 | var columnDef = | 211 | var columnDef = |
@@ -203,8 +214,6 @@ namespace TablesAndTuples | |||
203 | " },"); | 214 | " },"); |
204 | var unrealDef = | 215 | var unrealDef = |
205 | " unreal: true,"; | 216 | " unreal: true,"; |
206 | var tupleNameDef = | ||
207 | " tupleDefinitionName: {1}TupleDefinitions.{2}.Name,"; | ||
208 | var endTableDef = String.Join(Environment.NewLine, | 217 | var endTableDef = String.Join(Environment.NewLine, |
209 | " tupleIdIsPrimaryKey: {1}", | 218 | " tupleIdIsPrimaryKey: {1}", |
210 | " );", | 219 | " );", |
@@ -225,7 +234,8 @@ namespace TablesAndTuples | |||
225 | sb.AppendLine(startClassDef.Replace("{1}", ns).Replace("{2}", prefix)); | 234 | sb.AppendLine(startClassDef.Replace("{1}", ns).Replace("{2}", prefix)); |
226 | foreach (var tableDefinition in tableDefinitions) | 235 | foreach (var tableDefinition in tableDefinitions) |
227 | { | 236 | { |
228 | sb.AppendLine(startTableDef.Replace("{1}", tableDefinition.Name)); | 237 | var tupleDefinition = tableDefinition.Tupleless ? "null" : $"{prefix}TupleDefinitions.{tableDefinition.TupleDefinitionName}"; |
238 | sb.AppendLine(startTableDef.Replace("{1}", tableDefinition.VariableName).Replace("{2}", tableDefinition.Name).Replace("{3}", tupleDefinition)); | ||
229 | foreach (var columnDefinition in tableDefinition.Columns) | 239 | foreach (var columnDefinition in tableDefinition.Columns) |
230 | { | 240 | { |
231 | sb.Append(columnDef.Replace("{1}", columnDefinition.Name).Replace("{2}", columnDefinition.Type.ToString()).Replace("{3}", columnDefinition.Length.ToString()) | 241 | sb.Append(columnDef.Replace("{1}", columnDefinition.Name).Replace("{2}", columnDefinition.Type.ToString()).Replace("{3}", columnDefinition.Length.ToString()) |
@@ -277,16 +287,12 @@ namespace TablesAndTuples | |||
277 | { | 287 | { |
278 | sb.AppendLine(unrealDef); | 288 | sb.AppendLine(unrealDef); |
279 | } | 289 | } |
280 | if (!tableDefinition.Tupleless) | ||
281 | { | ||
282 | sb.AppendLine(tupleNameDef.Replace("{1}", prefix).Replace("{2}", tableDefinition.TupleDefinitionName)); | ||
283 | } | ||
284 | sb.AppendLine(endTableDef.Replace("{1}", tableDefinition.TupleIdIsPrimaryKey.ToString().ToLower())); | 290 | sb.AppendLine(endTableDef.Replace("{1}", tableDefinition.TupleIdIsPrimaryKey.ToString().ToLower())); |
285 | } | 291 | } |
286 | sb.AppendLine(startAllTablesDef); | 292 | sb.AppendLine(startAllTablesDef); |
287 | foreach (var tableDefinition in tableDefinitions) | 293 | foreach (var tableDefinition in tableDefinitions) |
288 | { | 294 | { |
289 | sb.AppendLine(allTableDef.Replace("{1}", tableDefinition.Name)); | 295 | sb.AppendLine(allTableDef.Replace("{1}", tableDefinition.VariableName)); |
290 | } | 296 | } |
291 | sb.AppendLine(endAllTablesDef); | 297 | sb.AppendLine(endAllTablesDef); |
292 | sb.AppendLine(endClassDef); | 298 | sb.AppendLine(endClassDef); |
@@ -465,12 +471,15 @@ namespace TablesAndTuples | |||
465 | { | 471 | { |
466 | case "bool": | 472 | case "bool": |
467 | return "Bool"; | 473 | return "Bool"; |
474 | case "bool?": | ||
475 | return "Number"; | ||
468 | 476 | ||
469 | case "string": | 477 | case "string": |
470 | case "preserved": | 478 | case "preserved": |
471 | return "String"; | 479 | return "String"; |
472 | 480 | ||
473 | case "number": | 481 | case "number": |
482 | case "number?": | ||
474 | return "Number"; | 483 | return "Number"; |
475 | 484 | ||
476 | case "path": | 485 | case "path": |
@@ -486,6 +495,8 @@ namespace TablesAndTuples | |||
486 | { | 495 | { |
487 | case "bool": | 496 | case "bool": |
488 | return "bool"; | 497 | return "bool"; |
498 | case "bool?": | ||
499 | return "bool?"; | ||
489 | 500 | ||
490 | case "string": | 501 | case "string": |
491 | case "preserved": | 502 | case "preserved": |
@@ -493,9 +504,11 @@ namespace TablesAndTuples | |||
493 | 504 | ||
494 | case "number": | 505 | case "number": |
495 | return "int"; | 506 | return "int"; |
507 | case "number?": | ||
508 | return "int?"; | ||
496 | 509 | ||
497 | case "path": | 510 | case "path": |
498 | return "string"; | 511 | return "IntermediateFieldPathValue"; |
499 | } | 512 | } |
500 | 513 | ||
501 | throw new ArgumentException(fieldType); | 514 | throw new ArgumentException(fieldType); |
diff --git a/src/TablesAndTuples/WixTableDefinition.cs b/src/TablesAndTuples/WixTableDefinition.cs index fde107ad..a826a174 100644 --- a/src/TablesAndTuples/WixTableDefinition.cs +++ b/src/TablesAndTuples/WixTableDefinition.cs | |||
@@ -9,15 +9,18 @@ namespace TablesAndTuples | |||
9 | public WixTableDefinition(string name, IEnumerable<WixColumnDefinition> columns, bool unreal, bool tupleless, string tupleDefinitionName, bool? tupleIdIsPrimaryKey) | 9 | public WixTableDefinition(string name, IEnumerable<WixColumnDefinition> columns, bool unreal, bool tupleless, string tupleDefinitionName, bool? tupleIdIsPrimaryKey) |
10 | { | 10 | { |
11 | this.Name = name; | 11 | this.Name = name; |
12 | this.VariableName = name.Replace("_", ""); | ||
12 | this.Unreal = unreal; | 13 | this.Unreal = unreal; |
13 | this.Columns = columns?.ToArray(); | 14 | this.Columns = columns?.ToArray(); |
14 | this.Tupleless = tupleless; | 15 | this.Tupleless = tupleless; |
15 | this.TupleDefinitionName = tupleless ? null : tupleDefinitionName ?? name.Replace("_", ""); | 16 | this.TupleDefinitionName = tupleless ? null : tupleDefinitionName ?? this.VariableName; |
16 | this.TupleIdIsPrimaryKey = tupleIdIsPrimaryKey ?? DeriveTupleIdIsPrimaryKey(this.Columns); | 17 | this.TupleIdIsPrimaryKey = tupleIdIsPrimaryKey ?? DeriveTupleIdIsPrimaryKey(this.Columns); |
17 | } | 18 | } |
18 | 19 | ||
19 | public string Name { get; } | 20 | public string Name { get; } |
20 | 21 | ||
22 | public string VariableName { get; } | ||
23 | |||
21 | public string TupleDefinitionName { get; } | 24 | public string TupleDefinitionName { get; } |
22 | 25 | ||
23 | public bool Unreal { get; } | 26 | public bool Unreal { get; } |