Skip to content

Commit ea1fcf7

Browse files
committed
Move duplicated methods to types
1 parent e87895a commit ea1fcf7

6 files changed

Lines changed: 22 additions & 23 deletions

File tree

src/DynamoDBGenerator.SourceGenerator/Generations/AttributeExpressionName.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,7 @@ private static CodeFactory CreateStruct(ITypeSymbol typeSymbol, Func<ITypeSymbol
110110
{
111111
var dataMembers = fn(typeSymbol)
112112
.Select(x => (
113-
IsUnknown: !options.IsConvertable(x.DataMember.Type) &&
114-
x.DataMember.Type.TypeIdentifier() is UnknownType,
113+
IsUnknown: options.IsUnknown(x.DataMember.Type),
115114
DDB: x,
116115
DbRef: $"#{x.AttributeName}",
117116
AttributeReference: TypeName(x.DataMember.Type),

src/DynamoDBGenerator.SourceGenerator/Generations/AttributeExpressionValue.cs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -135,17 +135,13 @@ private static CodeFactory CreateStruct(ITypeSymbol typeSymbol, Func<ITypeSymbol
135135
.Empty<(bool IsUnknown, DynamoDbDataMember DDB, string AttributeReference, string
136136
AttributeInterfaceName)>()
137137
: fn(typeSymbol)
138-
.Select(x =>
139-
{
140-
return (
141-
IsUnknown: !options.IsConvertable(x.DataMember.Type) &&
142-
x.DataMember.Type.TypeIdentifier() is UnknownType,
143-
DDB: x,
144-
AttributeReference: TypeName(x.DataMember.Type),
145-
AttributeInterfaceName:
146-
$"{Constants.DynamoDBGenerator.Marshaller.AttributeExpressionValueTrackerInterface}<{x.DataMember.Type.Representation().annotated}>"
147-
);
148-
})
138+
.Select(x => (
139+
IsUnknown: options.IsUnknown(x.DataMember.Type),
140+
DDB: x,
141+
AttributeReference: TypeName(x.DataMember.Type),
142+
AttributeInterfaceName:
143+
$"{Constants.DynamoDBGenerator.Marshaller.AttributeExpressionValueTrackerInterface}<{x.DataMember.Type.Representation().annotated}>"
144+
))
149145
.ToArray();
150146

151147
var structName = TypeName(typeSymbol);

src/DynamoDBGenerator.SourceGenerator/Generations/Marshalling/Keys.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,15 @@ private static IEnumerable<string> CreateAssignment(string validateReference, st
2323
DynamoDbDataMember dataMember, MarshallerOptions options)
2424
{
2525
const string reference = "value";
26-
var expectedType = dataMember.DataMember.Type.Representation().original;
27-
var expression = $"{keyReference} is {expectedType} {{ }} {reference}";
26+
var expression = $"{keyReference} is {dataMember.DataMember.OriginalRepresentation} {{ }} {reference}";
2827

2928
var innerContent = $"if ({expression}) "
3029
.CreateScope(
3130
$@"{DictionaryName}.Add(""{dataMember.AttributeName}"", {InvokeMarshallerMethod(dataMember.DataMember.Type, reference, $"nameof({keyReference})", options)});")
3231
.Concat($"else if ({keyReference} is null) ".CreateScope(
3332
$@"throw {ExceptionHelper.KeysArgumentNullExceptionMethod}(""{dataMember.DataMember.Name}"", ""{keyReference}"");"))
3433
.Concat("else".CreateScope(
35-
$@"throw {ExceptionHelper.KeysInvalidConversionExceptionMethod}(""{dataMember.DataMember.Name}"", ""{keyReference}"", {keyReference}, ""{expectedType}"");"));
34+
$@"throw {ExceptionHelper.KeysInvalidConversionExceptionMethod}(""{dataMember.DataMember.Name}"", ""{keyReference}"", {keyReference}, ""{dataMember.DataMember.OriginalRepresentation}"");"));
3635

3736
return $"if ({validateReference})".CreateScope(innerContent);
3837
}

src/DynamoDBGenerator.SourceGenerator/Generations/Marshalling/Marshaller.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,18 @@ private static CodeFactory CreateDictionaryMethod(ITypeSymbol typeSymbol, Func<I
2222
.Select(x =>
2323
{
2424
var accessPattern = $"{ParamReference}.{x.DataMember.Name}";
25-
var isNullable = x.DataMember.Type.IsNullable();
2625

2726
var marshallerInvocation = InvokeMarshallerMethod(x.DataMember.Type, accessPattern, $"\"{x.DataMember.Name}\"", options);
2827

29-
var assignment = isNullable
28+
var assignment = x.DataMember.IsNullable
3029
? $"if ({x.DataMember.NameAsCamelCase} is not null)"
3130
.CreateScope($"{DictionaryReference}[\"{x.AttributeName}\"] = {x.DataMember.NameAsCamelCase};")
3231
.Prepend($"var {x.DataMember.NameAsCamelCase} = {marshallerInvocation};")
3332
: new[] { $"{DictionaryReference}[\"{x.AttributeName}\"] = {marshallerInvocation};" };
3433

3534
return (
3635
dictionaryAssignment: assignment,
37-
capacityTernary: isNullable ? x.DataMember.Type.NotNullTernaryExpression(in accessPattern, "1", "0") : "1",
36+
capacityTernary: x.DataMember.IsNullable ? x.DataMember.Type.NotNullTernaryExpression(in accessPattern, "1", "0") : "1",
3837
x.DataMember.Type
3938
);
4039
})

src/DynamoDBGenerator.SourceGenerator/Types/DataMember.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,15 @@ private DataMember(in ISymbol symbol, in string fieldName, in ITypeSymbol type,
1414
Type = type;
1515
BaseSymbol = symbol;
1616
IsAssignable = isAssignable;
17-
17+
IsNullable = type.IsNullable();
1818
NameAsPrivateField = fieldName.ToPrivateFieldFromPascal();
1919
NameAsCamelCase = fieldName.ToCamelCaseFromPascal();
20+
OriginalRepresentation = type.Representation().original;
2021
}
2122

2223
public static DataMember FromField(in IFieldSymbol fieldSymbol)
2324
{
24-
var symbol = (ISymbol)fieldSymbol;
25+
ISymbol symbol = fieldSymbol;
2526
var name = fieldSymbol.Name;
2627
var type = fieldSymbol.Type;
2728

@@ -30,7 +31,7 @@ public static DataMember FromField(in IFieldSymbol fieldSymbol)
3031

3132
public static DataMember FromProperty(in IPropertySymbol property)
3233
{
33-
var symbol = (ISymbol)property;
34+
ISymbol symbol = property;
3435
var name = property.Name;
3536
var type = property.Type;
3637

@@ -48,9 +49,12 @@ public static DataMember FromProperty(in IPropertySymbol property)
4849
public string Name { get; }
4950

5051

52+
public string OriginalRepresentation { get; }
5153
public string NameAsPrivateField { get; }
5254
public string NameAsCamelCase { get; }
5355

56+
public bool IsNullable { get; }
57+
5458
/// <summary>
5559
/// The type of the data member.
5660
/// </summary>

src/DynamoDBGenerator.SourceGenerator/Types/MarshallerOptions.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ public readonly struct MarshallerOptions
1717
public string FullName { get; }
1818
public string FieldDeclaration { get; }
1919

20-
20+
public bool IsUnknown(ITypeSymbol typeSymbol) => !IsConvertable(typeSymbol) && typeSymbol.TypeIdentifier() is UnknownType;
21+
22+
2123
private MarshallerOptions(
2224
INamedTypeSymbol originalType,
2325
INamedTypeSymbol convertersType,

0 commit comments

Comments
 (0)