in dax/internal/client/request.go [1130:1214]
func encodeItemOperationOptionalParamsWithToken(
returnValues types.ReturnValue,
returnConsumedCapacity types.ReturnConsumedCapacity,
returnItemCollectionMetrics types.ReturnItemCollectionMetrics,
consistentRead *bool,
projectionExp, conditionalExpr, updateExpr *string,
exprAttrNames map[string]string,
exprAttrValues map[string]types.AttributeValue, clientRequestToken *string, writer *cbor.Writer) error {
if err := writer.WriteMapStreamHeader(); err != nil {
return err
}
if consistentRead != nil {
if err := writer.WriteInt(requestParamConsistentRead); err != nil {
return err
}
if err := writer.WriteBoolean(*consistentRead); err != nil {
return err
}
}
if dv := translateReturnValues(returnValues); dv != returnValueNone {
if err := writer.WriteInt(requestParamReturnValues); err != nil {
return err
}
if err := writer.WriteInt(dv); err != nil {
return err
}
}
if dv := translateReturnConsumedCapacity(returnConsumedCapacity); dv != returnConsumedCapacityNone {
if err := writer.WriteInt(requestParamReturnConsumedCapacity); err != nil {
return err
}
if err := writer.WriteInt(dv); err != nil {
return err
}
}
if dv := translateReturnItemCollectionMetrics(returnItemCollectionMetrics); dv != returnItemCollectionMetricsNone {
if err := writer.WriteInt(requestParamReturnItemCollectionMetrics); err != nil {
return err
}
if err := writer.WriteInt(dv); err != nil {
return err
}
}
if conditionalExpr != nil || updateExpr != nil || projectionExp != nil {
encoded, err := parseExpressions(conditionalExpr, updateExpr, projectionExp, exprAttrNames, exprAttrValues)
if err != nil {
return err
}
for k := range encoded {
var e int
switch k {
case parser.ConditionExpr:
e = requestParamConditionExpression
case parser.UpdateExpr:
e = requestParamUpdateExpression
case parser.ProjectionExpr:
e = requestParamProjectionExpression
default:
continue
}
if err := writer.WriteInt(e); err != nil {
return err
}
if err := writer.WriteBytes(encoded[k]); err != nil {
return err
}
}
}
if clientRequestToken != nil {
if err := writer.WriteInt(requestParamRequestItemsClientRequestToken); err != nil {
return err
}
if err := writer.WriteString(*clientRequestToken); err != nil {
return err
}
}
return writer.WriteStreamBreak()
}