func translateLegacyScanInput()

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
}