{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.IoT.SearchIndex
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- The query search index.
--
-- Requires permission to access the
-- <https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions SearchIndex>
-- action.
module Amazonka.IoT.SearchIndex
  ( -- * Creating a Request
    SearchIndex (..),
    newSearchIndex,

    -- * Request Lenses
    searchIndex_indexName,
    searchIndex_maxResults,
    searchIndex_nextToken,
    searchIndex_queryVersion,
    searchIndex_queryString,

    -- * Destructuring the Response
    SearchIndexResponse (..),
    newSearchIndexResponse,

    -- * Response Lenses
    searchIndexResponse_nextToken,
    searchIndexResponse_thingGroups,
    searchIndexResponse_things,
    searchIndexResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.IoT.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newSearchIndex' smart constructor.
data SearchIndex = SearchIndex'
  { -- | The search index name.
    SearchIndex -> Maybe Text
indexName :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of results to return at one time.
    SearchIndex -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The token used to get the next set of results, or @null@ if there are no
    -- additional results.
    SearchIndex -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The query version.
    SearchIndex -> Maybe Text
queryVersion :: Prelude.Maybe Prelude.Text,
    -- | The search query string. For more information about the search query
    -- syntax, see
    -- <https://docs.aws.amazon.com/iot/latest/developerguide/query-syntax.html Query syntax>.
    SearchIndex -> Text
queryString :: Prelude.Text
  }
  deriving (SearchIndex -> SearchIndex -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SearchIndex -> SearchIndex -> Bool
$c/= :: SearchIndex -> SearchIndex -> Bool
== :: SearchIndex -> SearchIndex -> Bool
$c== :: SearchIndex -> SearchIndex -> Bool
Prelude.Eq, ReadPrec [SearchIndex]
ReadPrec SearchIndex
Int -> ReadS SearchIndex
ReadS [SearchIndex]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [SearchIndex]
$creadListPrec :: ReadPrec [SearchIndex]
readPrec :: ReadPrec SearchIndex
$creadPrec :: ReadPrec SearchIndex
readList :: ReadS [SearchIndex]
$creadList :: ReadS [SearchIndex]
readsPrec :: Int -> ReadS SearchIndex
$creadsPrec :: Int -> ReadS SearchIndex
Prelude.Read, Int -> SearchIndex -> ShowS
[SearchIndex] -> ShowS
SearchIndex -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SearchIndex] -> ShowS
$cshowList :: [SearchIndex] -> ShowS
show :: SearchIndex -> String
$cshow :: SearchIndex -> String
showsPrec :: Int -> SearchIndex -> ShowS
$cshowsPrec :: Int -> SearchIndex -> ShowS
Prelude.Show, forall x. Rep SearchIndex x -> SearchIndex
forall x. SearchIndex -> Rep SearchIndex x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep SearchIndex x -> SearchIndex
$cfrom :: forall x. SearchIndex -> Rep SearchIndex x
Prelude.Generic)

-- |
-- Create a value of 'SearchIndex' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'indexName', 'searchIndex_indexName' - The search index name.
--
-- 'maxResults', 'searchIndex_maxResults' - The maximum number of results to return at one time.
--
-- 'nextToken', 'searchIndex_nextToken' - The token used to get the next set of results, or @null@ if there are no
-- additional results.
--
-- 'queryVersion', 'searchIndex_queryVersion' - The query version.
--
-- 'queryString', 'searchIndex_queryString' - The search query string. For more information about the search query
-- syntax, see
-- <https://docs.aws.amazon.com/iot/latest/developerguide/query-syntax.html Query syntax>.
newSearchIndex ::
  -- | 'queryString'
  Prelude.Text ->
  SearchIndex
newSearchIndex :: Text -> SearchIndex
newSearchIndex Text
pQueryString_ =
  SearchIndex'
    { $sel:indexName:SearchIndex' :: Maybe Text
indexName = forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:SearchIndex' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:SearchIndex' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:queryVersion:SearchIndex' :: Maybe Text
queryVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:queryString:SearchIndex' :: Text
queryString = Text
pQueryString_
    }

-- | The search index name.
searchIndex_indexName :: Lens.Lens' SearchIndex (Prelude.Maybe Prelude.Text)
searchIndex_indexName :: Lens' SearchIndex (Maybe Text)
searchIndex_indexName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchIndex' {Maybe Text
indexName :: Maybe Text
$sel:indexName:SearchIndex' :: SearchIndex -> Maybe Text
indexName} -> Maybe Text
indexName) (\s :: SearchIndex
s@SearchIndex' {} Maybe Text
a -> SearchIndex
s {$sel:indexName:SearchIndex' :: Maybe Text
indexName = Maybe Text
a} :: SearchIndex)

-- | The maximum number of results to return at one time.
searchIndex_maxResults :: Lens.Lens' SearchIndex (Prelude.Maybe Prelude.Natural)
searchIndex_maxResults :: Lens' SearchIndex (Maybe Natural)
searchIndex_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchIndex' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:SearchIndex' :: SearchIndex -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: SearchIndex
s@SearchIndex' {} Maybe Natural
a -> SearchIndex
s {$sel:maxResults:SearchIndex' :: Maybe Natural
maxResults = Maybe Natural
a} :: SearchIndex)

-- | The token used to get the next set of results, or @null@ if there are no
-- additional results.
searchIndex_nextToken :: Lens.Lens' SearchIndex (Prelude.Maybe Prelude.Text)
searchIndex_nextToken :: Lens' SearchIndex (Maybe Text)
searchIndex_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchIndex' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:SearchIndex' :: SearchIndex -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: SearchIndex
s@SearchIndex' {} Maybe Text
a -> SearchIndex
s {$sel:nextToken:SearchIndex' :: Maybe Text
nextToken = Maybe Text
a} :: SearchIndex)

-- | The query version.
searchIndex_queryVersion :: Lens.Lens' SearchIndex (Prelude.Maybe Prelude.Text)
searchIndex_queryVersion :: Lens' SearchIndex (Maybe Text)
searchIndex_queryVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchIndex' {Maybe Text
queryVersion :: Maybe Text
$sel:queryVersion:SearchIndex' :: SearchIndex -> Maybe Text
queryVersion} -> Maybe Text
queryVersion) (\s :: SearchIndex
s@SearchIndex' {} Maybe Text
a -> SearchIndex
s {$sel:queryVersion:SearchIndex' :: Maybe Text
queryVersion = Maybe Text
a} :: SearchIndex)

-- | The search query string. For more information about the search query
-- syntax, see
-- <https://docs.aws.amazon.com/iot/latest/developerguide/query-syntax.html Query syntax>.
searchIndex_queryString :: Lens.Lens' SearchIndex Prelude.Text
searchIndex_queryString :: Lens' SearchIndex Text
searchIndex_queryString = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchIndex' {Text
queryString :: Text
$sel:queryString:SearchIndex' :: SearchIndex -> Text
queryString} -> Text
queryString) (\s :: SearchIndex
s@SearchIndex' {} Text
a -> SearchIndex
s {$sel:queryString:SearchIndex' :: Text
queryString = Text
a} :: SearchIndex)

instance Core.AWSRequest SearchIndex where
  type AWSResponse SearchIndex = SearchIndexResponse
  request :: (Service -> Service) -> SearchIndex -> Request SearchIndex
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy SearchIndex
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse SearchIndex)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text
-> Maybe [ThingGroupDocument]
-> Maybe [ThingDocument]
-> Int
-> SearchIndexResponse
SearchIndexResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"nextToken")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"thingGroups" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"things" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable SearchIndex where
  hashWithSalt :: Int -> SearchIndex -> Int
hashWithSalt Int
_salt SearchIndex' {Maybe Natural
Maybe Text
Text
queryString :: Text
queryVersion :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
indexName :: Maybe Text
$sel:queryString:SearchIndex' :: SearchIndex -> Text
$sel:queryVersion:SearchIndex' :: SearchIndex -> Maybe Text
$sel:nextToken:SearchIndex' :: SearchIndex -> Maybe Text
$sel:maxResults:SearchIndex' :: SearchIndex -> Maybe Natural
$sel:indexName:SearchIndex' :: SearchIndex -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
indexName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
queryVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
queryString

instance Prelude.NFData SearchIndex where
  rnf :: SearchIndex -> ()
rnf SearchIndex' {Maybe Natural
Maybe Text
Text
queryString :: Text
queryVersion :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
indexName :: Maybe Text
$sel:queryString:SearchIndex' :: SearchIndex -> Text
$sel:queryVersion:SearchIndex' :: SearchIndex -> Maybe Text
$sel:nextToken:SearchIndex' :: SearchIndex -> Maybe Text
$sel:maxResults:SearchIndex' :: SearchIndex -> Maybe Natural
$sel:indexName:SearchIndex' :: SearchIndex -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
indexName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
queryVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
queryString

instance Data.ToHeaders SearchIndex where
  toHeaders :: SearchIndex -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToJSON SearchIndex where
  toJSON :: SearchIndex -> Value
toJSON SearchIndex' {Maybe Natural
Maybe Text
Text
queryString :: Text
queryVersion :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
indexName :: Maybe Text
$sel:queryString:SearchIndex' :: SearchIndex -> Text
$sel:queryVersion:SearchIndex' :: SearchIndex -> Maybe Text
$sel:nextToken:SearchIndex' :: SearchIndex -> Maybe Text
$sel:maxResults:SearchIndex' :: SearchIndex -> Maybe Natural
$sel:indexName:SearchIndex' :: SearchIndex -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"indexName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
indexName,
            (Key
"maxResults" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
maxResults,
            (Key
"nextToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
nextToken,
            (Key
"queryVersion" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
queryVersion,
            forall a. a -> Maybe a
Prelude.Just (Key
"queryString" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
queryString)
          ]
      )

instance Data.ToPath SearchIndex where
  toPath :: SearchIndex -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/indices/search"

instance Data.ToQuery SearchIndex where
  toQuery :: SearchIndex -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newSearchIndexResponse' smart constructor.
data SearchIndexResponse = SearchIndexResponse'
  { -- | The token used to get the next set of results, or @null@ if there are no
    -- additional results.
    SearchIndexResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The thing groups that match the search query.
    SearchIndexResponse -> Maybe [ThingGroupDocument]
thingGroups :: Prelude.Maybe [ThingGroupDocument],
    -- | The things that match the search query.
    SearchIndexResponse -> Maybe [ThingDocument]
things :: Prelude.Maybe [ThingDocument],
    -- | The response's http status code.
    SearchIndexResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (SearchIndexResponse -> SearchIndexResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SearchIndexResponse -> SearchIndexResponse -> Bool
$c/= :: SearchIndexResponse -> SearchIndexResponse -> Bool
== :: SearchIndexResponse -> SearchIndexResponse -> Bool
$c== :: SearchIndexResponse -> SearchIndexResponse -> Bool
Prelude.Eq, ReadPrec [SearchIndexResponse]
ReadPrec SearchIndexResponse
Int -> ReadS SearchIndexResponse
ReadS [SearchIndexResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [SearchIndexResponse]
$creadListPrec :: ReadPrec [SearchIndexResponse]
readPrec :: ReadPrec SearchIndexResponse
$creadPrec :: ReadPrec SearchIndexResponse
readList :: ReadS [SearchIndexResponse]
$creadList :: ReadS [SearchIndexResponse]
readsPrec :: Int -> ReadS SearchIndexResponse
$creadsPrec :: Int -> ReadS SearchIndexResponse
Prelude.Read, Int -> SearchIndexResponse -> ShowS
[SearchIndexResponse] -> ShowS
SearchIndexResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SearchIndexResponse] -> ShowS
$cshowList :: [SearchIndexResponse] -> ShowS
show :: SearchIndexResponse -> String
$cshow :: SearchIndexResponse -> String
showsPrec :: Int -> SearchIndexResponse -> ShowS
$cshowsPrec :: Int -> SearchIndexResponse -> ShowS
Prelude.Show, forall x. Rep SearchIndexResponse x -> SearchIndexResponse
forall x. SearchIndexResponse -> Rep SearchIndexResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep SearchIndexResponse x -> SearchIndexResponse
$cfrom :: forall x. SearchIndexResponse -> Rep SearchIndexResponse x
Prelude.Generic)

-- |
-- Create a value of 'SearchIndexResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'nextToken', 'searchIndexResponse_nextToken' - The token used to get the next set of results, or @null@ if there are no
-- additional results.
--
-- 'thingGroups', 'searchIndexResponse_thingGroups' - The thing groups that match the search query.
--
-- 'things', 'searchIndexResponse_things' - The things that match the search query.
--
-- 'httpStatus', 'searchIndexResponse_httpStatus' - The response's http status code.
newSearchIndexResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  SearchIndexResponse
newSearchIndexResponse :: Int -> SearchIndexResponse
newSearchIndexResponse Int
pHttpStatus_ =
  SearchIndexResponse'
    { $sel:nextToken:SearchIndexResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:thingGroups:SearchIndexResponse' :: Maybe [ThingGroupDocument]
thingGroups = forall a. Maybe a
Prelude.Nothing,
      $sel:things:SearchIndexResponse' :: Maybe [ThingDocument]
things = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:SearchIndexResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The token used to get the next set of results, or @null@ if there are no
-- additional results.
searchIndexResponse_nextToken :: Lens.Lens' SearchIndexResponse (Prelude.Maybe Prelude.Text)
searchIndexResponse_nextToken :: Lens' SearchIndexResponse (Maybe Text)
searchIndexResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchIndexResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:SearchIndexResponse' :: SearchIndexResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: SearchIndexResponse
s@SearchIndexResponse' {} Maybe Text
a -> SearchIndexResponse
s {$sel:nextToken:SearchIndexResponse' :: Maybe Text
nextToken = Maybe Text
a} :: SearchIndexResponse)

-- | The thing groups that match the search query.
searchIndexResponse_thingGroups :: Lens.Lens' SearchIndexResponse (Prelude.Maybe [ThingGroupDocument])
searchIndexResponse_thingGroups :: Lens' SearchIndexResponse (Maybe [ThingGroupDocument])
searchIndexResponse_thingGroups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchIndexResponse' {Maybe [ThingGroupDocument]
thingGroups :: Maybe [ThingGroupDocument]
$sel:thingGroups:SearchIndexResponse' :: SearchIndexResponse -> Maybe [ThingGroupDocument]
thingGroups} -> Maybe [ThingGroupDocument]
thingGroups) (\s :: SearchIndexResponse
s@SearchIndexResponse' {} Maybe [ThingGroupDocument]
a -> SearchIndexResponse
s {$sel:thingGroups:SearchIndexResponse' :: Maybe [ThingGroupDocument]
thingGroups = Maybe [ThingGroupDocument]
a} :: SearchIndexResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The things that match the search query.
searchIndexResponse_things :: Lens.Lens' SearchIndexResponse (Prelude.Maybe [ThingDocument])
searchIndexResponse_things :: Lens' SearchIndexResponse (Maybe [ThingDocument])
searchIndexResponse_things = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchIndexResponse' {Maybe [ThingDocument]
things :: Maybe [ThingDocument]
$sel:things:SearchIndexResponse' :: SearchIndexResponse -> Maybe [ThingDocument]
things} -> Maybe [ThingDocument]
things) (\s :: SearchIndexResponse
s@SearchIndexResponse' {} Maybe [ThingDocument]
a -> SearchIndexResponse
s {$sel:things:SearchIndexResponse' :: Maybe [ThingDocument]
things = Maybe [ThingDocument]
a} :: SearchIndexResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The response's http status code.
searchIndexResponse_httpStatus :: Lens.Lens' SearchIndexResponse Prelude.Int
searchIndexResponse_httpStatus :: Lens' SearchIndexResponse Int
searchIndexResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchIndexResponse' {Int
httpStatus :: Int
$sel:httpStatus:SearchIndexResponse' :: SearchIndexResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: SearchIndexResponse
s@SearchIndexResponse' {} Int
a -> SearchIndexResponse
s {$sel:httpStatus:SearchIndexResponse' :: Int
httpStatus = Int
a} :: SearchIndexResponse)

instance Prelude.NFData SearchIndexResponse where
  rnf :: SearchIndexResponse -> ()
rnf SearchIndexResponse' {Int
Maybe [ThingDocument]
Maybe [ThingGroupDocument]
Maybe Text
httpStatus :: Int
things :: Maybe [ThingDocument]
thingGroups :: Maybe [ThingGroupDocument]
nextToken :: Maybe Text
$sel:httpStatus:SearchIndexResponse' :: SearchIndexResponse -> Int
$sel:things:SearchIndexResponse' :: SearchIndexResponse -> Maybe [ThingDocument]
$sel:thingGroups:SearchIndexResponse' :: SearchIndexResponse -> Maybe [ThingGroupDocument]
$sel:nextToken:SearchIndexResponse' :: SearchIndexResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ThingGroupDocument]
thingGroups
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ThingDocument]
things
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus