1//go:build example
2// +build example
3
4// Package unitTest demonstrates how to unit test, without needing to pass a
5// connector to every function, code that uses DynamoDB.
6package unitTest
7
8import (
9	"github.com/aws/aws-sdk-go/aws"
10	"github.com/aws/aws-sdk-go/service/dynamodb"
11	"github.com/aws/aws-sdk-go/service/dynamodb/dynamodbattribute"
12	"github.com/aws/aws-sdk-go/service/dynamodb/dynamodbiface"
13)
14
15// ItemGetter can be assigned a DynamoDB connector like:
16//	svc := dynamodb.DynamoDB(sess)
17//	getter.DynamoDB = dynamodbiface.DynamoDBAPI(svc)
18type ItemGetter struct {
19	DynamoDB dynamodbiface.DynamoDBAPI
20}
21
22// Get a value from a DynamoDB table containing entries like:
23// {"id": "my primary key", "value": "valuable value"}
24func (ig *ItemGetter) Get(id string) (value string) {
25	var input = &dynamodb.GetItemInput{
26		Key: map[string]*dynamodb.AttributeValue{
27			"id": {
28				S: aws.String(id),
29			},
30		},
31		TableName: aws.String("my_table"),
32		AttributesToGet: []*string{
33			aws.String("value"),
34		},
35	}
36	if output, err := ig.DynamoDB.GetItem(input); err == nil {
37		if _, ok := output.Item["value"]; ok {
38			dynamodbattribute.Unmarshal(output.Item["value"], &value)
39		}
40	}
41	return
42}
43