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; } |
