github.com/mweagle/Sparta@v1.15.0/aws/step/dynamodb.go (about) 1 package step 2 3 import ( 4 "math/rand" 5 6 "github.com/aws/aws-sdk-go/service/dynamodb" 7 gocf "github.com/mweagle/go-cloudformation" 8 ) 9 10 //////////////////////////////////////////////////////////////////////////////// 11 /* 12 ___ _ ___ _ 13 / __|___| |_ |_ _| |_ ___ _ __ 14 | (_ / -_) _| | || _/ -_) ' \ 15 \___\___|\__| |___|\__\___|_|_|_| 16 */ 17 //////////////////////////////////////////////////////////////////////////////// 18 19 // DynamoDBGetItemParameters represents params for the DynamoDBGetItem 20 // parameters. Ref: https://docs.aws.amazon.com/step-functions/latest/dg/connectors-ddb.html 21 type DynamoDBGetItemParameters struct { 22 Key map[string]*dynamodb.AttributeValue `json:",omitempty"` 23 TableName gocf.Stringable `json:",omitempty"` 24 AttributesToGet []string `json:",omitempty"` 25 ConsistentRead bool `json:",omitempty"` 26 ExpressionAttributeNames map[string]string `json:",omitempty"` 27 ProjectionExpression string `json:",omitempty"` 28 ReturnConsumedCapacity string `json:",omitempty"` 29 } 30 31 // DynamoDBGetItemState represents bindings for 32 // https://docs.aws.amazon.com/step-functions/latest/dg/connectors-ddb.html 33 type DynamoDBGetItemState struct { 34 BaseTask 35 parameters DynamoDBGetItemParameters 36 } 37 38 // MarshalJSON for custom marshalling, since this will be stringified and we need it 39 // to turn into a stringified 40 // Ref: https://docs.aws.amazon.com/step-functions/latest/dg/connectors-sns.html 41 func (dgis *DynamoDBGetItemState) MarshalJSON() ([]byte, error) { 42 return dgis.BaseTask.marshalMergedParams("arn:aws:states:::dynamodb:getItem", 43 &dgis.parameters) 44 } 45 46 // NewDynamoDBGetItemState returns an initialized DynamoDB GetItem state 47 func NewDynamoDBGetItemState(stateName string, 48 parameters DynamoDBGetItemParameters) *DynamoDBGetItemState { 49 50 dgis := &DynamoDBGetItemState{ 51 BaseTask: BaseTask{ 52 baseInnerState: baseInnerState{ 53 name: stateName, 54 id: rand.Int63(), 55 }, 56 }, 57 parameters: parameters, 58 } 59 return dgis 60 } 61 62 //////////////////////////////////////////////////////////////////////////////// 63 /* 64 ___ _ ___ _ 65 | _ \_ _| |_ |_ _| |_ ___ _ __ 66 | _/ || | _| | || _/ -_) ' \ 67 |_| \_,_|\__| |___|\__\___|_|_|_| 68 69 */ 70 //////////////////////////////////////////////////////////////////////////////// 71 72 // DynamoDBPutItemParameters represents params for the SNS notification 73 // Ref: https://docs.aws.amazon.com/sns/latest/api/API_Publish.html#API_Publish_RequestParameters 74 type DynamoDBPutItemParameters struct { 75 Item map[string]*dynamodb.AttributeValue 76 TableName gocf.Stringable 77 ConditionExpression string 78 ConsistentRead bool 79 ExpressionAttributeNames map[string]string 80 ExpressionAttributeValues map[string]*dynamodb.AttributeValue 81 ReturnConsumedCapacity string // INDEXES | TOTAL | NONE 82 ReturnItemCollectionMetrics string // SIZE | NONE 83 ReturnValues string // NONE | ALL_OLD | UPDATED_OLD | ALL_NEW | UPDATED_NEW 84 } 85 86 // DynamoDBPutItemState represents bindings for 87 // https://docs.aws.amazon.com/step-functions/latest/dg/connectors-ddb.html 88 type DynamoDBPutItemState struct { 89 BaseTask 90 parameters DynamoDBPutItemParameters 91 } 92 93 // MarshalJSON for custom marshalling, since this will be stringified and we need it 94 // to turn into a stringified 95 // Ref: https://docs.aws.amazon.com/step-functions/latest/dg/connectors-sns.html 96 func (dgis *DynamoDBPutItemState) MarshalJSON() ([]byte, error) { 97 return dgis.BaseTask.marshalMergedParams("arn:aws:states:::dynamodb:putItem", 98 &dgis.parameters) 99 } 100 101 // NewDynamoDBPutItemState returns an initialized DynamoDB PutItem state 102 func NewDynamoDBPutItemState(stateName string, 103 parameters DynamoDBPutItemParameters) *DynamoDBPutItemState { 104 105 dpis := &DynamoDBPutItemState{ 106 BaseTask: BaseTask{ 107 baseInnerState: baseInnerState{ 108 name: stateName, 109 id: rand.Int63(), 110 }, 111 }, 112 parameters: parameters, 113 } 114 return dpis 115 }