@@ -541,6 +541,50 @@ var itemEncodingTests = []struct {
541541 "Embedded" : & types.AttributeValueMemberS {Value : "OK" },
542542 },
543543 },
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+ },
544588 {
545589 name : "sets" ,
546590 in : struct {
@@ -969,6 +1013,27 @@ func byteSlicePtr(a []byte) *[]byte {
9691013 return & a
9701014}
9711015
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+
9721037var (
9731038 _ Marshaler = new (customMarshaler )
9741039 _ Unmarshaler = new (customMarshaler )
0 commit comments