packages feed

amazonka-kendra-2.0: gen/Amazonka/Kendra/Types/CapacityUnitsConfiguration.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.Kendra.Types.CapacityUnitsConfiguration
-- 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.Kendra.Types.CapacityUnitsConfiguration where

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

-- | Specifies additional capacity units configured for your Enterprise
-- Edition index. You can add and remove capacity units to fit your usage
-- requirements.
--
-- /See:/ 'newCapacityUnitsConfiguration' smart constructor.
data CapacityUnitsConfiguration = CapacityUnitsConfiguration'
  { -- | The amount of extra storage capacity for an index. A single capacity
    -- unit provides 30 GB of storage space or 100,000 documents, whichever is
    -- reached first. You can add up to 100 extra capacity units.
    storageCapacityUnits :: Prelude.Natural,
    -- | The amount of extra query capacity for an index and
    -- <https://docs.aws.amazon.com/kendra/latest/dg/API_GetQuerySuggestions.html GetQuerySuggestions>
    -- capacity.
    --
    -- A single extra capacity unit for an index provides 0.1 queries per
    -- second or approximately 8,000 queries per day. You can add up to 100
    -- extra capacity units.
    --
    -- @GetQuerySuggestions@ capacity is five times the provisioned query
    -- capacity for an index, or the base capacity of 2.5 calls per second,
    -- whichever is higher. For example, the base capacity for an index is 0.1
    -- queries per second, and @GetQuerySuggestions@ capacity has a base of 2.5
    -- calls per second. If you add another 0.1 queries per second to total 0.2
    -- queries per second for an index, the @GetQuerySuggestions@ capacity is
    -- 2.5 calls per second (higher than five times 0.2 queries per second).
    queryCapacityUnits :: Prelude.Natural
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'CapacityUnitsConfiguration' 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:
--
-- 'storageCapacityUnits', 'capacityUnitsConfiguration_storageCapacityUnits' - The amount of extra storage capacity for an index. A single capacity
-- unit provides 30 GB of storage space or 100,000 documents, whichever is
-- reached first. You can add up to 100 extra capacity units.
--
-- 'queryCapacityUnits', 'capacityUnitsConfiguration_queryCapacityUnits' - The amount of extra query capacity for an index and
-- <https://docs.aws.amazon.com/kendra/latest/dg/API_GetQuerySuggestions.html GetQuerySuggestions>
-- capacity.
--
-- A single extra capacity unit for an index provides 0.1 queries per
-- second or approximately 8,000 queries per day. You can add up to 100
-- extra capacity units.
--
-- @GetQuerySuggestions@ capacity is five times the provisioned query
-- capacity for an index, or the base capacity of 2.5 calls per second,
-- whichever is higher. For example, the base capacity for an index is 0.1
-- queries per second, and @GetQuerySuggestions@ capacity has a base of 2.5
-- calls per second. If you add another 0.1 queries per second to total 0.2
-- queries per second for an index, the @GetQuerySuggestions@ capacity is
-- 2.5 calls per second (higher than five times 0.2 queries per second).
newCapacityUnitsConfiguration ::
  -- | 'storageCapacityUnits'
  Prelude.Natural ->
  -- | 'queryCapacityUnits'
  Prelude.Natural ->
  CapacityUnitsConfiguration
newCapacityUnitsConfiguration
  pStorageCapacityUnits_
  pQueryCapacityUnits_ =
    CapacityUnitsConfiguration'
      { storageCapacityUnits =
          pStorageCapacityUnits_,
        queryCapacityUnits = pQueryCapacityUnits_
      }

-- | The amount of extra storage capacity for an index. A single capacity
-- unit provides 30 GB of storage space or 100,000 documents, whichever is
-- reached first. You can add up to 100 extra capacity units.
capacityUnitsConfiguration_storageCapacityUnits :: Lens.Lens' CapacityUnitsConfiguration Prelude.Natural
capacityUnitsConfiguration_storageCapacityUnits = Lens.lens (\CapacityUnitsConfiguration' {storageCapacityUnits} -> storageCapacityUnits) (\s@CapacityUnitsConfiguration' {} a -> s {storageCapacityUnits = a} :: CapacityUnitsConfiguration)

-- | The amount of extra query capacity for an index and
-- <https://docs.aws.amazon.com/kendra/latest/dg/API_GetQuerySuggestions.html GetQuerySuggestions>
-- capacity.
--
-- A single extra capacity unit for an index provides 0.1 queries per
-- second or approximately 8,000 queries per day. You can add up to 100
-- extra capacity units.
--
-- @GetQuerySuggestions@ capacity is five times the provisioned query
-- capacity for an index, or the base capacity of 2.5 calls per second,
-- whichever is higher. For example, the base capacity for an index is 0.1
-- queries per second, and @GetQuerySuggestions@ capacity has a base of 2.5
-- calls per second. If you add another 0.1 queries per second to total 0.2
-- queries per second for an index, the @GetQuerySuggestions@ capacity is
-- 2.5 calls per second (higher than five times 0.2 queries per second).
capacityUnitsConfiguration_queryCapacityUnits :: Lens.Lens' CapacityUnitsConfiguration Prelude.Natural
capacityUnitsConfiguration_queryCapacityUnits = Lens.lens (\CapacityUnitsConfiguration' {queryCapacityUnits} -> queryCapacityUnits) (\s@CapacityUnitsConfiguration' {} a -> s {queryCapacityUnits = a} :: CapacityUnitsConfiguration)

instance Data.FromJSON CapacityUnitsConfiguration where
  parseJSON =
    Data.withObject
      "CapacityUnitsConfiguration"
      ( \x ->
          CapacityUnitsConfiguration'
            Prelude.<$> (x Data..: "StorageCapacityUnits")
            Prelude.<*> (x Data..: "QueryCapacityUnits")
      )

instance Prelude.Hashable CapacityUnitsConfiguration where
  hashWithSalt _salt CapacityUnitsConfiguration' {..} =
    _salt
      `Prelude.hashWithSalt` storageCapacityUnits
      `Prelude.hashWithSalt` queryCapacityUnits

instance Prelude.NFData CapacityUnitsConfiguration where
  rnf CapacityUnitsConfiguration' {..} =
    Prelude.rnf storageCapacityUnits
      `Prelude.seq` Prelude.rnf queryCapacityUnits

instance Data.ToJSON CapacityUnitsConfiguration where
  toJSON CapacityUnitsConfiguration' {..} =
    Data.object
      ( Prelude.catMaybes
          [ Prelude.Just
              ( "StorageCapacityUnits"
                  Data..= storageCapacityUnits
              ),
            Prelude.Just
              ("QueryCapacityUnits" Data..= queryCapacityUnits)
          ]
      )