func main()

in DynamoDB-SDK-Examples/golang/WorkingWithItems/putItemConditional.go [33:89]


func main() {
    
	// Create Session
    sess, err := session.NewSession(&aws.Config{
        Region: aws.String("eu-west-1")},
    )

    // Create DynamoDB client
    svc := dynamodb.New(sess)

	// Address info
    address := Address{
		City: "Greenbank",
		Country: "USA",
		Pcode: "98253",
		Road: "89105 Bakken Rd",
		State: "WA",
    }

	// Item info
    item := Item{
        Pk: "jose.schneller@somewhere.com",
        Sk: "metadata",
		FirstName: "Jose",
		LastName: "Schneller",
		Name: "Jose Schneller",
		Username: "joses",
		Age: 27,
        Address: address,
    }

	// Marshall
    av, err := dynamodbattribute.MarshalMap(item)

    if err != nil {
        fmt.Println("Got error marshalling map:")
        fmt.Println(err.Error())
        os.Exit(1)
    }

    // Create item in table only if it doesn't already exist
    input := &dynamodb.PutItemInput{
        Item: av,
        TableName: aws.String("RetailDatabase"),
		ConditionExpression: aws.String("attribute_not_exists (pk) AND attribute_not_exists (sk)"),
    }

    _, err = svc.PutItem(input)

    if err != nil {
        fmt.Println("Got error calling PutItem:")
        fmt.Println(err.Error())
        os.Exit(1)
    }

    fmt.Println("Successfully added item to table")
}