@@ -541,6 +541,50 @@ var itemEncodingTests = []struct {
541
541
"Embedded" : & types.AttributeValueMemberS {Value : "OK" },
542
542
},
543
543
},
544
+ {
545
+ name : "field with embedded struct + omitempty (empty)" ,
546
+ in : Issue247 {ID : 1 , Name : "test" },
547
+ out : Item {
548
+ "id" : & types.AttributeValueMemberN {Value : "1" },
549
+ "name" : & types.AttributeValueMemberS {Value : "test" },
550
+ },
551
+ },
552
+ {
553
+ name : "field with embedded struct + omitempty (not empty)" ,
554
+ in : Issue247 {
555
+ ID : 1 ,
556
+ Name : "test" ,
557
+ Addition : Issue247Field {Issue247Embedded : Issue247Embedded {EmbeddedID : 123 }},
558
+ },
559
+ out : Item {
560
+ "id" : & types.AttributeValueMemberN {Value : "1" },
561
+ "name" : & types.AttributeValueMemberS {Value : "test" },
562
+ "addition" : & types.AttributeValueMemberM {Value : Item {"EmbeddedID" : & types.AttributeValueMemberN {Value : "123" }}},
563
+ },
564
+ },
565
+ {
566
+ name : "field with embedded struct subfield + omitempty (empty)" ,
567
+ in : Issue247Alt {ID : 1 , Name : "test" , Addition : Issue247FieldAlt {}},
568
+ out : Item {
569
+ "id" : & types.AttributeValueMemberN {Value : "1" },
570
+ "name" : & types.AttributeValueMemberS {Value : "test" },
571
+ },
572
+ },
573
+ {
574
+ name : "field with embedded struct subfield + omitempty (not empty)" ,
575
+ in : Issue247Alt {ID : 1 , Name : "test" , Addition : Issue247FieldAlt {
576
+ Field : Issue247Embedded {EmbeddedID : 123 },
577
+ }},
578
+ out : Item {
579
+ "id" : & types.AttributeValueMemberN {Value : "1" },
580
+ "name" : & types.AttributeValueMemberS {Value : "test" },
581
+ "addition" : & types.AttributeValueMemberM {Value : Item {
582
+ "Field" : & types.AttributeValueMemberM {Value : Item {
583
+ "EmbeddedID" : & types.AttributeValueMemberN {Value : "123" },
584
+ }},
585
+ }},
586
+ },
587
+ },
544
588
{
545
589
name : "sets" ,
546
590
in : struct {
@@ -969,6 +1013,27 @@ func byteSlicePtr(a []byte) *[]byte {
969
1013
return & a
970
1014
}
971
1015
1016
+ type Issue247 struct {
1017
+ ID int `dynamo:"id,hash" json:"id"`
1018
+ Name string `dynamo:"name,range" json:"name"`
1019
+ Addition Issue247Field `dynamo:"addition,omitempty"`
1020
+ }
1021
+ type Issue247Field struct {
1022
+ Issue247Embedded
1023
+ }
1024
+ type Issue247Embedded struct {
1025
+ EmbeddedID int
1026
+ }
1027
+
1028
+ type Issue247Alt struct {
1029
+ ID int `dynamo:"id,hash" json:"id"`
1030
+ Name string `dynamo:"name,range" json:"name"`
1031
+ Addition Issue247FieldAlt `dynamo:"addition,omitempty"`
1032
+ }
1033
+ type Issue247FieldAlt struct {
1034
+ Field Issue247Embedded `dynamo:",omitempty"`
1035
+ }
1036
+
972
1037
var (
973
1038
_ Marshaler = new (customMarshaler )
974
1039
_ Unmarshaler = new (customMarshaler )
0 commit comments