func GetData()

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 ""
	}
}