-- | The condition that specifies the key value(s) for items to be retrieved
-- by the /Query/ action.
--
-- The condition must perform an equality test on a single hash key value.
-- The condition can also perform one of several comparison tests on a
-- single range key value. /Query/ can use /KeyConditionExpression/ to
-- retrieve one item with a given hash and range key value, or several
-- items that have the same hash key value but different range key values.
--
-- The hash key equality test is required, and must be specified in the
-- following format:
--
-- 'hashAttributeName' /=/ ':hashval'
--
-- If you also want to provide a range key condition, it must be combined
-- using /AND/ with the hash key condition. Following is an example, using
-- the __=__ comparison operator for the range key:
--
-- 'hashAttributeName' /=/ ':hashval' /AND/ 'rangeAttributeName' /=/
-- ':rangeval'
--
-- Valid comparisons for the range key condition are as follows:
--
-- -   'rangeAttributeName' /=/ ':rangeval' - true if the range key is
--     equal to ':rangeval'.
--
-- -   'rangeAttributeName' /\</ ':rangeval' - true if the range key is
--     less than ':rangeval'.
--
-- -   'rangeAttributeName' /\<=/ ':rangeval' - true if the range key is
--     less than or equal to ':rangeval'.
--
-- -   'rangeAttributeName' />/ ':rangeval' - true if the range key is
--     greater than ':rangeval'.
--
-- -   'rangeAttributeName' />=/ ':rangeval' - true if the range key is
--     greater than or equal to ':rangeval'.
--
-- -   'rangeAttributeName' /BETWEEN/ ':rangeval1' /AND/ ':rangeval2' -
--     true if the range key is greater than or equal to ':rangeval1', and
--     less than or equal to ':rangeval2'.
--
-- -   /begins_with (/'rangeAttributeName', ':rangeval'/)/ - true if the
--     range key begins with a particular operand. (You cannot use this
--     function with a range key that is of type Number.) Note that the
--     function name 'begins_with' is case-sensitive.
--
-- Use the /ExpressionAttributeValues/ parameter to replace tokens such as
-- ':hashval' and ':rangeval' with actual values at runtime.
--
-- You can optionally use the /ExpressionAttributeNames/ parameter to
-- replace the names of the hash and range attributes with placeholder
-- tokens. This option might be necessary if an attribute name conflicts
-- with a DynamoDB reserved word. For example, the following
-- /KeyConditionExpression/ parameter causes an error because /Size/ is a
-- reserved word:
--
-- -   'Size = :myval'
--
-- To work around this, define a placeholder (such a '#S') to represent the
-- attribute name /Size/. /KeyConditionExpression/ then is as follows:
--
-- -   '#S = :myval'
--
-- For a list of reserved words, see
-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words>
-- in the /Amazon DynamoDB Developer Guide/.
--
-- For more information on /ExpressionAttributeNames/ and
-- /ExpressionAttributeValues/, see
-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html Using Placeholders for Attribute Names and Values>
-- in the /Amazon DynamoDB Developer Guide/.
--
-- /KeyConditionExpression/ replaces the legacy /KeyConditions/ parameter.
qKeyConditionExpression :: Lens' Query (Maybe Text)
qKeyConditionExpression = lens _qKeyConditionExpression (\ s a -> s{_qKeyConditionExpression = a})
qKeyConditionExpression :: Lens' Query (Maybe Text)
qKeyConditionExpression = lens _qKeyConditionExpression (\ s a -> s{_qKeyConditionExpression = a})
qKeyConditionExpression = lens _qKeyConditionExpression (\ s a -> s{_qKeyConditionExpression = a})