Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

use aws-sdk-go-v2 #43

Open
wants to merge 70 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
ac0984e
go get github.com/aws/aws-sdk-go-v2/service/dynamodb
shamaton Apr 22, 2023
67df3b2
import github.com/aws/aws-sdk-go-v2/service/dynamodb
shamaton Apr 22, 2023
9bd6e90
fix dax/internal/client/projection.go
shamaton Apr 22, 2023
45cf488
fix translate methods @ request.go
shamaton Apr 22, 2023
0ecfa56
fix expressions
shamaton Apr 22, 2023
02e0852
use aws-sdk-go-v2/service/dynamodb @ request.go
shamaton Apr 22, 2023
aba99e9
use aws-sdk-go-v2/service/dynamodb @ attrval.go
shamaton Apr 22, 2023
9dcab3b
use aws-sdk-go-v2/service/dynamodb @ item.go
shamaton Apr 22, 2023
7f20648
use aws-sdk-go-v2/service/dynamodb @ response.go
shamaton Apr 22, 2023
4f55f2a
use aws-sdk-go-v2/service/dynamodb @ projection.go
shamaton Apr 23, 2023
f8a8bf9
use aws-sdk-go-v2/service/dynamodb @ single.go
shamaton Apr 23, 2023
8be6663
add github.com/aws/aws-sdk-go-v2
shamaton Apr 25, 2023
4879ea2
fix internal/cbor tests
shamaton Apr 25, 2023
cb867a9
fix internal/parser tests
shamaton Apr 25, 2023
39f8355
fix api_test, pagination_test
shamaton May 8, 2023
e848698
use smithy error in cbor
shamaton May 12, 2023
65beca5
add client logger to replace aws.Logger
shamaton May 14, 2023
61804f1
use client.Logger
shamaton May 14, 2023
1be9c6e
dax.Dax is compatible to v2 dynamodb
shamaton May 16, 2023
1cec2eb
use v2 credential provider
shamaton May 18, 2023
a30a414
fix client tests
shamaton May 18, 2023
d303535
update client package
shamaton May 18, 2023
3e8e422
use smithy-go logging
shamaton May 18, 2023
285c129
fix config.HostPorts
shamaton May 18, 2023
e2397b6
fix service_test
shamaton May 18, 2023
46730e4
WithSession functions replace to WithSDKConfig
shamaton May 18, 2023
8172ddf
fix logger called method
shamaton May 18, 2023
b5a67d6
delete NewDaxRequest
shamaton May 20, 2023
d75a83a
use v2 aws.Retryer
shamaton May 23, 2023
5190eb4
use context.Context
shamaton May 24, 2023
32b57c7
set timeout with context
shamaton May 24, 2023
b09eba9
No need to initialize and pass variables
shamaton May 25, 2023
198eba8
delete send/build methods
shamaton May 25, 2023
708eb7b
no need clientBuilder interface
shamaton May 26, 2023
9b62c58
use smithy error in cluster.go
shamaton May 26, 2023
e814f0b
replace from aws2 to aws
shamaton May 26, 2023
d2fc584
use smithy error in single.go
shamaton May 26, 2023
b27696f
rename method from SetTimeout to ContextWithTimeout
shamaton May 27, 2023
506e751
use context.Context in single.go
shamaton May 27, 2023
16f8b4f
fix tubePool.logDebug
shamaton May 27, 2023
277dd5f
always return smithy.OperationError when calling api
shamaton May 27, 2023
a83e5b0
fix stub.go
shamaton May 27, 2023
ace3dbd
fix error objects in cbor package
shamaton May 27, 2023
0c93956
fix error objects in parser package
shamaton May 28, 2023
6db3e5f
use context.Context in lru.go
shamaton May 28, 2023
fac8c61
fix regacy.go
shamaton May 28, 2023
400127a
fix error objects in client package
shamaton May 29, 2023
6b70746
use context.Context in client package
shamaton May 29, 2023
8ec50c0
comment out ValidateConfig
shamaton May 29, 2023
f4821e5
no need translateError
shamaton May 29, 2023
ada7f8f
fix error objects in client package
shamaton May 29, 2023
b69deec
make client package buildable
shamaton May 31, 2023
0b6c683
use context.Context in lru
shamaton May 31, 2023
1ad0877
fix TestTranslateLegacyNegative
shamaton Jun 1, 2023
91d6cde
fix cluster codes and tests
shamaton Jun 1, 2023
1804a9d
fix single_test
shamaton Jun 1, 2023
8ac48ad
update go.mod, not required github.com/aws/aws-sdk-go
shamaton Jun 1, 2023
9ff4a05
fix legacy.go
shamaton Jun 2, 2023
8688bf1
fix projection codes and tests
shamaton Jun 2, 2023
20de45b
fix error_test.go
shamaton Jun 2, 2023
d8872c6
CreateGlobalTableRequest is not available in dynamodb
shamaton Jun 2, 2023
0df8dc4
implement paging functionality if necessary
shamaton Jun 2, 2023
5d1e5d7
if ProjectionExpression is not nil, Should set Select type
shamaton Jun 9, 2023
9a96dfb
delete config validation and request_options tests
shamaton Jun 9, 2023
99cf40a
delete dax original retryer
shamaton Jun 9, 2023
5cc083a
delete unused code in convertDaxError
shamaton Jun 9, 2023
39275d2
delete masked BatchGetItemPages function
shamaton Aug 1, 2023
9154e67
Merge branch 'master' into v2
shamaton Aug 1, 2023
eaf620e
eliminate Config.RequestTimeout
shamaton Sep 16, 2023
14b0693
Merge remote-tracking branch 'upstream/master' into v2
shamaton Jan 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
use aws-sdk-go-v2/service/dynamodb @ request.go
  • Loading branch information
shamaton committed Apr 22, 2023
commit 02e085258527c945a3bd4101a53b0b5d148afb06
137 changes: 56 additions & 81 deletions dax/internal/client/request.go
Original file line number Diff line number Diff line change
@@ -220,9 +220,6 @@ func encodePutItemInput(ctx aws.Context, input *dynamodb.PutItemInput, keySchema
return awserr.New(request.ParamRequiredErrCode, fmt.Sprintf("input cannot be nil"), nil)
}
var err error
if err = input.Validate(); err != nil {
return err
}
if input, err = translateLegacyPutItemInput(input); err != nil {
return err
}
@@ -259,9 +256,6 @@ func encodeDeleteItemInput(ctx aws.Context, input *dynamodb.DeleteItemInput, key
return awserr.New(request.ParamRequiredErrCode, fmt.Sprintf("input cannot be nil"), nil)
}
var err error
if err = input.Validate(); err != nil {
return err
}
if input, err = translateLegacyDeleteItemInput(input); err != nil {
return err
}
@@ -295,9 +289,6 @@ func encodeUpdateItemInput(ctx aws.Context, input *dynamodb.UpdateItemInput, key
return awserr.New(request.ParamRequiredErrCode, fmt.Sprintf("input cannot be nil"), nil)
}
var err error
if err = input.Validate(); err != nil {
return err
}
if input, err = translateLegacyUpdateItemInput(input); err != nil {
return err
}
@@ -331,9 +322,6 @@ func encodeGetItemInput(ctx aws.Context, input *dynamodb.GetItemInput, keySchema
return awserr.New(request.ParamRequiredErrCode, fmt.Sprintf("input cannot be nil"), nil)
}
var err error
if err = input.Validate(); err != nil {
return err
}
if input, err = translateLegacyGetItemInput(input); err != nil {
return err
}
@@ -365,9 +353,6 @@ func encodeScanInput(ctx aws.Context, input *dynamodb.ScanInput, keySchema *lru.
return awserr.New(request.ParamRequiredErrCode, fmt.Sprintf("input cannot be nil"), nil)
}
var err error
if err = input.Validate(); err != nil {
return err
}
if input, err = translateLegacyScanInput(input); err != nil {
return err
}
@@ -395,9 +380,6 @@ func encodeQueryInput(ctx aws.Context, input *dynamodb.QueryInput, keySchema *lr
return awserr.New(request.ParamRequiredErrCode, fmt.Sprintf("input cannot be nil"), nil)
}
var err error
if err = input.Validate(); err != nil {
return err
}
if input, err = translateLegacyQueryInput(input); err != nil {
return err
}
@@ -431,9 +413,6 @@ func encodeBatchWriteItemInput(ctx aws.Context, input *dynamodb.BatchWriteItemIn
return awserr.New(request.ParamRequiredErrCode, fmt.Sprintf("input cannot be nil"), nil)
}
var err error
if err = input.Validate(); err != nil {
return err
}
if err = encodeServiceAndMethod(batchWriteItem_116217951_1_Id, writer); err != nil {
return err
}
@@ -501,9 +480,6 @@ func encodeBatchGetItemInput(ctx aws.Context, input *dynamodb.BatchGetItemInput,
return awserr.New(request.ParamRequiredErrCode, fmt.Sprintf("input cannot be nil"), nil)
}
var err error
if err = input.Validate(); err != nil {
return err
}
if input, err = translateLegacyBatchGetItemInput(input); err != nil {
return err
}
@@ -573,15 +549,16 @@ func encodeBatchGetItemInput(ctx aws.Context, input *dynamodb.BatchGetItemInput,
nil, nil, nil, nil, nil, nil, writer)
}

func encodeTransactWriteItemsInput(ctx aws.Context, input *dynamodb.TransactWriteItemsInput, keySchema *lru.Lru, attrNamesListToId *lru.Lru, writer *cbor.Writer, extractedKeys []map[string]*dynamodb.AttributeValue) error {
func encodeTransactWriteItemsInput(
ctx aws.Context,
input *dynamodb.TransactWriteItemsInput,
keySchema *lru.Lru, attrNamesListToId *lru.Lru, writer *cbor.Writer,
extractedKeys []map[string]types.AttributeValue,
) error {
if input == nil {
return awserr.New(request.ParamRequiredErrCode, "input cannot be nil", nil)
}
var err error
if err = input.Validate(); err != nil {
return err
}

if err = encodeServiceAndMethod(transactWriteItems_N1160037738_1_Id, writer); err != nil {
return err
}
@@ -632,19 +609,16 @@ func encodeTransactWriteItemsInput(ctx aws.Context, input *dynamodb.TransactWrit

tableKeySet := make(map[string]bool)
for i, twi := range input.TransactItems {
if twi == nil {
return awserr.New(request.ParamRequiredErrCode, "TransactWriteItem cannot be nil", nil)
}
var operation int
var tableName *string
var key map[string]*dynamodb.AttributeValue
var item map[string]*dynamodb.AttributeValue
var key map[string]types.AttributeValue
var item map[string]types.AttributeValue
var isItem bool = false
var conditionExpression *string
var updateExpression *string
var expressionAttributeNames map[string]*string
var expressionAttributeValues map[string]*dynamodb.AttributeValue
var rvOnConditionCheckFailure *string
var expressionAttributeNames map[string]string
var expressionAttributeValues map[string]types.AttributeValue
var rvOnConditionCheckFailure types.ReturnValuesOnConditionCheckFailure
opCount := 0
if check := twi.ConditionCheck; check != nil {
opCount++
@@ -737,7 +711,7 @@ func encodeTransactWriteItemsInput(ctx aws.Context, input *dynamodb.TransactWrit
if err := encodeNonKeyAttributes(ctx, item, keydef, attrNamesListToId, valuesWriter); err != nil {
return err
}
key = map[string]*dynamodb.AttributeValue{}
key = map[string]types.AttributeValue{}
for _, attrDef := range keydef {
key[*attrDef.AttributeName] = item[*attrDef.AttributeName]
}
@@ -769,7 +743,7 @@ func encodeTransactWriteItemsInput(ctx aws.Context, input *dynamodb.TransactWrit
}
}

if rvOnConditionCheckFailure != nil && *rvOnConditionCheckFailure == dynamodb.ReturnValuesOnConditionCheckFailureAllOld {
if rvOnConditionCheckFailure == types.ReturnValuesOnConditionCheckFailureAllOld {
if err := rvOnConditionCheckFailureWriter.WriteInt(returnValueOnConditionCheckFailureAllOld); err != nil {
return err
}
@@ -841,15 +815,16 @@ func encodeTransactWriteItemsInput(ctx aws.Context, input *dynamodb.TransactWrit
nil, nil, nil, nil, nil, nil, input.ClientRequestToken, writer)
}

func encodeTransactGetItemsInput(ctx aws.Context, input *dynamodb.TransactGetItemsInput, keySchema *lru.Lru, writer *cbor.Writer, extractedKeys []map[string]*dynamodb.AttributeValue) error {
func encodeTransactGetItemsInput(
ctx aws.Context,
input *dynamodb.TransactGetItemsInput,
keySchema *lru.Lru, writer *cbor.Writer,
extractedKeys []map[string]types.AttributeValue,
) error {
if input == nil {
return awserr.New(request.ParamRequiredErrCode, "input cannot be nil", nil)
}
var err error
if err = input.Validate(); err != nil {
return err
}

if err = encodeServiceAndMethod(transactGetItems_1866287579_1_Id, writer); err != nil {
return err
}
@@ -878,13 +853,10 @@ func encodeTransactGetItemsInput(ctx aws.Context, input *dynamodb.TransactGetIte
}()

for i, tgi := range input.TransactItems {
if tgi == nil {
return awserr.New(request.ParamRequiredErrCode, "TransactGetItem cannot be nil", nil)
}
var tableName *string
var key map[string]*dynamodb.AttributeValue
var key map[string]types.AttributeValue
var projectionExpression *string
var expressionAttributeNames map[string]*string
var expressionAttributeNames map[string]string
get := tgi.Get
tableName = get.TableName
key = get.Key
@@ -948,7 +920,7 @@ func encodeTransactGetItemsInput(ctx aws.Context, input *dynamodb.TransactGetIte
nil, nil, nil, nil, nil, nil, writer)
}

func encodeCompoundKey(key map[string]*dynamodb.AttributeValue, writer *cbor.Writer) error {
func encodeCompoundKey(key map[string]types.AttributeValue, writer *cbor.Writer) error {
var buf bytes.Buffer
w := cbor.NewWriter(&buf)
defer w.Close()
@@ -974,7 +946,7 @@ func encodeCompoundKey(key map[string]*dynamodb.AttributeValue, writer *cbor.Wri
return writer.WriteBytes(buf.Bytes())
}

func encodeNonKeyAttributes(ctx aws.Context, item map[string]*dynamodb.AttributeValue, keys []dynamodb.AttributeDefinition,
func encodeNonKeyAttributes(ctx aws.Context, item map[string]types.AttributeValue, keys []types.AttributeDefinition,
attrNamesListToId *lru.Lru, writer *cbor.Writer) error {
var buf bytes.Buffer
w := cbor.NewWriter(&buf)
@@ -994,8 +966,8 @@ func encodeScanQueryOptionalParams(
selection types.Select,
returnConsumedCapacity types.ReturnConsumedCapacity,
consistentRead *bool,
encodedExpressions map[int][]byte, segment, totalSegment, limit *int64, forward *bool,
startKey map[string]*dynamodb.AttributeValue, keySchema *lru.Lru, table string, writer *cbor.Writer) error {
encodedExpressions map[int][]byte, segment, totalSegment, limit *int32, forward *bool,
startKey map[string]types.AttributeValue, keySchema *lru.Lru, table string, writer *cbor.Writer) error {

var err error
if err = writer.WriteMapStreamHeader(); err != nil {
@@ -1060,23 +1032,23 @@ func encodeScanQueryOptionalParams(
if err = writer.WriteInt(requestParamSegment); err != nil {
return err
}
if err = writer.WriteInt64(*segment); err != nil {
if err = writer.WriteInt64(int64(*segment)); err != nil {
return err
}
}
if totalSegment != nil {
if err = writer.WriteInt(requestParamTotalSegments); err != nil {
return err
}
if err = writer.WriteInt64(*totalSegment); err != nil {
if err = writer.WriteInt64(int64(*totalSegment)); err != nil {
return err
}
}
if limit != nil {
if err = writer.WriteInt(requestParamLimit); err != nil {
return err
}
if err = writer.WriteInt64(*limit); err != nil {
if err = writer.WriteInt64(int64(*limit)); err != nil {
return err
}
}
@@ -1315,16 +1287,13 @@ func translateScanIndexForward(b *bool) int {
return 0
}

func hasDuplicatesWriteRequests(wrs []*dynamodb.WriteRequest, d []dynamodb.AttributeDefinition) bool {
func hasDuplicatesWriteRequests(wrs []types.WriteRequest, d []types.AttributeDefinition) bool {
if len(wrs) <= 1 {
return false
}
face := make([]item, len(wrs))
for i, v := range wrs {
if v == nil {
return false // continue with request processing, will fail later with proper error msg
}
face[i] = (*writeItem)(v)
face[i] = (writeItem)(v)
}

var err error
@@ -1344,8 +1313,8 @@ func hasDuplicatesWriteRequests(wrs []*dynamodb.WriteRequest, d []dynamodb.Attri
return err != nil
}

func hasDuplicateKeysAndAttributes(kaas *dynamodb.KeysAndAttributes, d []dynamodb.AttributeDefinition) bool {
if kaas == nil || len(kaas.Keys) <= 1 {
func hasDuplicateKeysAndAttributes(kaas types.KeysAndAttributes, d []types.AttributeDefinition) bool {
if len(kaas.Keys) <= 1 {
return false
}
face := make([]item, len(kaas.Keys))
@@ -1374,34 +1343,39 @@ func hasDuplicateKeysAndAttributes(kaas *dynamodb.KeysAndAttributes, d []dynamod
}

type item interface {
key(def dynamodb.AttributeDefinition) string
key(def types.AttributeDefinition) string
}

type itemKey dynamodb.AttributeDefinition
type itemKey types.AttributeDefinition

func (i itemKey) extract(v *dynamodb.AttributeValue) string {
func (i itemKey) extract(v types.AttributeValue) string {
if v == nil {
return ""
}
switch *i.AttributeType {
case dynamodb.ScalarAttributeTypeS:
if v.S != nil {
return *v.S
switch i.AttributeType {
case types.ScalarAttributeTypeS:
vv, ok := v.(*types.AttributeValueMemberS)
if ok {
return vv.Value
}
case dynamodb.ScalarAttributeTypeN:
if v.N != nil {
return *v.N
case types.ScalarAttributeTypeN:
vv, ok := v.(*types.AttributeValueMemberN)
if ok {
return vv.Value
}
case types.ScalarAttributeTypeB:
vv, ok := v.(*types.AttributeValueMemberB)
if ok {
return string(vv.Value)
}
case dynamodb.ScalarAttributeTypeB:
return string(v.B)
}
return ""
}

type writeItem dynamodb.WriteRequest
type writeItem types.WriteRequest

func (w writeItem) key(def dynamodb.AttributeDefinition) string {
var v *dynamodb.AttributeValue
func (w writeItem) key(def types.AttributeDefinition) string {
var v types.AttributeValue
if w.PutRequest != nil && w.PutRequest.Item != nil {
v = w.PutRequest.Item[*def.AttributeName]
} else if w.DeleteRequest != nil && w.DeleteRequest.Key != nil {
@@ -1410,20 +1384,21 @@ func (w writeItem) key(def dynamodb.AttributeDefinition) string {
return itemKey(def).extract(v)
}

type attrItem map[string]*dynamodb.AttributeValue
type attrItem map[string]types.AttributeValue

func (w attrItem) key(def dynamodb.AttributeDefinition) string {
func (w attrItem) key(def types.AttributeDefinition) string {
v := w[*def.AttributeName]
return itemKey(def).extract(v)
}

type dupKeys struct {
defs []dynamodb.AttributeDefinition
defs []types.AttributeDefinition
items []item
eq func(a, b item) int
}

// Implements sort.Interface

func (d dupKeys) Len() int { return len(d.items) }
func (d dupKeys) Swap(i, j int) { d.items[i], d.items[j] = d.items[j], d.items[i] }
func (d dupKeys) Less(i, j int) bool { return d.eq(d.items[i], d.items[j]) <= 0 }