in dax/internal/client/single.go [416:528]
func (client *SingleDaxClient) build(req *request.Request) {
var buf bytes.Buffer
w := cbor.NewWriter(&buf)
defer w.Close()
switch req.Operation.Name {
case OpGetItem:
input, ok := req.Params.(*dynamodb.GetItemInput)
if !ok {
req.Error = awserr.New(request.ErrCodeSerialization, "expected *GetItemInput", nil)
return
}
if err := encodeGetItemInput(req.Context(), input, client.keySchema, w); err != nil {
req.Error = translateError(err)
return
}
case OpScan:
input, ok := req.Params.(*dynamodb.ScanInput)
if !ok {
req.Error = awserr.New(request.ErrCodeSerialization, "expected *ScanInput", nil)
return
}
if err := encodeScanInput(req.Context(), input, client.keySchema, w); err != nil {
req.Error = translateError(err)
return
}
case OpQuery:
input, ok := req.Params.(*dynamodb.QueryInput)
if !ok {
req.Error = awserr.New(request.ErrCodeSerialization, "expected *QueryInput", nil)
return
}
if err := encodeQueryInput(req.Context(), input, client.keySchema, w); err != nil {
req.Error = translateError(err)
return
}
case OpBatchGetItem:
input, ok := req.Params.(*dynamodb.BatchGetItemInput)
if !ok {
req.Error = awserr.New(request.ErrCodeSerialization, "expected *BatchGetItemInput", nil)
return
}
if err := encodeBatchGetItemInput(req.Context(), input, client.keySchema, w); err != nil {
req.Error = translateError(err)
return
}
case OpPutItem:
input, ok := req.Params.(*dynamodb.PutItemInput)
if !ok {
req.Error = awserr.New(request.ErrCodeSerialization, "expected *PutItemInput", nil)
return
}
if err := encodePutItemInput(req.Context(), input, client.keySchema, client.attrNamesListToId, w); err != nil {
req.Error = translateError(err)
return
}
case OpDeleteItem:
input, ok := req.Params.(*dynamodb.DeleteItemInput)
if !ok {
req.Error = awserr.New(request.ErrCodeSerialization, "expected *DeleteItemInput", nil)
return
}
if err := encodeDeleteItemInput(req.Context(), input, client.keySchema, w); err != nil {
req.Error = translateError(err)
return
}
case OpUpdateItem:
input, ok := req.Params.(*dynamodb.UpdateItemInput)
if !ok {
req.Error = awserr.New(request.ErrCodeSerialization, "expected *UpdateItemInput", nil)
return
}
if err := encodeUpdateItemInput(req.Context(), input, client.keySchema, w); err != nil {
req.Error = translateError(err)
return
}
case OpBatchWriteItem:
input, ok := req.Params.(*dynamodb.BatchWriteItemInput)
if !ok {
req.Error = awserr.New(request.ErrCodeSerialization, "expected *BatchWriteItemInput", nil)
return
}
if err := encodeBatchWriteItemInput(req.Context(), input, client.keySchema, client.attrNamesListToId, w); err != nil {
req.Error = translateError(err)
return
}
case OpTransactGetItems:
input, ok := req.Params.(*dynamodb.TransactGetItemsInput)
if !ok {
req.Error = awserr.New(request.ErrCodeSerialization, "expected *TransactGetItemsInput", nil)
return
}
extractedKeys := make([]map[string]*dynamodb.AttributeValue, len(input.TransactItems))
if err := encodeTransactGetItemsInput(req.Context(), input, client.keySchema, w, extractedKeys); err != nil {
req.Error = translateError(err)
return
}
case OpTransactWriteItems:
input, ok := req.Params.(*dynamodb.TransactWriteItemsInput)
if !ok {
req.Error = awserr.New(request.ErrCodeSerialization, "expected *TransactWriteItemsInput", nil)
return
}
extractedKeys := make([]map[string]*dynamodb.AttributeValue, len(input.TransactItems))
if err := encodeTransactWriteItemsInput(req.Context(), input, client.keySchema, client.attrNamesListToId, w, extractedKeys); err != nil {
req.Error = translateError(err)
return
}
default:
req.Error = awserr.New(request.InvalidParameterErrCode, "unknown op "+req.Operation.Name, nil)
return
}
req.SetBufferBody(buf.Bytes())
}