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

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

-- |
-- Module      : Amazonka.CloudSearch.Types.IndexField
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.CloudSearch.Types.IndexField where

import Amazonka.CloudSearch.Types.DateArrayOptions
import Amazonka.CloudSearch.Types.DateOptions
import Amazonka.CloudSearch.Types.DoubleArrayOptions
import Amazonka.CloudSearch.Types.DoubleOptions
import Amazonka.CloudSearch.Types.IndexFieldType
import Amazonka.CloudSearch.Types.IntArrayOptions
import Amazonka.CloudSearch.Types.IntOptions
import Amazonka.CloudSearch.Types.LatLonOptions
import Amazonka.CloudSearch.Types.LiteralArrayOptions
import Amazonka.CloudSearch.Types.LiteralOptions
import Amazonka.CloudSearch.Types.TextArrayOptions
import Amazonka.CloudSearch.Types.TextOptions
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude

-- | Configuration information for a field in the index, including its name,
-- type, and options. The supported options depend on the @IndexFieldType@.
--
-- /See:/ 'newIndexField' smart constructor.
data IndexField = IndexField'
  { IndexField -> Maybe DateArrayOptions
dateArrayOptions :: Prelude.Maybe DateArrayOptions,
    IndexField -> Maybe DateOptions
dateOptions :: Prelude.Maybe DateOptions,
    IndexField -> Maybe DoubleArrayOptions
doubleArrayOptions :: Prelude.Maybe DoubleArrayOptions,
    IndexField -> Maybe DoubleOptions
doubleOptions :: Prelude.Maybe DoubleOptions,
    IndexField -> Maybe IntArrayOptions
intArrayOptions :: Prelude.Maybe IntArrayOptions,
    IndexField -> Maybe IntOptions
intOptions :: Prelude.Maybe IntOptions,
    IndexField -> Maybe LatLonOptions
latLonOptions :: Prelude.Maybe LatLonOptions,
    IndexField -> Maybe LiteralArrayOptions
literalArrayOptions :: Prelude.Maybe LiteralArrayOptions,
    IndexField -> Maybe LiteralOptions
literalOptions :: Prelude.Maybe LiteralOptions,
    IndexField -> Maybe TextArrayOptions
textArrayOptions :: Prelude.Maybe TextArrayOptions,
    IndexField -> Maybe TextOptions
textOptions :: Prelude.Maybe TextOptions,
    -- | A string that represents the name of an index field. CloudSearch
    -- supports regular index fields as well as dynamic fields. A dynamic
    -- field\'s name defines a pattern that begins or ends with a wildcard. Any
    -- document fields that don\'t map to a regular index field but do match a
    -- dynamic field\'s pattern are configured with the dynamic field\'s
    -- indexing options.
    --
    -- Regular field names begin with a letter and can contain the following
    -- characters: a-z (lowercase), 0-9, and _ (underscore). Dynamic field
    -- names must begin or end with a wildcard (*). The wildcard can also be
    -- the only character in a dynamic field name. Multiple wildcards, and
    -- wildcards embedded within a string are not supported.
    --
    -- The name @score@ is reserved and cannot be used as a field name. To
    -- reference a document\'s ID, you can use the name @_id@.
    IndexField -> Text
indexFieldName :: Prelude.Text,
    IndexField -> IndexFieldType
indexFieldType :: IndexFieldType
  }
  deriving (IndexField -> IndexField -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: IndexField -> IndexField -> Bool
$c/= :: IndexField -> IndexField -> Bool
== :: IndexField -> IndexField -> Bool
$c== :: IndexField -> IndexField -> Bool
Prelude.Eq, ReadPrec [IndexField]
ReadPrec IndexField
Int -> ReadS IndexField
ReadS [IndexField]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [IndexField]
$creadListPrec :: ReadPrec [IndexField]
readPrec :: ReadPrec IndexField
$creadPrec :: ReadPrec IndexField
readList :: ReadS [IndexField]
$creadList :: ReadS [IndexField]
readsPrec :: Int -> ReadS IndexField
$creadsPrec :: Int -> ReadS IndexField
Prelude.Read, Int -> IndexField -> ShowS
[IndexField] -> ShowS
IndexField -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [IndexField] -> ShowS
$cshowList :: [IndexField] -> ShowS
show :: IndexField -> String
$cshow :: IndexField -> String
showsPrec :: Int -> IndexField -> ShowS
$cshowsPrec :: Int -> IndexField -> ShowS
Prelude.Show, forall x. Rep IndexField x -> IndexField
forall x. IndexField -> Rep IndexField x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep IndexField x -> IndexField
$cfrom :: forall x. IndexField -> Rep IndexField x
Prelude.Generic)

-- |
-- Create a value of 'IndexField' 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:
--
-- 'dateArrayOptions', 'indexField_dateArrayOptions' - Undocumented member.
--
-- 'dateOptions', 'indexField_dateOptions' - Undocumented member.
--
-- 'doubleArrayOptions', 'indexField_doubleArrayOptions' - Undocumented member.
--
-- 'doubleOptions', 'indexField_doubleOptions' - Undocumented member.
--
-- 'intArrayOptions', 'indexField_intArrayOptions' - Undocumented member.
--
-- 'intOptions', 'indexField_intOptions' - Undocumented member.
--
-- 'latLonOptions', 'indexField_latLonOptions' - Undocumented member.
--
-- 'literalArrayOptions', 'indexField_literalArrayOptions' - Undocumented member.
--
-- 'literalOptions', 'indexField_literalOptions' - Undocumented member.
--
-- 'textArrayOptions', 'indexField_textArrayOptions' - Undocumented member.
--
-- 'textOptions', 'indexField_textOptions' - Undocumented member.
--
-- 'indexFieldName', 'indexField_indexFieldName' - A string that represents the name of an index field. CloudSearch
-- supports regular index fields as well as dynamic fields. A dynamic
-- field\'s name defines a pattern that begins or ends with a wildcard. Any
-- document fields that don\'t map to a regular index field but do match a
-- dynamic field\'s pattern are configured with the dynamic field\'s
-- indexing options.
--
-- Regular field names begin with a letter and can contain the following
-- characters: a-z (lowercase), 0-9, and _ (underscore). Dynamic field
-- names must begin or end with a wildcard (*). The wildcard can also be
-- the only character in a dynamic field name. Multiple wildcards, and
-- wildcards embedded within a string are not supported.
--
-- The name @score@ is reserved and cannot be used as a field name. To
-- reference a document\'s ID, you can use the name @_id@.
--
-- 'indexFieldType', 'indexField_indexFieldType' - Undocumented member.
newIndexField ::
  -- | 'indexFieldName'
  Prelude.Text ->
  -- | 'indexFieldType'
  IndexFieldType ->
  IndexField
newIndexField :: Text -> IndexFieldType -> IndexField
newIndexField Text
pIndexFieldName_ IndexFieldType
pIndexFieldType_ =
  IndexField'
    { $sel:dateArrayOptions:IndexField' :: Maybe DateArrayOptions
dateArrayOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:dateOptions:IndexField' :: Maybe DateOptions
dateOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:doubleArrayOptions:IndexField' :: Maybe DoubleArrayOptions
doubleArrayOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:doubleOptions:IndexField' :: Maybe DoubleOptions
doubleOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:intArrayOptions:IndexField' :: Maybe IntArrayOptions
intArrayOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:intOptions:IndexField' :: Maybe IntOptions
intOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:latLonOptions:IndexField' :: Maybe LatLonOptions
latLonOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:literalArrayOptions:IndexField' :: Maybe LiteralArrayOptions
literalArrayOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:literalOptions:IndexField' :: Maybe LiteralOptions
literalOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:textArrayOptions:IndexField' :: Maybe TextArrayOptions
textArrayOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:textOptions:IndexField' :: Maybe TextOptions
textOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:indexFieldName:IndexField' :: Text
indexFieldName = Text
pIndexFieldName_,
      $sel:indexFieldType:IndexField' :: IndexFieldType
indexFieldType = IndexFieldType
pIndexFieldType_
    }

-- | Undocumented member.
indexField_dateArrayOptions :: Lens.Lens' IndexField (Prelude.Maybe DateArrayOptions)
indexField_dateArrayOptions :: Lens' IndexField (Maybe DateArrayOptions)
indexField_dateArrayOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\IndexField' {Maybe DateArrayOptions
dateArrayOptions :: Maybe DateArrayOptions
$sel:dateArrayOptions:IndexField' :: IndexField -> Maybe DateArrayOptions
dateArrayOptions} -> Maybe DateArrayOptions
dateArrayOptions) (\s :: IndexField
s@IndexField' {} Maybe DateArrayOptions
a -> IndexField
s {$sel:dateArrayOptions:IndexField' :: Maybe DateArrayOptions
dateArrayOptions = Maybe DateArrayOptions
a} :: IndexField)

-- | Undocumented member.
indexField_dateOptions :: Lens.Lens' IndexField (Prelude.Maybe DateOptions)
indexField_dateOptions :: Lens' IndexField (Maybe DateOptions)
indexField_dateOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\IndexField' {Maybe DateOptions
dateOptions :: Maybe DateOptions
$sel:dateOptions:IndexField' :: IndexField -> Maybe DateOptions
dateOptions} -> Maybe DateOptions
dateOptions) (\s :: IndexField
s@IndexField' {} Maybe DateOptions
a -> IndexField
s {$sel:dateOptions:IndexField' :: Maybe DateOptions
dateOptions = Maybe DateOptions
a} :: IndexField)

-- | Undocumented member.
indexField_doubleArrayOptions :: Lens.Lens' IndexField (Prelude.Maybe DoubleArrayOptions)
indexField_doubleArrayOptions :: Lens' IndexField (Maybe DoubleArrayOptions)
indexField_doubleArrayOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\IndexField' {Maybe DoubleArrayOptions
doubleArrayOptions :: Maybe DoubleArrayOptions
$sel:doubleArrayOptions:IndexField' :: IndexField -> Maybe DoubleArrayOptions
doubleArrayOptions} -> Maybe DoubleArrayOptions
doubleArrayOptions) (\s :: IndexField
s@IndexField' {} Maybe DoubleArrayOptions
a -> IndexField
s {$sel:doubleArrayOptions:IndexField' :: Maybe DoubleArrayOptions
doubleArrayOptions = Maybe DoubleArrayOptions
a} :: IndexField)

-- | Undocumented member.
indexField_doubleOptions :: Lens.Lens' IndexField (Prelude.Maybe DoubleOptions)
indexField_doubleOptions :: Lens' IndexField (Maybe DoubleOptions)
indexField_doubleOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\IndexField' {Maybe DoubleOptions
doubleOptions :: Maybe DoubleOptions
$sel:doubleOptions:IndexField' :: IndexField -> Maybe DoubleOptions
doubleOptions} -> Maybe DoubleOptions
doubleOptions) (\s :: IndexField
s@IndexField' {} Maybe DoubleOptions
a -> IndexField
s {$sel:doubleOptions:IndexField' :: Maybe DoubleOptions
doubleOptions = Maybe DoubleOptions
a} :: IndexField)

-- | Undocumented member.
indexField_intArrayOptions :: Lens.Lens' IndexField (Prelude.Maybe IntArrayOptions)
indexField_intArrayOptions :: Lens' IndexField (Maybe IntArrayOptions)
indexField_intArrayOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\IndexField' {Maybe IntArrayOptions
intArrayOptions :: Maybe IntArrayOptions
$sel:intArrayOptions:IndexField' :: IndexField -> Maybe IntArrayOptions
intArrayOptions} -> Maybe IntArrayOptions
intArrayOptions) (\s :: IndexField
s@IndexField' {} Maybe IntArrayOptions
a -> IndexField
s {$sel:intArrayOptions:IndexField' :: Maybe IntArrayOptions
intArrayOptions = Maybe IntArrayOptions
a} :: IndexField)

-- | Undocumented member.
indexField_intOptions :: Lens.Lens' IndexField (Prelude.Maybe IntOptions)
indexField_intOptions :: Lens' IndexField (Maybe IntOptions)
indexField_intOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\IndexField' {Maybe IntOptions
intOptions :: Maybe IntOptions
$sel:intOptions:IndexField' :: IndexField -> Maybe IntOptions
intOptions} -> Maybe IntOptions
intOptions) (\s :: IndexField
s@IndexField' {} Maybe IntOptions
a -> IndexField
s {$sel:intOptions:IndexField' :: Maybe IntOptions
intOptions = Maybe IntOptions
a} :: IndexField)

-- | Undocumented member.
indexField_latLonOptions :: Lens.Lens' IndexField (Prelude.Maybe LatLonOptions)
indexField_latLonOptions :: Lens' IndexField (Maybe LatLonOptions)
indexField_latLonOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\IndexField' {Maybe LatLonOptions
latLonOptions :: Maybe LatLonOptions
$sel:latLonOptions:IndexField' :: IndexField -> Maybe LatLonOptions
latLonOptions} -> Maybe LatLonOptions
latLonOptions) (\s :: IndexField
s@IndexField' {} Maybe LatLonOptions
a -> IndexField
s {$sel:latLonOptions:IndexField' :: Maybe LatLonOptions
latLonOptions = Maybe LatLonOptions
a} :: IndexField)

-- | Undocumented member.
indexField_literalArrayOptions :: Lens.Lens' IndexField (Prelude.Maybe LiteralArrayOptions)
indexField_literalArrayOptions :: Lens' IndexField (Maybe LiteralArrayOptions)
indexField_literalArrayOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\IndexField' {Maybe LiteralArrayOptions
literalArrayOptions :: Maybe LiteralArrayOptions
$sel:literalArrayOptions:IndexField' :: IndexField -> Maybe LiteralArrayOptions
literalArrayOptions} -> Maybe LiteralArrayOptions
literalArrayOptions) (\s :: IndexField
s@IndexField' {} Maybe LiteralArrayOptions
a -> IndexField
s {$sel:literalArrayOptions:IndexField' :: Maybe LiteralArrayOptions
literalArrayOptions = Maybe LiteralArrayOptions
a} :: IndexField)

-- | Undocumented member.
indexField_literalOptions :: Lens.Lens' IndexField (Prelude.Maybe LiteralOptions)
indexField_literalOptions :: Lens' IndexField (Maybe LiteralOptions)
indexField_literalOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\IndexField' {Maybe LiteralOptions
literalOptions :: Maybe LiteralOptions
$sel:literalOptions:IndexField' :: IndexField -> Maybe LiteralOptions
literalOptions} -> Maybe LiteralOptions
literalOptions) (\s :: IndexField
s@IndexField' {} Maybe LiteralOptions
a -> IndexField
s {$sel:literalOptions:IndexField' :: Maybe LiteralOptions
literalOptions = Maybe LiteralOptions
a} :: IndexField)

-- | Undocumented member.
indexField_textArrayOptions :: Lens.Lens' IndexField (Prelude.Maybe TextArrayOptions)
indexField_textArrayOptions :: Lens' IndexField (Maybe TextArrayOptions)
indexField_textArrayOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\IndexField' {Maybe TextArrayOptions
textArrayOptions :: Maybe TextArrayOptions
$sel:textArrayOptions:IndexField' :: IndexField -> Maybe TextArrayOptions
textArrayOptions} -> Maybe TextArrayOptions
textArrayOptions) (\s :: IndexField
s@IndexField' {} Maybe TextArrayOptions
a -> IndexField
s {$sel:textArrayOptions:IndexField' :: Maybe TextArrayOptions
textArrayOptions = Maybe TextArrayOptions
a} :: IndexField)

-- | Undocumented member.
indexField_textOptions :: Lens.Lens' IndexField (Prelude.Maybe TextOptions)
indexField_textOptions :: Lens' IndexField (Maybe TextOptions)
indexField_textOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\IndexField' {Maybe TextOptions
textOptions :: Maybe TextOptions
$sel:textOptions:IndexField' :: IndexField -> Maybe TextOptions
textOptions} -> Maybe TextOptions
textOptions) (\s :: IndexField
s@IndexField' {} Maybe TextOptions
a -> IndexField
s {$sel:textOptions:IndexField' :: Maybe TextOptions
textOptions = Maybe TextOptions
a} :: IndexField)

-- | A string that represents the name of an index field. CloudSearch
-- supports regular index fields as well as dynamic fields. A dynamic
-- field\'s name defines a pattern that begins or ends with a wildcard. Any
-- document fields that don\'t map to a regular index field but do match a
-- dynamic field\'s pattern are configured with the dynamic field\'s
-- indexing options.
--
-- Regular field names begin with a letter and can contain the following
-- characters: a-z (lowercase), 0-9, and _ (underscore). Dynamic field
-- names must begin or end with a wildcard (*). The wildcard can also be
-- the only character in a dynamic field name. Multiple wildcards, and
-- wildcards embedded within a string are not supported.
--
-- The name @score@ is reserved and cannot be used as a field name. To
-- reference a document\'s ID, you can use the name @_id@.
indexField_indexFieldName :: Lens.Lens' IndexField Prelude.Text
indexField_indexFieldName :: Lens' IndexField Text
indexField_indexFieldName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\IndexField' {Text
indexFieldName :: Text
$sel:indexFieldName:IndexField' :: IndexField -> Text
indexFieldName} -> Text
indexFieldName) (\s :: IndexField
s@IndexField' {} Text
a -> IndexField
s {$sel:indexFieldName:IndexField' :: Text
indexFieldName = Text
a} :: IndexField)

-- | Undocumented member.
indexField_indexFieldType :: Lens.Lens' IndexField IndexFieldType
indexField_indexFieldType :: Lens' IndexField IndexFieldType
indexField_indexFieldType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\IndexField' {IndexFieldType
indexFieldType :: IndexFieldType
$sel:indexFieldType:IndexField' :: IndexField -> IndexFieldType
indexFieldType} -> IndexFieldType
indexFieldType) (\s :: IndexField
s@IndexField' {} IndexFieldType
a -> IndexField
s {$sel:indexFieldType:IndexField' :: IndexFieldType
indexFieldType = IndexFieldType
a} :: IndexField)

instance Data.FromXML IndexField where
  parseXML :: [Node] -> Either String IndexField
parseXML [Node]
x =
    Maybe DateArrayOptions
-> Maybe DateOptions
-> Maybe DoubleArrayOptions
-> Maybe DoubleOptions
-> Maybe IntArrayOptions
-> Maybe IntOptions
-> Maybe LatLonOptions
-> Maybe LiteralArrayOptions
-> Maybe LiteralOptions
-> Maybe TextArrayOptions
-> Maybe TextOptions
-> Text
-> IndexFieldType
-> IndexField
IndexField'
      forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"DateArrayOptions")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"DateOptions")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"DoubleArrayOptions")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"DoubleOptions")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"IntArrayOptions")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"IntOptions")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"LatLonOptions")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"LiteralArrayOptions")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"LiteralOptions")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"TextArrayOptions")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"TextOptions")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"IndexFieldName")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"IndexFieldType")

instance Prelude.Hashable IndexField where
  hashWithSalt :: Int -> IndexField -> Int
hashWithSalt Int
_salt IndexField' {Maybe DateArrayOptions
Maybe DateOptions
Maybe DoubleArrayOptions
Maybe DoubleOptions
Maybe IntArrayOptions
Maybe IntOptions
Maybe LatLonOptions
Maybe LiteralArrayOptions
Maybe LiteralOptions
Maybe TextArrayOptions
Maybe TextOptions
Text
IndexFieldType
indexFieldType :: IndexFieldType
indexFieldName :: Text
textOptions :: Maybe TextOptions
textArrayOptions :: Maybe TextArrayOptions
literalOptions :: Maybe LiteralOptions
literalArrayOptions :: Maybe LiteralArrayOptions
latLonOptions :: Maybe LatLonOptions
intOptions :: Maybe IntOptions
intArrayOptions :: Maybe IntArrayOptions
doubleOptions :: Maybe DoubleOptions
doubleArrayOptions :: Maybe DoubleArrayOptions
dateOptions :: Maybe DateOptions
dateArrayOptions :: Maybe DateArrayOptions
$sel:indexFieldType:IndexField' :: IndexField -> IndexFieldType
$sel:indexFieldName:IndexField' :: IndexField -> Text
$sel:textOptions:IndexField' :: IndexField -> Maybe TextOptions
$sel:textArrayOptions:IndexField' :: IndexField -> Maybe TextArrayOptions
$sel:literalOptions:IndexField' :: IndexField -> Maybe LiteralOptions
$sel:literalArrayOptions:IndexField' :: IndexField -> Maybe LiteralArrayOptions
$sel:latLonOptions:IndexField' :: IndexField -> Maybe LatLonOptions
$sel:intOptions:IndexField' :: IndexField -> Maybe IntOptions
$sel:intArrayOptions:IndexField' :: IndexField -> Maybe IntArrayOptions
$sel:doubleOptions:IndexField' :: IndexField -> Maybe DoubleOptions
$sel:doubleArrayOptions:IndexField' :: IndexField -> Maybe DoubleArrayOptions
$sel:dateOptions:IndexField' :: IndexField -> Maybe DateOptions
$sel:dateArrayOptions:IndexField' :: IndexField -> Maybe DateArrayOptions
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DateArrayOptions
dateArrayOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DateOptions
dateOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DoubleArrayOptions
doubleArrayOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DoubleOptions
doubleOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe IntArrayOptions
intArrayOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe IntOptions
intOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LatLonOptions
latLonOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LiteralArrayOptions
literalArrayOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LiteralOptions
literalOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TextArrayOptions
textArrayOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TextOptions
textOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
indexFieldName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` IndexFieldType
indexFieldType

instance Prelude.NFData IndexField where
  rnf :: IndexField -> ()
rnf IndexField' {Maybe DateArrayOptions
Maybe DateOptions
Maybe DoubleArrayOptions
Maybe DoubleOptions
Maybe IntArrayOptions
Maybe IntOptions
Maybe LatLonOptions
Maybe LiteralArrayOptions
Maybe LiteralOptions
Maybe TextArrayOptions
Maybe TextOptions
Text
IndexFieldType
indexFieldType :: IndexFieldType
indexFieldName :: Text
textOptions :: Maybe TextOptions
textArrayOptions :: Maybe TextArrayOptions
literalOptions :: Maybe LiteralOptions
literalArrayOptions :: Maybe LiteralArrayOptions
latLonOptions :: Maybe LatLonOptions
intOptions :: Maybe IntOptions
intArrayOptions :: Maybe IntArrayOptions
doubleOptions :: Maybe DoubleOptions
doubleArrayOptions :: Maybe DoubleArrayOptions
dateOptions :: Maybe DateOptions
dateArrayOptions :: Maybe DateArrayOptions
$sel:indexFieldType:IndexField' :: IndexField -> IndexFieldType
$sel:indexFieldName:IndexField' :: IndexField -> Text
$sel:textOptions:IndexField' :: IndexField -> Maybe TextOptions
$sel:textArrayOptions:IndexField' :: IndexField -> Maybe TextArrayOptions
$sel:literalOptions:IndexField' :: IndexField -> Maybe LiteralOptions
$sel:literalArrayOptions:IndexField' :: IndexField -> Maybe LiteralArrayOptions
$sel:latLonOptions:IndexField' :: IndexField -> Maybe LatLonOptions
$sel:intOptions:IndexField' :: IndexField -> Maybe IntOptions
$sel:intArrayOptions:IndexField' :: IndexField -> Maybe IntArrayOptions
$sel:doubleOptions:IndexField' :: IndexField -> Maybe DoubleOptions
$sel:doubleArrayOptions:IndexField' :: IndexField -> Maybe DoubleArrayOptions
$sel:dateOptions:IndexField' :: IndexField -> Maybe DateOptions
$sel:dateArrayOptions:IndexField' :: IndexField -> Maybe DateArrayOptions
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe DateArrayOptions
dateArrayOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DateOptions
dateOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DoubleArrayOptions
doubleArrayOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DoubleOptions
doubleOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe IntArrayOptions
intArrayOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe IntOptions
intOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LatLonOptions
latLonOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LiteralArrayOptions
literalArrayOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LiteralOptions
literalOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TextArrayOptions
textArrayOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TextOptions
textOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
indexFieldName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf IndexFieldType
indexFieldType

instance Data.ToQuery IndexField where
  toQuery :: IndexField -> QueryString
toQuery IndexField' {Maybe DateArrayOptions
Maybe DateOptions
Maybe DoubleArrayOptions
Maybe DoubleOptions
Maybe IntArrayOptions
Maybe IntOptions
Maybe LatLonOptions
Maybe LiteralArrayOptions
Maybe LiteralOptions
Maybe TextArrayOptions
Maybe TextOptions
Text
IndexFieldType
indexFieldType :: IndexFieldType
indexFieldName :: Text
textOptions :: Maybe TextOptions
textArrayOptions :: Maybe TextArrayOptions
literalOptions :: Maybe LiteralOptions
literalArrayOptions :: Maybe LiteralArrayOptions
latLonOptions :: Maybe LatLonOptions
intOptions :: Maybe IntOptions
intArrayOptions :: Maybe IntArrayOptions
doubleOptions :: Maybe DoubleOptions
doubleArrayOptions :: Maybe DoubleArrayOptions
dateOptions :: Maybe DateOptions
dateArrayOptions :: Maybe DateArrayOptions
$sel:indexFieldType:IndexField' :: IndexField -> IndexFieldType
$sel:indexFieldName:IndexField' :: IndexField -> Text
$sel:textOptions:IndexField' :: IndexField -> Maybe TextOptions
$sel:textArrayOptions:IndexField' :: IndexField -> Maybe TextArrayOptions
$sel:literalOptions:IndexField' :: IndexField -> Maybe LiteralOptions
$sel:literalArrayOptions:IndexField' :: IndexField -> Maybe LiteralArrayOptions
$sel:latLonOptions:IndexField' :: IndexField -> Maybe LatLonOptions
$sel:intOptions:IndexField' :: IndexField -> Maybe IntOptions
$sel:intArrayOptions:IndexField' :: IndexField -> Maybe IntArrayOptions
$sel:doubleOptions:IndexField' :: IndexField -> Maybe DoubleOptions
$sel:doubleArrayOptions:IndexField' :: IndexField -> Maybe DoubleArrayOptions
$sel:dateOptions:IndexField' :: IndexField -> Maybe DateOptions
$sel:dateArrayOptions:IndexField' :: IndexField -> Maybe DateArrayOptions
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"DateArrayOptions" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe DateArrayOptions
dateArrayOptions,
        ByteString
"DateOptions" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe DateOptions
dateOptions,
        ByteString
"DoubleArrayOptions" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe DoubleArrayOptions
doubleArrayOptions,
        ByteString
"DoubleOptions" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe DoubleOptions
doubleOptions,
        ByteString
"IntArrayOptions" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe IntArrayOptions
intArrayOptions,
        ByteString
"IntOptions" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe IntOptions
intOptions,
        ByteString
"LatLonOptions" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe LatLonOptions
latLonOptions,
        ByteString
"LiteralArrayOptions" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe LiteralArrayOptions
literalArrayOptions,
        ByteString
"LiteralOptions" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe LiteralOptions
literalOptions,
        ByteString
"TextArrayOptions" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe TextArrayOptions
textArrayOptions,
        ByteString
"TextOptions" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe TextOptions
textOptions,
        ByteString
"IndexFieldName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
indexFieldName,
        ByteString
"IndexFieldType" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: IndexFieldType
indexFieldType
      ]