in dax/internal/client/legacy.go [116:153]
func translateLegacyScanInput(input *dynamodb.ScanInput) (*dynamodb.ScanInput, error) {
// if ProjectionExpression is not nil, Should set Select type.
if input.ProjectionExpression != nil {
input.Select = types.SelectSpecificAttributes
}
pf, err := hasAttributesToGet(input.AttributesToGet, input.ProjectionExpression)
if err != nil {
return input, err
}
cf, err := hasFilter(input.ScanFilter, input.FilterExpression)
if err != nil {
return input, err
}
if !pf && !cf {
return input, nil
}
output := input
if pf {
output.ProjectionExpression, output.ExpressionAttributeNames, err =
translateAttributesToGet(output.AttributesToGet, output.ExpressionAttributeNames)
if err != nil {
return input, err
}
output.AttributesToGet = nil
}
if cf {
output.FilterExpression, output.ExpressionAttributeNames, output.ExpressionAttributeValues, err =
translateFilter(output.ConditionalOperator, output.ScanFilter, output.ExpressionAttributeNames, output.ExpressionAttributeValues, false)
if err != nil {
return input, err
}
output.ConditionalOperator = ""
output.ScanFilter = nil
}
return output, nil
}