packages feed

amazonka-appsync-2.0: gen/Amazonka/AppSync/Types/DeltaSyncConfig.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.AppSync.Types.DeltaSyncConfig
-- 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.AppSync.Types.DeltaSyncConfig 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

-- | Describes a Delta Sync configuration.
--
-- /See:/ 'newDeltaSyncConfig' smart constructor.
data DeltaSyncConfig = DeltaSyncConfig'
  { -- | The number of minutes that an Item is stored in the data source.
    baseTableTTL :: Prelude.Maybe Prelude.Integer,
    -- | The Delta Sync table name.
    deltaSyncTableName :: Prelude.Maybe Prelude.Text,
    -- | The number of minutes that a Delta Sync log entry is stored in the Delta
    -- Sync table.
    deltaSyncTableTTL :: Prelude.Maybe Prelude.Integer
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DeltaSyncConfig' 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:
--
-- 'baseTableTTL', 'deltaSyncConfig_baseTableTTL' - The number of minutes that an Item is stored in the data source.
--
-- 'deltaSyncTableName', 'deltaSyncConfig_deltaSyncTableName' - The Delta Sync table name.
--
-- 'deltaSyncTableTTL', 'deltaSyncConfig_deltaSyncTableTTL' - The number of minutes that a Delta Sync log entry is stored in the Delta
-- Sync table.
newDeltaSyncConfig ::
  DeltaSyncConfig
newDeltaSyncConfig =
  DeltaSyncConfig'
    { baseTableTTL = Prelude.Nothing,
      deltaSyncTableName = Prelude.Nothing,
      deltaSyncTableTTL = Prelude.Nothing
    }

-- | The number of minutes that an Item is stored in the data source.
deltaSyncConfig_baseTableTTL :: Lens.Lens' DeltaSyncConfig (Prelude.Maybe Prelude.Integer)
deltaSyncConfig_baseTableTTL = Lens.lens (\DeltaSyncConfig' {baseTableTTL} -> baseTableTTL) (\s@DeltaSyncConfig' {} a -> s {baseTableTTL = a} :: DeltaSyncConfig)

-- | The Delta Sync table name.
deltaSyncConfig_deltaSyncTableName :: Lens.Lens' DeltaSyncConfig (Prelude.Maybe Prelude.Text)
deltaSyncConfig_deltaSyncTableName = Lens.lens (\DeltaSyncConfig' {deltaSyncTableName} -> deltaSyncTableName) (\s@DeltaSyncConfig' {} a -> s {deltaSyncTableName = a} :: DeltaSyncConfig)

-- | The number of minutes that a Delta Sync log entry is stored in the Delta
-- Sync table.
deltaSyncConfig_deltaSyncTableTTL :: Lens.Lens' DeltaSyncConfig (Prelude.Maybe Prelude.Integer)
deltaSyncConfig_deltaSyncTableTTL = Lens.lens (\DeltaSyncConfig' {deltaSyncTableTTL} -> deltaSyncTableTTL) (\s@DeltaSyncConfig' {} a -> s {deltaSyncTableTTL = a} :: DeltaSyncConfig)

instance Data.FromJSON DeltaSyncConfig where
  parseJSON =
    Data.withObject
      "DeltaSyncConfig"
      ( \x ->
          DeltaSyncConfig'
            Prelude.<$> (x Data..:? "baseTableTTL")
            Prelude.<*> (x Data..:? "deltaSyncTableName")
            Prelude.<*> (x Data..:? "deltaSyncTableTTL")
      )

instance Prelude.Hashable DeltaSyncConfig where
  hashWithSalt _salt DeltaSyncConfig' {..} =
    _salt
      `Prelude.hashWithSalt` baseTableTTL
      `Prelude.hashWithSalt` deltaSyncTableName
      `Prelude.hashWithSalt` deltaSyncTableTTL

instance Prelude.NFData DeltaSyncConfig where
  rnf DeltaSyncConfig' {..} =
    Prelude.rnf baseTableTTL
      `Prelude.seq` Prelude.rnf deltaSyncTableName
      `Prelude.seq` Prelude.rnf deltaSyncTableTTL

instance Data.ToJSON DeltaSyncConfig where
  toJSON DeltaSyncConfig' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("baseTableTTL" Data..=) Prelude.<$> baseTableTTL,
            ("deltaSyncTableName" Data..=)
              Prelude.<$> deltaSyncTableName,
            ("deltaSyncTableTTL" Data..=)
              Prelude.<$> deltaSyncTableTTL
          ]
      )