forked from gusaul/go-dynamock
/
update_item.go
43 lines (36 loc) · 1.03 KB
/
update_item.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package examples
import (
"context"
"strconv"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/dynamodb"
"github.com/aws/aws-sdk-go-v2/service/dynamodb/dynamodbattribute"
)
// UpdateName - example func using UpdateItemRequest method
func UpdateNameByID(ID int, name string) (*string, error) {
param := &dynamodb.UpdateItemInput{
Key: map[string]dynamodb.AttributeValue{
"id": {N: aws.String(strconv.Itoa(ID))},
},
AttributeUpdates: map[string]dynamodb.AttributeValueUpdate{
"name": {Action: dynamodb.AttributeActionPut, Value: &dynamodb.AttributeValue{N: aws.String(name)}},
},
TableName: aws.String("employee"),
}
req := Fake.DB.UpdateItemRequest(param)
if req.Error != nil {
return nil, req.Error
}
var value *string
output, err := req.Send(context.Background())
if err != nil {
return nil, err
}
if v, ok := output.UpdateItemOutput.Attributes["name"]; ok {
err := dynamodbattribute.Unmarshal(&v, &value)
if err != nil {
return aws.String(""), err
}
}
return value, nil
}