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