in cache-extension-demo/plugins/dynamodb.go [51:110]
func GetData(dynamodbConfig DynamodbConfiguration) string {
if dynamodbConfig.HashKey != "" {
// Create attributeValue map based on hash and sort key
var attributeMap = map[string]*dynamodb.AttributeValue{}
UpdateAttributeMap(attributeMap, dynamodbConfig)
result, err := dynamoDbClient.GetItem(&dynamodb.GetItemInput{
TableName: aws.String(dynamodbConfig.Table),
Key: attributeMap,
})
if err != nil {
if aerr, ok := err.(awserr.Error); ok {
switch aerr.Code() {
case dynamodb.ErrCodeProvisionedThroughputExceededException:
println(dynamodb.ErrCodeProvisionedThroughputExceededException, aerr.Error())
case dynamodb.ErrCodeResourceNotFoundException:
println(dynamodb.ErrCodeResourceNotFoundException, aerr.Error())
case dynamodb.ErrCodeRequestLimitExceeded:
println(dynamodb.ErrCodeRequestLimitExceeded, aerr.Error())
case dynamodb.ErrCodeInternalServerError:
println(dynamodb.ErrCodeInternalServerError, aerr.Error())
default:
println(PrintPrefix, PrettyPrint(aerr.Error()))
}
} else {
println(PrintPrefix, PrettyPrint(err.Error()))
}
return ""
}
if result.Item == nil {
println(PrintPrefix, "Could not find '"+dynamodbConfig.HashKeyValue+"'")
return ""
}
// Convert data from Map to JSON string
var data = make(map[string]string)
_ = dynamodbattribute.UnmarshalMap(result.Item, &data)
// Convert map to JSON string
jsonData, err := json.Marshal(data)
if err != nil {
println(err.Error())
}
// Add it to the cache
var value = string(jsonData)
dynamoDbCache[GetKey(dynamodbConfig)] = Dynamodb{
CacheData: CacheData{
Data: value,
CacheExpiry: GetCacheExpiry(),
},
DynamodbConfiguration: dynamodbConfig,
}
return value
} else {
println(PrintPrefix, "HashKey not available so caching will not be enabled for %s", dynamodbConfig.HashKey)
return ""
}
}