Passed
Pull Request — master (#8)
by eval
01:37 queued 10s
created

dynamodb.PutItemRequest.ToInput   C

Complexity

Conditions 9

Size

Total Lines 43
Code Lines 27

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 9
eloc 27
nop 0
dl 0
loc 43
rs 6.6666
c 0
b 0
f 0
1
package dynamodb
2
3
import (
4
	"context"
5
6
	SDK "github.com/aws/aws-sdk-go-v2/service/dynamodb"
7
8
	"github.com/evalphobia/aws-sdk-go-v2-wrapper/errors"
9
	"github.com/evalphobia/aws-sdk-go-v2-wrapper/private/pointers"
10
)
11
12
// PutItem executes `PutItem` operation.
13
func (svc *DynamoDB) PutItem(ctx context.Context, r PutItemRequest) (*PutItemResult, error) {
14
	out, err := svc.RawPutItem(ctx, r.ToInput())
15
	if err == nil {
16
		return NewPutItemResult(out), nil
17
	}
18
19
	err = svc.errWrap(errors.ErrorData{
20
		Err:          err,
21
		AWSOperation: "PutItem",
22
	})
23
	svc.Errorf(err.Error())
0 ignored issues
show
introduced by
can't check non-constant format in call to Errorf
Loading history...
24
	return nil, err
25
}
26
27
// PutItemRequest has parameters for `PutItem` operation.
28
type PutItemRequest struct {
29
	TableName string
30
	Item      map[string]AttributeValue
31
32
	// optional
33
	ConditionExpression         string
34
	ConditionalOperator         ConditionalOperator
35
	Expected                    map[string]ExpectedAttributeValue
36
	ExpressionAttributeNames    map[string]string
37
	ExpressionAttributeValues   map[string]AttributeValue
38
	ReturnConsumedCapacity      ReturnConsumedCapacity
39
	ReturnItemCollectionMetrics ReturnItemCollectionMetrics
40
	ReturnValues                ReturnValue
41
}
42
43
func (r PutItemRequest) ToInput() *SDK.PutItemInput {
0 ignored issues
show
introduced by
exported method PutItemRequest.ToInput should have comment or be unexported
Loading history...
44
	in := &SDK.PutItemInput{}
45
46
	if r.TableName != "" {
47
		in.TableName = pointers.String(r.TableName)
48
	}
49
50
	if len(r.Item) != 0 {
51
		m := make(map[string]SDK.AttributeValue, len(r.Item))
52
		for key, val := range r.Item {
53
			m[key] = val.ToSDK()
54
		}
55
		in.Item = m
56
	}
57
58
	if r.ConditionExpression != "" {
59
		in.ConditionExpression = pointers.String(r.ConditionExpression)
60
	}
61
62
	in.ConditionalOperator = SDK.ConditionalOperator(r.ConditionalOperator)
63
64
	if len(r.Expected) != 0 {
65
		m := make(map[string]SDK.ExpectedAttributeValue, len(r.Expected))
66
		for key, val := range r.Expected {
67
			m[key] = val.ToSDK()
68
		}
69
		in.Expected = m
70
	}
71
72
	in.ExpressionAttributeNames = r.ExpressionAttributeNames
73
74
	if len(r.ExpressionAttributeValues) != 0 {
75
		m := make(map[string]SDK.AttributeValue, len(r.ExpressionAttributeValues))
76
		for key, val := range r.ExpressionAttributeValues {
77
			m[key] = val.ToSDK()
78
		}
79
		in.ExpressionAttributeValues = m
80
	}
81
82
	in.ReturnConsumedCapacity = SDK.ReturnConsumedCapacity(r.ReturnConsumedCapacity)
83
	in.ReturnItemCollectionMetrics = SDK.ReturnItemCollectionMetrics(r.ReturnItemCollectionMetrics)
84
	in.ReturnValues = SDK.ReturnValue(r.ReturnValues)
85
	return in
86
}
87
88
// PutItemResult contains results from `PutItem` operation.
89
type PutItemResult struct {
90
	Attributes            map[string]AttributeValue
91
	ConsumedCapacity      ConsumedCapacity
92
	ItemCollectionMetrics ItemCollectionMetrics
93
}
94
95
func NewPutItemResult(output *SDK.PutItemResponse) *PutItemResult {
0 ignored issues
show
introduced by
exported function NewPutItemResult should have comment or be unexported
Loading history...
96
	r := &PutItemResult{}
97
	if output == nil {
98
		return r
99
	}
100
101
	r.Attributes = newAttributeValueMap(output.Attributes)
102
103
	if output.ConsumedCapacity != nil {
104
		r.ConsumedCapacity = newConsumedCapacity(*output.ConsumedCapacity)
105
	}
106
	if output.ItemCollectionMetrics != nil {
107
		r.ItemCollectionMetrics = newItemCollectionMetrics(*output.ItemCollectionMetrics)
108
	}
109
	return r
110
}
111