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

dynamodb.*DynamoDB.BatchWriteItem   A

Complexity

Conditions 2

Size

Total Lines 12
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 9
nop 2
dl 0
loc 12
rs 9.95
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
)
10
11
// BatchWriteItem executes `BatchWriteItem` operation.
12
func (svc *DynamoDB) BatchWriteItem(ctx context.Context, r BatchWriteItemRequest) (*BatchWriteItemResult, error) {
13
	out, err := svc.RawBatchWriteItem(ctx, r.ToInput())
14
	if err == nil {
15
		return NewBatchWriteItemResult(out), nil
16
	}
17
18
	err = svc.errWrap(errors.ErrorData{
19
		Err:          err,
20
		AWSOperation: "BatchWriteItem",
21
	})
22
	svc.Errorf(err.Error())
0 ignored issues
show
introduced by
can't check non-constant format in call to Errorf
Loading history...
23
	return nil, err
24
}
25
26
// BatchWriteItemRequest has parameters for `BatchWriteItem` operation.
27
type BatchWriteItemRequest struct {
28
	RequestItems map[string][]WriteRequest
29
30
	// optional
31
	ReturnConsumedCapacity      ReturnConsumedCapacity
32
	ReturnItemCollectionMetrics ReturnItemCollectionMetrics
33
}
34
35
func (r BatchWriteItemRequest) ToInput() *SDK.BatchWriteItemInput {
0 ignored issues
show
introduced by
exported method BatchWriteItemRequest.ToInput should have comment or be unexported
Loading history...
36
	in := &SDK.BatchWriteItemInput{}
37
	if len(r.RequestItems) != 0 {
38
		m := make(map[string][]SDK.WriteRequest, len(r.RequestItems))
39
		for key, val := range r.RequestItems {
40
			list := make([]SDK.WriteRequest, len(val))
41
			for i, v := range val {
42
				list[i] = v.ToSDK()
43
			}
44
			m[key] = list
45
		}
46
		in.RequestItems = m
47
	}
48
49
	in.ReturnConsumedCapacity = SDK.ReturnConsumedCapacity(r.ReturnConsumedCapacity)
50
	in.ReturnItemCollectionMetrics = SDK.ReturnItemCollectionMetrics(r.ReturnItemCollectionMetrics)
51
	return in
52
}
53
54
// BatchWriteItemResult contains results from `BatchWriteItem` operation.
55
type BatchWriteItemResult struct {
56
	ConsumedCapacity      []ConsumedCapacity
57
	ItemCollectionMetrics map[string][]ItemCollectionMetrics
58
	UnprocessedItems      map[string][]WriteRequest
59
}
60
61
func NewBatchWriteItemResult(output *SDK.BatchWriteItemResponse) *BatchWriteItemResult {
0 ignored issues
show
introduced by
exported function NewBatchWriteItemResult should have comment or be unexported
Loading history...
62
	r := &BatchWriteItemResult{}
63
	if output == nil {
64
		return r
65
	}
66
67
	r.ConsumedCapacity = newConsumedCapacities(output.ConsumedCapacity)
68
69
	r.ItemCollectionMetrics = make(map[string][]ItemCollectionMetrics, len(output.ItemCollectionMetrics))
70
	for key, val := range output.ItemCollectionMetrics {
71
		list := make([]ItemCollectionMetrics, len(val))
72
		for i, v := range val {
73
			list[i] = newItemCollectionMetrics(v)
74
		}
75
		r.ItemCollectionMetrics[key] = list
76
	}
77
78
	r.UnprocessedItems = make(map[string][]WriteRequest, len(output.UnprocessedItems))
79
	for key, val := range output.UnprocessedItems {
80
		list := make([]WriteRequest, len(val))
81
		for i, v := range val {
82
			list[i] = newWriteRequest(v)
83
		}
84
		r.UnprocessedItems[key] = list
85
	}
86
	return r
87
}
88