in dax/internal/client/request.go [508:587]
func encodeBatchGetItemInput(ctx context.Context, input *dynamodb.BatchGetItemInput, keySchema *lru.Lru, writer *cbor.Writer) error {
if input == nil {
return smithy.NewErrParamRequired("input cannot be nil")
}
var err error
if err = ValidateOpBatchGetItemInput(input); err != nil {
return err
}
if input, err = translateLegacyBatchGetItemInput(input); err != nil {
return err
}
if err = encodeServiceAndMethod(batchGetItem_N697851100_1_Id, writer); err != nil {
return err
}
if err = writer.WriteMapHeader(len(input.RequestItems)); err != nil {
return err
}
for table, kaas := range input.RequestItems {
if err = writer.WriteString(table); err != nil {
return err
}
if err = writer.WriteArrayHeader(3); err != nil {
return err
}
cr := false
if kaas.ConsistentRead != nil {
cr = *kaas.ConsistentRead
}
if err = writer.WriteBoolean(cr); err != nil {
return err
}
if kaas.ProjectionExpression != nil {
expressions := make(map[int]string)
expressions[parser.ProjectionExpr] = *kaas.ProjectionExpression
encoder := parser.NewExpressionEncoder(expressions, kaas.ExpressionAttributeNames, nil)
if _, err = encoder.Parse(); err != nil {
return err
}
var buf bytes.Buffer
if err = encoder.Write(parser.ProjectionExpr, &buf); err != nil {
return err
}
if err = writer.WriteBytes(buf.Bytes()); err != nil {
return err
}
} else {
if err = writer.WriteNull(); err != nil {
return err
}
}
tableKeys, err := getKeySchema(ctx, keySchema, table)
if err != nil {
return err
}
if err = writer.WriteArrayHeader(len(kaas.Keys)); err != nil {
return err
}
if hasDuplicateKeysAndAttributes(kaas, tableKeys) {
return &smithy.GenericAPIError{
Code: ErrCodeInvalidParameter,
Message: fmt.Sprintf("Provided list of item keys contains duplicates"),
Fault: smithy.FaultClient,
}
}
for _, keys := range kaas.Keys {
if err = cbor.EncodeItemKey(keys, tableKeys, writer); err != nil {
return err
}
}
}
return encodeItemOperationOptionalParams(
types.ReturnValueNone,
input.ReturnConsumedCapacity,
types.ReturnItemCollectionMetricsNone,
nil, nil, nil, nil, nil, nil, writer)
}