{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Network.AWS.CloudSearch.DefineIndexField -- Copyright : (c) 2013-2018 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Configures an @'IndexField' @ for the search domain. Used to create new fields and modify existing ones. You must specify the name of the domain you are configuring and an index field configuration. The index field configuration specifies a unique name, the index field type, and the options you want to configure for the field. The options you can specify depend on the @'IndexFieldType' @ . If the field exists, the new configuration replaces the old one. For more information, see in the /Amazon CloudSearch Developer Guide/ . -- -- module Network.AWS.CloudSearch.DefineIndexField ( -- * Creating a Request defineIndexField , DefineIndexField -- * Request Lenses , defeDomainName , defeIndexField -- * Destructuring the Response , defineIndexFieldResponse , DefineIndexFieldResponse -- * Response Lenses , defrsResponseStatus , defrsIndexField ) where import Network.AWS.CloudSearch.Types import Network.AWS.CloudSearch.Types.Product import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | Container for the parameters to the @'DefineIndexField' @ operation. Specifies the name of the domain you want to update and the index field configuration. -- -- -- -- /See:/ 'defineIndexField' smart constructor. data DefineIndexField = DefineIndexField' { _defeDomainName :: !Text , _defeIndexField :: !IndexField } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'DefineIndexField' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'defeDomainName' - Undocumented member. -- -- * 'defeIndexField' - The index field and field options you want to configure. defineIndexField :: Text -- ^ 'defeDomainName' -> IndexField -- ^ 'defeIndexField' -> DefineIndexField defineIndexField pDomainName_ pIndexField_ = DefineIndexField' {_defeDomainName = pDomainName_, _defeIndexField = pIndexField_} -- | Undocumented member. defeDomainName :: Lens' DefineIndexField Text defeDomainName = lens _defeDomainName (\ s a -> s{_defeDomainName = a}) -- | The index field and field options you want to configure. defeIndexField :: Lens' DefineIndexField IndexField defeIndexField = lens _defeIndexField (\ s a -> s{_defeIndexField = a}) instance AWSRequest DefineIndexField where type Rs DefineIndexField = DefineIndexFieldResponse request = postQuery cloudSearch response = receiveXMLWrapper "DefineIndexFieldResult" (\ s h x -> DefineIndexFieldResponse' <$> (pure (fromEnum s)) <*> (x .@ "IndexField")) instance Hashable DefineIndexField where instance NFData DefineIndexField where instance ToHeaders DefineIndexField where toHeaders = const mempty instance ToPath DefineIndexField where toPath = const "/" instance ToQuery DefineIndexField where toQuery DefineIndexField'{..} = mconcat ["Action" =: ("DefineIndexField" :: ByteString), "Version" =: ("2013-01-01" :: ByteString), "DomainName" =: _defeDomainName, "IndexField" =: _defeIndexField] -- | The result of a @'DefineIndexField' @ request. Contains the status of the newly-configured index field. -- -- -- -- /See:/ 'defineIndexFieldResponse' smart constructor. data DefineIndexFieldResponse = DefineIndexFieldResponse' { _defrsResponseStatus :: !Int , _defrsIndexField :: !IndexFieldStatus } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'DefineIndexFieldResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'defrsResponseStatus' - -- | The response status code. -- -- * 'defrsIndexField' - Undocumented member. defineIndexFieldResponse :: Int -- ^ 'defrsResponseStatus' -> IndexFieldStatus -- ^ 'defrsIndexField' -> DefineIndexFieldResponse defineIndexFieldResponse pResponseStatus_ pIndexField_ = DefineIndexFieldResponse' {_defrsResponseStatus = pResponseStatus_, _defrsIndexField = pIndexField_} -- | -- | The response status code. defrsResponseStatus :: Lens' DefineIndexFieldResponse Int defrsResponseStatus = lens _defrsResponseStatus (\ s a -> s{_defrsResponseStatus = a}) -- | Undocumented member. defrsIndexField :: Lens' DefineIndexFieldResponse IndexFieldStatus defrsIndexField = lens _defrsIndexField (\ s a -> s{_defrsIndexField = a}) instance NFData DefineIndexFieldResponse where