github.com/aavshr/aws-sdk-go@v1.41.3/example/service/dynamodb/unitTest/unitTest.go (about)

     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.
     6  package unitTest
     7  
     8  import (
     9  	"github.com/aavshr/aws-sdk-go/aws"
    10  	"github.com/aavshr/aws-sdk-go/service/dynamodb"
    11  	"github.com/aavshr/aws-sdk-go/service/dynamodb/dynamodbattribute"
    12  	"github.com/aavshr/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)
    18  type 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"}
    24  func (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  }