packages feed

amazonka-cloudsearch-2.0: gen/Amazonka/CloudSearch/Types/AnalysisScheme.hs

{-# 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.AnalysisScheme
-- 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.AnalysisScheme where

import Amazonka.CloudSearch.Types.AnalysisOptions
import Amazonka.CloudSearch.Types.AnalysisSchemeLanguage
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 an analysis scheme. Each analysis scheme
-- has a unique name and specifies the language of the text to be
-- processed. The following options can be configured for an analysis
-- scheme: @Synonyms@, @Stopwords@, @StemmingDictionary@,
-- @JapaneseTokenizationDictionary@ and @AlgorithmicStemming@.
--
-- /See:/ 'newAnalysisScheme' smart constructor.
data AnalysisScheme = AnalysisScheme'
  { analysisOptions :: Prelude.Maybe AnalysisOptions,
    analysisSchemeName :: Prelude.Text,
    analysisSchemeLanguage :: AnalysisSchemeLanguage
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'AnalysisScheme' 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:
--
-- 'analysisOptions', 'analysisScheme_analysisOptions' - Undocumented member.
--
-- 'analysisSchemeName', 'analysisScheme_analysisSchemeName' - Undocumented member.
--
-- 'analysisSchemeLanguage', 'analysisScheme_analysisSchemeLanguage' - Undocumented member.
newAnalysisScheme ::
  -- | 'analysisSchemeName'
  Prelude.Text ->
  -- | 'analysisSchemeLanguage'
  AnalysisSchemeLanguage ->
  AnalysisScheme
newAnalysisScheme
  pAnalysisSchemeName_
  pAnalysisSchemeLanguage_ =
    AnalysisScheme'
      { analysisOptions = Prelude.Nothing,
        analysisSchemeName = pAnalysisSchemeName_,
        analysisSchemeLanguage = pAnalysisSchemeLanguage_
      }

-- | Undocumented member.
analysisScheme_analysisOptions :: Lens.Lens' AnalysisScheme (Prelude.Maybe AnalysisOptions)
analysisScheme_analysisOptions = Lens.lens (\AnalysisScheme' {analysisOptions} -> analysisOptions) (\s@AnalysisScheme' {} a -> s {analysisOptions = a} :: AnalysisScheme)

-- | Undocumented member.
analysisScheme_analysisSchemeName :: Lens.Lens' AnalysisScheme Prelude.Text
analysisScheme_analysisSchemeName = Lens.lens (\AnalysisScheme' {analysisSchemeName} -> analysisSchemeName) (\s@AnalysisScheme' {} a -> s {analysisSchemeName = a} :: AnalysisScheme)

-- | Undocumented member.
analysisScheme_analysisSchemeLanguage :: Lens.Lens' AnalysisScheme AnalysisSchemeLanguage
analysisScheme_analysisSchemeLanguage = Lens.lens (\AnalysisScheme' {analysisSchemeLanguage} -> analysisSchemeLanguage) (\s@AnalysisScheme' {} a -> s {analysisSchemeLanguage = a} :: AnalysisScheme)

instance Data.FromXML AnalysisScheme where
  parseXML x =
    AnalysisScheme'
      Prelude.<$> (x Data..@? "AnalysisOptions")
      Prelude.<*> (x Data..@ "AnalysisSchemeName")
      Prelude.<*> (x Data..@ "AnalysisSchemeLanguage")

instance Prelude.Hashable AnalysisScheme where
  hashWithSalt _salt AnalysisScheme' {..} =
    _salt
      `Prelude.hashWithSalt` analysisOptions
      `Prelude.hashWithSalt` analysisSchemeName
      `Prelude.hashWithSalt` analysisSchemeLanguage

instance Prelude.NFData AnalysisScheme where
  rnf AnalysisScheme' {..} =
    Prelude.rnf analysisOptions
      `Prelude.seq` Prelude.rnf analysisSchemeName
      `Prelude.seq` Prelude.rnf analysisSchemeLanguage

instance Data.ToQuery AnalysisScheme where
  toQuery AnalysisScheme' {..} =
    Prelude.mconcat
      [ "AnalysisOptions" Data.=: analysisOptions,
        "AnalysisSchemeName" Data.=: analysisSchemeName,
        "AnalysisSchemeLanguage"
          Data.=: analysisSchemeLanguage
      ]