Skip to content

Commit

Permalink
fix for decoding pointer fields into slices (#228, #230)
Browse files Browse the repository at this point in the history
  • Loading branch information
guregu committed May 4, 2024
1 parent c2e6f02 commit 12b17a6
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 8 deletions.
4 changes: 2 additions & 2 deletions decode.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,14 +98,14 @@ func unmarshalAppendTo(out interface{}) func(item map[string]*dynamodb.Attribute

/*
Like:
member := new(T)
return func(item, ...) {
member := new(T)
decode(item, member)
*slice = append(*slice, *member)
}
*/
member := reflect.New(membert) // *T of *[]T
return func(item map[string]*dynamodb.AttributeValue, _ any) error {
member := reflect.New(membert) // *T of *[]T
if err := plan.decodeItem(item, member); err != nil {
return err
}
Expand Down
20 changes: 14 additions & 6 deletions decode_test.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package dynamo

import (
"maps"
"reflect"
"strconv"
"testing"
"time"

Expand Down Expand Up @@ -68,7 +70,7 @@ func TestUnmarshalAsymmetric(t *testing.T) {

func TestUnmarshalAppend(t *testing.T) {
var results []struct {
User int `dynamo:"UserID"`
User *int `dynamo:"UserID"`
Page int
Limit uint
Null interface{}
Expand All @@ -84,16 +86,22 @@ func TestUnmarshalAppend(t *testing.T) {
"Null": {NULL: &null},
}

for range [15]struct{}{} {
err := unmarshalAppend(item, &results)
do := unmarshalAppendTo(&results)

for i := range [15]struct{}{} {
item2 := maps.Clone(item)
id := 12345 + i
idstr := strconv.Itoa(id)
item2["UserID"] = &dynamodb.AttributeValue{N: &idstr}
err := do(item2, &results)
if err != nil {
t.Fatal(err)
}
}

for _, h := range results {
if h.User != 12345 || h.Page != 5 || h.Limit != 20 || h.Null != nil {
t.Error("invalid hit", h)
for i, h := range results {
if *h.User != 12345+i || h.Page != 5 || h.Limit != 20 || h.Null != nil {
t.Error("invalid hit", h, *h.User)
}
}

Expand Down

0 comments on commit 12b17a6

Please sign in to comment.