in dax/internal/client/request.go [1067:1145]
func encodeItemOperationOptionalParamsWithToken(returnValues, returnConsumedCapacity, returnItemCollectionMetrics *string, consistentRead *bool,
projectionExp, conditionalExpr, updateExpr *string, exprAttrNames map[string]*string, exprAttrValues map[string]*dynamodb.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()
}