{-# 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.Lightsail.Types.RelationalDatabase
-- 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.Lightsail.Types.RelationalDatabase where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Lightsail.Types.PendingMaintenanceAction
import Amazonka.Lightsail.Types.PendingModifiedRelationalDatabaseValues
import Amazonka.Lightsail.Types.RelationalDatabaseEndpoint
import Amazonka.Lightsail.Types.RelationalDatabaseHardware
import Amazonka.Lightsail.Types.ResourceLocation
import Amazonka.Lightsail.Types.ResourceType
import Amazonka.Lightsail.Types.Tag
import qualified Amazonka.Prelude as Prelude

-- | Describes a database.
--
-- /See:/ 'newRelationalDatabase' smart constructor.
data RelationalDatabase = RelationalDatabase'
  { -- | The Amazon Resource Name (ARN) of the database.
    RelationalDatabase -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | A Boolean value indicating whether automated backup retention is enabled
    -- for the database.
    RelationalDatabase -> Maybe Bool
backupRetentionEnabled :: Prelude.Maybe Prelude.Bool,
    -- | The certificate associated with the database.
    RelationalDatabase -> Maybe Text
caCertificateIdentifier :: Prelude.Maybe Prelude.Text,
    -- | The timestamp when the database was created. Formatted in Unix time.
    RelationalDatabase -> Maybe POSIX
createdAt :: Prelude.Maybe Data.POSIX,
    -- | The database software (for example, @MySQL@).
    RelationalDatabase -> Maybe Text
engine :: Prelude.Maybe Prelude.Text,
    -- | The database engine version (for example, @5.7.23@).
    RelationalDatabase -> Maybe Text
engineVersion :: Prelude.Maybe Prelude.Text,
    -- | Describes the hardware of the database.
    RelationalDatabase -> Maybe RelationalDatabaseHardware
hardware :: Prelude.Maybe RelationalDatabaseHardware,
    -- | The latest point in time to which the database can be restored.
    -- Formatted in Unix time.
    RelationalDatabase -> Maybe POSIX
latestRestorableTime :: Prelude.Maybe Data.POSIX,
    -- | The Region name and Availability Zone where the database is located.
    RelationalDatabase -> Maybe ResourceLocation
location :: Prelude.Maybe ResourceLocation,
    -- | The name of the master database created when the Lightsail database
    -- resource is created.
    RelationalDatabase -> Maybe Text
masterDatabaseName :: Prelude.Maybe Prelude.Text,
    -- | The master endpoint for the database.
    RelationalDatabase -> Maybe RelationalDatabaseEndpoint
masterEndpoint :: Prelude.Maybe RelationalDatabaseEndpoint,
    -- | The master user name of the database.
    RelationalDatabase -> Maybe Text
masterUsername :: Prelude.Maybe Prelude.Text,
    -- | The unique name of the database resource in Lightsail.
    RelationalDatabase -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The status of parameter updates for the database.
    RelationalDatabase -> Maybe Text
parameterApplyStatus :: Prelude.Maybe Prelude.Text,
    -- | Describes the pending maintenance actions for the database.
    RelationalDatabase -> Maybe [PendingMaintenanceAction]
pendingMaintenanceActions :: Prelude.Maybe [PendingMaintenanceAction],
    -- | Describes pending database value modifications.
    RelationalDatabase -> Maybe PendingModifiedRelationalDatabaseValues
pendingModifiedValues :: Prelude.Maybe PendingModifiedRelationalDatabaseValues,
    -- | The daily time range during which automated backups are created for the
    -- database (for example, @16:00-16:30@).
    RelationalDatabase -> Maybe Text
preferredBackupWindow :: Prelude.Maybe Prelude.Text,
    -- | The weekly time range during which system maintenance can occur on the
    -- database.
    --
    -- In the format @ddd:hh24:mi-ddd:hh24:mi@. For example,
    -- @Tue:17:00-Tue:17:30@.
    RelationalDatabase -> Maybe Text
preferredMaintenanceWindow :: Prelude.Maybe Prelude.Text,
    -- | A Boolean value indicating whether the database is publicly accessible.
    RelationalDatabase -> Maybe Bool
publiclyAccessible :: Prelude.Maybe Prelude.Bool,
    -- | The blueprint ID for the database. A blueprint describes the major
    -- engine version of a database.
    RelationalDatabase -> Maybe Text
relationalDatabaseBlueprintId :: Prelude.Maybe Prelude.Text,
    -- | The bundle ID for the database. A bundle describes the performance
    -- specifications for your database.
    RelationalDatabase -> Maybe Text
relationalDatabaseBundleId :: Prelude.Maybe Prelude.Text,
    -- | The Lightsail resource type for the database (for example,
    -- @RelationalDatabase@).
    RelationalDatabase -> Maybe ResourceType
resourceType :: Prelude.Maybe ResourceType,
    -- | Describes the secondary Availability Zone of a high availability
    -- database.
    --
    -- The secondary database is used for failover support of a high
    -- availability database.
    RelationalDatabase -> Maybe Text
secondaryAvailabilityZone :: Prelude.Maybe Prelude.Text,
    -- | Describes the current state of the database.
    RelationalDatabase -> Maybe Text
state :: Prelude.Maybe Prelude.Text,
    -- | The support code for the database. Include this code in your email to
    -- support when you have questions about a database in Lightsail. This code
    -- enables our support team to look up your Lightsail information more
    -- easily.
    RelationalDatabase -> Maybe Text
supportCode :: Prelude.Maybe Prelude.Text,
    -- | The tag keys and optional values for the resource. For more information
    -- about tags in Lightsail, see the
    -- <https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-tags Amazon Lightsail Developer Guide>.
    RelationalDatabase -> Maybe [Tag]
tags :: Prelude.Maybe [Tag]
  }
  deriving (RelationalDatabase -> RelationalDatabase -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RelationalDatabase -> RelationalDatabase -> Bool
$c/= :: RelationalDatabase -> RelationalDatabase -> Bool
== :: RelationalDatabase -> RelationalDatabase -> Bool
$c== :: RelationalDatabase -> RelationalDatabase -> Bool
Prelude.Eq, ReadPrec [RelationalDatabase]
ReadPrec RelationalDatabase
Int -> ReadS RelationalDatabase
ReadS [RelationalDatabase]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [RelationalDatabase]
$creadListPrec :: ReadPrec [RelationalDatabase]
readPrec :: ReadPrec RelationalDatabase
$creadPrec :: ReadPrec RelationalDatabase
readList :: ReadS [RelationalDatabase]
$creadList :: ReadS [RelationalDatabase]
readsPrec :: Int -> ReadS RelationalDatabase
$creadsPrec :: Int -> ReadS RelationalDatabase
Prelude.Read, Int -> RelationalDatabase -> ShowS
[RelationalDatabase] -> ShowS
RelationalDatabase -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RelationalDatabase] -> ShowS
$cshowList :: [RelationalDatabase] -> ShowS
show :: RelationalDatabase -> String
$cshow :: RelationalDatabase -> String
showsPrec :: Int -> RelationalDatabase -> ShowS
$cshowsPrec :: Int -> RelationalDatabase -> ShowS
Prelude.Show, forall x. Rep RelationalDatabase x -> RelationalDatabase
forall x. RelationalDatabase -> Rep RelationalDatabase x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep RelationalDatabase x -> RelationalDatabase
$cfrom :: forall x. RelationalDatabase -> Rep RelationalDatabase x
Prelude.Generic)

-- |
-- Create a value of 'RelationalDatabase' 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:
--
-- 'arn', 'relationalDatabase_arn' - The Amazon Resource Name (ARN) of the database.
--
-- 'backupRetentionEnabled', 'relationalDatabase_backupRetentionEnabled' - A Boolean value indicating whether automated backup retention is enabled
-- for the database.
--
-- 'caCertificateIdentifier', 'relationalDatabase_caCertificateIdentifier' - The certificate associated with the database.
--
-- 'createdAt', 'relationalDatabase_createdAt' - The timestamp when the database was created. Formatted in Unix time.
--
-- 'engine', 'relationalDatabase_engine' - The database software (for example, @MySQL@).
--
-- 'engineVersion', 'relationalDatabase_engineVersion' - The database engine version (for example, @5.7.23@).
--
-- 'hardware', 'relationalDatabase_hardware' - Describes the hardware of the database.
--
-- 'latestRestorableTime', 'relationalDatabase_latestRestorableTime' - The latest point in time to which the database can be restored.
-- Formatted in Unix time.
--
-- 'location', 'relationalDatabase_location' - The Region name and Availability Zone where the database is located.
--
-- 'masterDatabaseName', 'relationalDatabase_masterDatabaseName' - The name of the master database created when the Lightsail database
-- resource is created.
--
-- 'masterEndpoint', 'relationalDatabase_masterEndpoint' - The master endpoint for the database.
--
-- 'masterUsername', 'relationalDatabase_masterUsername' - The master user name of the database.
--
-- 'name', 'relationalDatabase_name' - The unique name of the database resource in Lightsail.
--
-- 'parameterApplyStatus', 'relationalDatabase_parameterApplyStatus' - The status of parameter updates for the database.
--
-- 'pendingMaintenanceActions', 'relationalDatabase_pendingMaintenanceActions' - Describes the pending maintenance actions for the database.
--
-- 'pendingModifiedValues', 'relationalDatabase_pendingModifiedValues' - Describes pending database value modifications.
--
-- 'preferredBackupWindow', 'relationalDatabase_preferredBackupWindow' - The daily time range during which automated backups are created for the
-- database (for example, @16:00-16:30@).
--
-- 'preferredMaintenanceWindow', 'relationalDatabase_preferredMaintenanceWindow' - The weekly time range during which system maintenance can occur on the
-- database.
--
-- In the format @ddd:hh24:mi-ddd:hh24:mi@. For example,
-- @Tue:17:00-Tue:17:30@.
--
-- 'publiclyAccessible', 'relationalDatabase_publiclyAccessible' - A Boolean value indicating whether the database is publicly accessible.
--
-- 'relationalDatabaseBlueprintId', 'relationalDatabase_relationalDatabaseBlueprintId' - The blueprint ID for the database. A blueprint describes the major
-- engine version of a database.
--
-- 'relationalDatabaseBundleId', 'relationalDatabase_relationalDatabaseBundleId' - The bundle ID for the database. A bundle describes the performance
-- specifications for your database.
--
-- 'resourceType', 'relationalDatabase_resourceType' - The Lightsail resource type for the database (for example,
-- @RelationalDatabase@).
--
-- 'secondaryAvailabilityZone', 'relationalDatabase_secondaryAvailabilityZone' - Describes the secondary Availability Zone of a high availability
-- database.
--
-- The secondary database is used for failover support of a high
-- availability database.
--
-- 'state', 'relationalDatabase_state' - Describes the current state of the database.
--
-- 'supportCode', 'relationalDatabase_supportCode' - The support code for the database. Include this code in your email to
-- support when you have questions about a database in Lightsail. This code
-- enables our support team to look up your Lightsail information more
-- easily.
--
-- 'tags', 'relationalDatabase_tags' - The tag keys and optional values for the resource. For more information
-- about tags in Lightsail, see the
-- <https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-tags Amazon Lightsail Developer Guide>.
newRelationalDatabase ::
  RelationalDatabase
newRelationalDatabase :: RelationalDatabase
newRelationalDatabase =
  RelationalDatabase'
    { $sel:arn:RelationalDatabase' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:backupRetentionEnabled:RelationalDatabase' :: Maybe Bool
backupRetentionEnabled = forall a. Maybe a
Prelude.Nothing,
      $sel:caCertificateIdentifier:RelationalDatabase' :: Maybe Text
caCertificateIdentifier = forall a. Maybe a
Prelude.Nothing,
      $sel:createdAt:RelationalDatabase' :: Maybe POSIX
createdAt = forall a. Maybe a
Prelude.Nothing,
      $sel:engine:RelationalDatabase' :: Maybe Text
engine = forall a. Maybe a
Prelude.Nothing,
      $sel:engineVersion:RelationalDatabase' :: Maybe Text
engineVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:hardware:RelationalDatabase' :: Maybe RelationalDatabaseHardware
hardware = forall a. Maybe a
Prelude.Nothing,
      $sel:latestRestorableTime:RelationalDatabase' :: Maybe POSIX
latestRestorableTime = forall a. Maybe a
Prelude.Nothing,
      $sel:location:RelationalDatabase' :: Maybe ResourceLocation
location = forall a. Maybe a
Prelude.Nothing,
      $sel:masterDatabaseName:RelationalDatabase' :: Maybe Text
masterDatabaseName = forall a. Maybe a
Prelude.Nothing,
      $sel:masterEndpoint:RelationalDatabase' :: Maybe RelationalDatabaseEndpoint
masterEndpoint = forall a. Maybe a
Prelude.Nothing,
      $sel:masterUsername:RelationalDatabase' :: Maybe Text
masterUsername = forall a. Maybe a
Prelude.Nothing,
      $sel:name:RelationalDatabase' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:parameterApplyStatus:RelationalDatabase' :: Maybe Text
parameterApplyStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:pendingMaintenanceActions:RelationalDatabase' :: Maybe [PendingMaintenanceAction]
pendingMaintenanceActions = forall a. Maybe a
Prelude.Nothing,
      $sel:pendingModifiedValues:RelationalDatabase' :: Maybe PendingModifiedRelationalDatabaseValues
pendingModifiedValues = forall a. Maybe a
Prelude.Nothing,
      $sel:preferredBackupWindow:RelationalDatabase' :: Maybe Text
preferredBackupWindow = forall a. Maybe a
Prelude.Nothing,
      $sel:preferredMaintenanceWindow:RelationalDatabase' :: Maybe Text
preferredMaintenanceWindow = forall a. Maybe a
Prelude.Nothing,
      $sel:publiclyAccessible:RelationalDatabase' :: Maybe Bool
publiclyAccessible = forall a. Maybe a
Prelude.Nothing,
      $sel:relationalDatabaseBlueprintId:RelationalDatabase' :: Maybe Text
relationalDatabaseBlueprintId = forall a. Maybe a
Prelude.Nothing,
      $sel:relationalDatabaseBundleId:RelationalDatabase' :: Maybe Text
relationalDatabaseBundleId = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceType:RelationalDatabase' :: Maybe ResourceType
resourceType = forall a. Maybe a
Prelude.Nothing,
      $sel:secondaryAvailabilityZone:RelationalDatabase' :: Maybe Text
secondaryAvailabilityZone = forall a. Maybe a
Prelude.Nothing,
      $sel:state:RelationalDatabase' :: Maybe Text
state = forall a. Maybe a
Prelude.Nothing,
      $sel:supportCode:RelationalDatabase' :: Maybe Text
supportCode = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:RelationalDatabase' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing
    }

-- | The Amazon Resource Name (ARN) of the database.
relationalDatabase_arn :: Lens.Lens' RelationalDatabase (Prelude.Maybe Prelude.Text)
relationalDatabase_arn :: Lens' RelationalDatabase (Maybe Text)
relationalDatabase_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe Text
arn :: Maybe Text
$sel:arn:RelationalDatabase' :: RelationalDatabase -> Maybe Text
arn} -> Maybe Text
arn) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe Text
a -> RelationalDatabase
s {$sel:arn:RelationalDatabase' :: Maybe Text
arn = Maybe Text
a} :: RelationalDatabase)

-- | A Boolean value indicating whether automated backup retention is enabled
-- for the database.
relationalDatabase_backupRetentionEnabled :: Lens.Lens' RelationalDatabase (Prelude.Maybe Prelude.Bool)
relationalDatabase_backupRetentionEnabled :: Lens' RelationalDatabase (Maybe Bool)
relationalDatabase_backupRetentionEnabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe Bool
backupRetentionEnabled :: Maybe Bool
$sel:backupRetentionEnabled:RelationalDatabase' :: RelationalDatabase -> Maybe Bool
backupRetentionEnabled} -> Maybe Bool
backupRetentionEnabled) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe Bool
a -> RelationalDatabase
s {$sel:backupRetentionEnabled:RelationalDatabase' :: Maybe Bool
backupRetentionEnabled = Maybe Bool
a} :: RelationalDatabase)

-- | The certificate associated with the database.
relationalDatabase_caCertificateIdentifier :: Lens.Lens' RelationalDatabase (Prelude.Maybe Prelude.Text)
relationalDatabase_caCertificateIdentifier :: Lens' RelationalDatabase (Maybe Text)
relationalDatabase_caCertificateIdentifier = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe Text
caCertificateIdentifier :: Maybe Text
$sel:caCertificateIdentifier:RelationalDatabase' :: RelationalDatabase -> Maybe Text
caCertificateIdentifier} -> Maybe Text
caCertificateIdentifier) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe Text
a -> RelationalDatabase
s {$sel:caCertificateIdentifier:RelationalDatabase' :: Maybe Text
caCertificateIdentifier = Maybe Text
a} :: RelationalDatabase)

-- | The timestamp when the database was created. Formatted in Unix time.
relationalDatabase_createdAt :: Lens.Lens' RelationalDatabase (Prelude.Maybe Prelude.UTCTime)
relationalDatabase_createdAt :: Lens' RelationalDatabase (Maybe UTCTime)
relationalDatabase_createdAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe POSIX
createdAt :: Maybe POSIX
$sel:createdAt:RelationalDatabase' :: RelationalDatabase -> Maybe POSIX
createdAt} -> Maybe POSIX
createdAt) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe POSIX
a -> RelationalDatabase
s {$sel:createdAt:RelationalDatabase' :: Maybe POSIX
createdAt = Maybe POSIX
a} :: RelationalDatabase) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The database software (for example, @MySQL@).
relationalDatabase_engine :: Lens.Lens' RelationalDatabase (Prelude.Maybe Prelude.Text)
relationalDatabase_engine :: Lens' RelationalDatabase (Maybe Text)
relationalDatabase_engine = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe Text
engine :: Maybe Text
$sel:engine:RelationalDatabase' :: RelationalDatabase -> Maybe Text
engine} -> Maybe Text
engine) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe Text
a -> RelationalDatabase
s {$sel:engine:RelationalDatabase' :: Maybe Text
engine = Maybe Text
a} :: RelationalDatabase)

-- | The database engine version (for example, @5.7.23@).
relationalDatabase_engineVersion :: Lens.Lens' RelationalDatabase (Prelude.Maybe Prelude.Text)
relationalDatabase_engineVersion :: Lens' RelationalDatabase (Maybe Text)
relationalDatabase_engineVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe Text
engineVersion :: Maybe Text
$sel:engineVersion:RelationalDatabase' :: RelationalDatabase -> Maybe Text
engineVersion} -> Maybe Text
engineVersion) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe Text
a -> RelationalDatabase
s {$sel:engineVersion:RelationalDatabase' :: Maybe Text
engineVersion = Maybe Text
a} :: RelationalDatabase)

-- | Describes the hardware of the database.
relationalDatabase_hardware :: Lens.Lens' RelationalDatabase (Prelude.Maybe RelationalDatabaseHardware)
relationalDatabase_hardware :: Lens' RelationalDatabase (Maybe RelationalDatabaseHardware)
relationalDatabase_hardware = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe RelationalDatabaseHardware
hardware :: Maybe RelationalDatabaseHardware
$sel:hardware:RelationalDatabase' :: RelationalDatabase -> Maybe RelationalDatabaseHardware
hardware} -> Maybe RelationalDatabaseHardware
hardware) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe RelationalDatabaseHardware
a -> RelationalDatabase
s {$sel:hardware:RelationalDatabase' :: Maybe RelationalDatabaseHardware
hardware = Maybe RelationalDatabaseHardware
a} :: RelationalDatabase)

-- | The latest point in time to which the database can be restored.
-- Formatted in Unix time.
relationalDatabase_latestRestorableTime :: Lens.Lens' RelationalDatabase (Prelude.Maybe Prelude.UTCTime)
relationalDatabase_latestRestorableTime :: Lens' RelationalDatabase (Maybe UTCTime)
relationalDatabase_latestRestorableTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe POSIX
latestRestorableTime :: Maybe POSIX
$sel:latestRestorableTime:RelationalDatabase' :: RelationalDatabase -> Maybe POSIX
latestRestorableTime} -> Maybe POSIX
latestRestorableTime) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe POSIX
a -> RelationalDatabase
s {$sel:latestRestorableTime:RelationalDatabase' :: Maybe POSIX
latestRestorableTime = Maybe POSIX
a} :: RelationalDatabase) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The Region name and Availability Zone where the database is located.
relationalDatabase_location :: Lens.Lens' RelationalDatabase (Prelude.Maybe ResourceLocation)
relationalDatabase_location :: Lens' RelationalDatabase (Maybe ResourceLocation)
relationalDatabase_location = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe ResourceLocation
location :: Maybe ResourceLocation
$sel:location:RelationalDatabase' :: RelationalDatabase -> Maybe ResourceLocation
location} -> Maybe ResourceLocation
location) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe ResourceLocation
a -> RelationalDatabase
s {$sel:location:RelationalDatabase' :: Maybe ResourceLocation
location = Maybe ResourceLocation
a} :: RelationalDatabase)

-- | The name of the master database created when the Lightsail database
-- resource is created.
relationalDatabase_masterDatabaseName :: Lens.Lens' RelationalDatabase (Prelude.Maybe Prelude.Text)
relationalDatabase_masterDatabaseName :: Lens' RelationalDatabase (Maybe Text)
relationalDatabase_masterDatabaseName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe Text
masterDatabaseName :: Maybe Text
$sel:masterDatabaseName:RelationalDatabase' :: RelationalDatabase -> Maybe Text
masterDatabaseName} -> Maybe Text
masterDatabaseName) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe Text
a -> RelationalDatabase
s {$sel:masterDatabaseName:RelationalDatabase' :: Maybe Text
masterDatabaseName = Maybe Text
a} :: RelationalDatabase)

-- | The master endpoint for the database.
relationalDatabase_masterEndpoint :: Lens.Lens' RelationalDatabase (Prelude.Maybe RelationalDatabaseEndpoint)
relationalDatabase_masterEndpoint :: Lens' RelationalDatabase (Maybe RelationalDatabaseEndpoint)
relationalDatabase_masterEndpoint = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe RelationalDatabaseEndpoint
masterEndpoint :: Maybe RelationalDatabaseEndpoint
$sel:masterEndpoint:RelationalDatabase' :: RelationalDatabase -> Maybe RelationalDatabaseEndpoint
masterEndpoint} -> Maybe RelationalDatabaseEndpoint
masterEndpoint) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe RelationalDatabaseEndpoint
a -> RelationalDatabase
s {$sel:masterEndpoint:RelationalDatabase' :: Maybe RelationalDatabaseEndpoint
masterEndpoint = Maybe RelationalDatabaseEndpoint
a} :: RelationalDatabase)

-- | The master user name of the database.
relationalDatabase_masterUsername :: Lens.Lens' RelationalDatabase (Prelude.Maybe Prelude.Text)
relationalDatabase_masterUsername :: Lens' RelationalDatabase (Maybe Text)
relationalDatabase_masterUsername = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe Text
masterUsername :: Maybe Text
$sel:masterUsername:RelationalDatabase' :: RelationalDatabase -> Maybe Text
masterUsername} -> Maybe Text
masterUsername) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe Text
a -> RelationalDatabase
s {$sel:masterUsername:RelationalDatabase' :: Maybe Text
masterUsername = Maybe Text
a} :: RelationalDatabase)

-- | The unique name of the database resource in Lightsail.
relationalDatabase_name :: Lens.Lens' RelationalDatabase (Prelude.Maybe Prelude.Text)
relationalDatabase_name :: Lens' RelationalDatabase (Maybe Text)
relationalDatabase_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe Text
name :: Maybe Text
$sel:name:RelationalDatabase' :: RelationalDatabase -> Maybe Text
name} -> Maybe Text
name) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe Text
a -> RelationalDatabase
s {$sel:name:RelationalDatabase' :: Maybe Text
name = Maybe Text
a} :: RelationalDatabase)

-- | The status of parameter updates for the database.
relationalDatabase_parameterApplyStatus :: Lens.Lens' RelationalDatabase (Prelude.Maybe Prelude.Text)
relationalDatabase_parameterApplyStatus :: Lens' RelationalDatabase (Maybe Text)
relationalDatabase_parameterApplyStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe Text
parameterApplyStatus :: Maybe Text
$sel:parameterApplyStatus:RelationalDatabase' :: RelationalDatabase -> Maybe Text
parameterApplyStatus} -> Maybe Text
parameterApplyStatus) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe Text
a -> RelationalDatabase
s {$sel:parameterApplyStatus:RelationalDatabase' :: Maybe Text
parameterApplyStatus = Maybe Text
a} :: RelationalDatabase)

-- | Describes the pending maintenance actions for the database.
relationalDatabase_pendingMaintenanceActions :: Lens.Lens' RelationalDatabase (Prelude.Maybe [PendingMaintenanceAction])
relationalDatabase_pendingMaintenanceActions :: Lens' RelationalDatabase (Maybe [PendingMaintenanceAction])
relationalDatabase_pendingMaintenanceActions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe [PendingMaintenanceAction]
pendingMaintenanceActions :: Maybe [PendingMaintenanceAction]
$sel:pendingMaintenanceActions:RelationalDatabase' :: RelationalDatabase -> Maybe [PendingMaintenanceAction]
pendingMaintenanceActions} -> Maybe [PendingMaintenanceAction]
pendingMaintenanceActions) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe [PendingMaintenanceAction]
a -> RelationalDatabase
s {$sel:pendingMaintenanceActions:RelationalDatabase' :: Maybe [PendingMaintenanceAction]
pendingMaintenanceActions = Maybe [PendingMaintenanceAction]
a} :: RelationalDatabase) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Describes pending database value modifications.
relationalDatabase_pendingModifiedValues :: Lens.Lens' RelationalDatabase (Prelude.Maybe PendingModifiedRelationalDatabaseValues)
relationalDatabase_pendingModifiedValues :: Lens'
  RelationalDatabase (Maybe PendingModifiedRelationalDatabaseValues)
relationalDatabase_pendingModifiedValues = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe PendingModifiedRelationalDatabaseValues
pendingModifiedValues :: Maybe PendingModifiedRelationalDatabaseValues
$sel:pendingModifiedValues:RelationalDatabase' :: RelationalDatabase -> Maybe PendingModifiedRelationalDatabaseValues
pendingModifiedValues} -> Maybe PendingModifiedRelationalDatabaseValues
pendingModifiedValues) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe PendingModifiedRelationalDatabaseValues
a -> RelationalDatabase
s {$sel:pendingModifiedValues:RelationalDatabase' :: Maybe PendingModifiedRelationalDatabaseValues
pendingModifiedValues = Maybe PendingModifiedRelationalDatabaseValues
a} :: RelationalDatabase)

-- | The daily time range during which automated backups are created for the
-- database (for example, @16:00-16:30@).
relationalDatabase_preferredBackupWindow :: Lens.Lens' RelationalDatabase (Prelude.Maybe Prelude.Text)
relationalDatabase_preferredBackupWindow :: Lens' RelationalDatabase (Maybe Text)
relationalDatabase_preferredBackupWindow = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe Text
preferredBackupWindow :: Maybe Text
$sel:preferredBackupWindow:RelationalDatabase' :: RelationalDatabase -> Maybe Text
preferredBackupWindow} -> Maybe Text
preferredBackupWindow) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe Text
a -> RelationalDatabase
s {$sel:preferredBackupWindow:RelationalDatabase' :: Maybe Text
preferredBackupWindow = Maybe Text
a} :: RelationalDatabase)

-- | The weekly time range during which system maintenance can occur on the
-- database.
--
-- In the format @ddd:hh24:mi-ddd:hh24:mi@. For example,
-- @Tue:17:00-Tue:17:30@.
relationalDatabase_preferredMaintenanceWindow :: Lens.Lens' RelationalDatabase (Prelude.Maybe Prelude.Text)
relationalDatabase_preferredMaintenanceWindow :: Lens' RelationalDatabase (Maybe Text)
relationalDatabase_preferredMaintenanceWindow = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe Text
preferredMaintenanceWindow :: Maybe Text
$sel:preferredMaintenanceWindow:RelationalDatabase' :: RelationalDatabase -> Maybe Text
preferredMaintenanceWindow} -> Maybe Text
preferredMaintenanceWindow) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe Text
a -> RelationalDatabase
s {$sel:preferredMaintenanceWindow:RelationalDatabase' :: Maybe Text
preferredMaintenanceWindow = Maybe Text
a} :: RelationalDatabase)

-- | A Boolean value indicating whether the database is publicly accessible.
relationalDatabase_publiclyAccessible :: Lens.Lens' RelationalDatabase (Prelude.Maybe Prelude.Bool)
relationalDatabase_publiclyAccessible :: Lens' RelationalDatabase (Maybe Bool)
relationalDatabase_publiclyAccessible = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe Bool
publiclyAccessible :: Maybe Bool
$sel:publiclyAccessible:RelationalDatabase' :: RelationalDatabase -> Maybe Bool
publiclyAccessible} -> Maybe Bool
publiclyAccessible) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe Bool
a -> RelationalDatabase
s {$sel:publiclyAccessible:RelationalDatabase' :: Maybe Bool
publiclyAccessible = Maybe Bool
a} :: RelationalDatabase)

-- | The blueprint ID for the database. A blueprint describes the major
-- engine version of a database.
relationalDatabase_relationalDatabaseBlueprintId :: Lens.Lens' RelationalDatabase (Prelude.Maybe Prelude.Text)
relationalDatabase_relationalDatabaseBlueprintId :: Lens' RelationalDatabase (Maybe Text)
relationalDatabase_relationalDatabaseBlueprintId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe Text
relationalDatabaseBlueprintId :: Maybe Text
$sel:relationalDatabaseBlueprintId:RelationalDatabase' :: RelationalDatabase -> Maybe Text
relationalDatabaseBlueprintId} -> Maybe Text
relationalDatabaseBlueprintId) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe Text
a -> RelationalDatabase
s {$sel:relationalDatabaseBlueprintId:RelationalDatabase' :: Maybe Text
relationalDatabaseBlueprintId = Maybe Text
a} :: RelationalDatabase)

-- | The bundle ID for the database. A bundle describes the performance
-- specifications for your database.
relationalDatabase_relationalDatabaseBundleId :: Lens.Lens' RelationalDatabase (Prelude.Maybe Prelude.Text)
relationalDatabase_relationalDatabaseBundleId :: Lens' RelationalDatabase (Maybe Text)
relationalDatabase_relationalDatabaseBundleId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe Text
relationalDatabaseBundleId :: Maybe Text
$sel:relationalDatabaseBundleId:RelationalDatabase' :: RelationalDatabase -> Maybe Text
relationalDatabaseBundleId} -> Maybe Text
relationalDatabaseBundleId) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe Text
a -> RelationalDatabase
s {$sel:relationalDatabaseBundleId:RelationalDatabase' :: Maybe Text
relationalDatabaseBundleId = Maybe Text
a} :: RelationalDatabase)

-- | The Lightsail resource type for the database (for example,
-- @RelationalDatabase@).
relationalDatabase_resourceType :: Lens.Lens' RelationalDatabase (Prelude.Maybe ResourceType)
relationalDatabase_resourceType :: Lens' RelationalDatabase (Maybe ResourceType)
relationalDatabase_resourceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe ResourceType
resourceType :: Maybe ResourceType
$sel:resourceType:RelationalDatabase' :: RelationalDatabase -> Maybe ResourceType
resourceType} -> Maybe ResourceType
resourceType) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe ResourceType
a -> RelationalDatabase
s {$sel:resourceType:RelationalDatabase' :: Maybe ResourceType
resourceType = Maybe ResourceType
a} :: RelationalDatabase)

-- | Describes the secondary Availability Zone of a high availability
-- database.
--
-- The secondary database is used for failover support of a high
-- availability database.
relationalDatabase_secondaryAvailabilityZone :: Lens.Lens' RelationalDatabase (Prelude.Maybe Prelude.Text)
relationalDatabase_secondaryAvailabilityZone :: Lens' RelationalDatabase (Maybe Text)
relationalDatabase_secondaryAvailabilityZone = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe Text
secondaryAvailabilityZone :: Maybe Text
$sel:secondaryAvailabilityZone:RelationalDatabase' :: RelationalDatabase -> Maybe Text
secondaryAvailabilityZone} -> Maybe Text
secondaryAvailabilityZone) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe Text
a -> RelationalDatabase
s {$sel:secondaryAvailabilityZone:RelationalDatabase' :: Maybe Text
secondaryAvailabilityZone = Maybe Text
a} :: RelationalDatabase)

-- | Describes the current state of the database.
relationalDatabase_state :: Lens.Lens' RelationalDatabase (Prelude.Maybe Prelude.Text)
relationalDatabase_state :: Lens' RelationalDatabase (Maybe Text)
relationalDatabase_state = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe Text
state :: Maybe Text
$sel:state:RelationalDatabase' :: RelationalDatabase -> Maybe Text
state} -> Maybe Text
state) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe Text
a -> RelationalDatabase
s {$sel:state:RelationalDatabase' :: Maybe Text
state = Maybe Text
a} :: RelationalDatabase)

-- | The support code for the database. Include this code in your email to
-- support when you have questions about a database in Lightsail. This code
-- enables our support team to look up your Lightsail information more
-- easily.
relationalDatabase_supportCode :: Lens.Lens' RelationalDatabase (Prelude.Maybe Prelude.Text)
relationalDatabase_supportCode :: Lens' RelationalDatabase (Maybe Text)
relationalDatabase_supportCode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe Text
supportCode :: Maybe Text
$sel:supportCode:RelationalDatabase' :: RelationalDatabase -> Maybe Text
supportCode} -> Maybe Text
supportCode) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe Text
a -> RelationalDatabase
s {$sel:supportCode:RelationalDatabase' :: Maybe Text
supportCode = Maybe Text
a} :: RelationalDatabase)

-- | The tag keys and optional values for the resource. For more information
-- about tags in Lightsail, see the
-- <https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-tags Amazon Lightsail Developer Guide>.
relationalDatabase_tags :: Lens.Lens' RelationalDatabase (Prelude.Maybe [Tag])
relationalDatabase_tags :: Lens' RelationalDatabase (Maybe [Tag])
relationalDatabase_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RelationalDatabase' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:RelationalDatabase' :: RelationalDatabase -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: RelationalDatabase
s@RelationalDatabase' {} Maybe [Tag]
a -> RelationalDatabase
s {$sel:tags:RelationalDatabase' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: RelationalDatabase) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Data.FromJSON RelationalDatabase where
  parseJSON :: Value -> Parser RelationalDatabase
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"RelationalDatabase"
      ( \Object
x ->
          Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe RelationalDatabaseHardware
-> Maybe POSIX
-> Maybe ResourceLocation
-> Maybe Text
-> Maybe RelationalDatabaseEndpoint
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [PendingMaintenanceAction]
-> Maybe PendingModifiedRelationalDatabaseValues
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe ResourceType
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [Tag]
-> RelationalDatabase
RelationalDatabase'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"arn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"backupRetentionEnabled")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"caCertificateIdentifier")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"createdAt")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"engine")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"engineVersion")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"hardware")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"latestRestorableTime")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"location")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"masterDatabaseName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"masterEndpoint")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"masterUsername")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"name")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"parameterApplyStatus")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"pendingMaintenanceActions"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"pendingModifiedValues")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"preferredBackupWindow")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"preferredMaintenanceWindow")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"publiclyAccessible")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"relationalDatabaseBlueprintId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"relationalDatabaseBundleId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"resourceType")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"secondaryAvailabilityZone")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"state")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"supportCode")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"tags" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
      )

instance Prelude.Hashable RelationalDatabase where
  hashWithSalt :: Int -> RelationalDatabase -> Int
hashWithSalt Int
_salt RelationalDatabase' {Maybe Bool
Maybe [PendingMaintenanceAction]
Maybe [Tag]
Maybe Text
Maybe POSIX
Maybe PendingModifiedRelationalDatabaseValues
Maybe RelationalDatabaseEndpoint
Maybe RelationalDatabaseHardware
Maybe ResourceLocation
Maybe ResourceType
tags :: Maybe [Tag]
supportCode :: Maybe Text
state :: Maybe Text
secondaryAvailabilityZone :: Maybe Text
resourceType :: Maybe ResourceType
relationalDatabaseBundleId :: Maybe Text
relationalDatabaseBlueprintId :: Maybe Text
publiclyAccessible :: Maybe Bool
preferredMaintenanceWindow :: Maybe Text
preferredBackupWindow :: Maybe Text
pendingModifiedValues :: Maybe PendingModifiedRelationalDatabaseValues
pendingMaintenanceActions :: Maybe [PendingMaintenanceAction]
parameterApplyStatus :: Maybe Text
name :: Maybe Text
masterUsername :: Maybe Text
masterEndpoint :: Maybe RelationalDatabaseEndpoint
masterDatabaseName :: Maybe Text
location :: Maybe ResourceLocation
latestRestorableTime :: Maybe POSIX
hardware :: Maybe RelationalDatabaseHardware
engineVersion :: Maybe Text
engine :: Maybe Text
createdAt :: Maybe POSIX
caCertificateIdentifier :: Maybe Text
backupRetentionEnabled :: Maybe Bool
arn :: Maybe Text
$sel:tags:RelationalDatabase' :: RelationalDatabase -> Maybe [Tag]
$sel:supportCode:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:state:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:secondaryAvailabilityZone:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:resourceType:RelationalDatabase' :: RelationalDatabase -> Maybe ResourceType
$sel:relationalDatabaseBundleId:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:relationalDatabaseBlueprintId:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:publiclyAccessible:RelationalDatabase' :: RelationalDatabase -> Maybe Bool
$sel:preferredMaintenanceWindow:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:preferredBackupWindow:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:pendingModifiedValues:RelationalDatabase' :: RelationalDatabase -> Maybe PendingModifiedRelationalDatabaseValues
$sel:pendingMaintenanceActions:RelationalDatabase' :: RelationalDatabase -> Maybe [PendingMaintenanceAction]
$sel:parameterApplyStatus:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:name:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:masterUsername:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:masterEndpoint:RelationalDatabase' :: RelationalDatabase -> Maybe RelationalDatabaseEndpoint
$sel:masterDatabaseName:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:location:RelationalDatabase' :: RelationalDatabase -> Maybe ResourceLocation
$sel:latestRestorableTime:RelationalDatabase' :: RelationalDatabase -> Maybe POSIX
$sel:hardware:RelationalDatabase' :: RelationalDatabase -> Maybe RelationalDatabaseHardware
$sel:engineVersion:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:engine:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:createdAt:RelationalDatabase' :: RelationalDatabase -> Maybe POSIX
$sel:caCertificateIdentifier:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:backupRetentionEnabled:RelationalDatabase' :: RelationalDatabase -> Maybe Bool
$sel:arn:RelationalDatabase' :: RelationalDatabase -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
arn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
backupRetentionEnabled
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
caCertificateIdentifier
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
createdAt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
engine
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
engineVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RelationalDatabaseHardware
hardware
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
latestRestorableTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResourceLocation
location
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
masterDatabaseName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RelationalDatabaseEndpoint
masterEndpoint
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
masterUsername
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
parameterApplyStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [PendingMaintenanceAction]
pendingMaintenanceActions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PendingModifiedRelationalDatabaseValues
pendingModifiedValues
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
preferredBackupWindow
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
preferredMaintenanceWindow
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
publiclyAccessible
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
relationalDatabaseBlueprintId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
relationalDatabaseBundleId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResourceType
resourceType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
secondaryAvailabilityZone
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
state
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
supportCode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags

instance Prelude.NFData RelationalDatabase where
  rnf :: RelationalDatabase -> ()
rnf RelationalDatabase' {Maybe Bool
Maybe [PendingMaintenanceAction]
Maybe [Tag]
Maybe Text
Maybe POSIX
Maybe PendingModifiedRelationalDatabaseValues
Maybe RelationalDatabaseEndpoint
Maybe RelationalDatabaseHardware
Maybe ResourceLocation
Maybe ResourceType
tags :: Maybe [Tag]
supportCode :: Maybe Text
state :: Maybe Text
secondaryAvailabilityZone :: Maybe Text
resourceType :: Maybe ResourceType
relationalDatabaseBundleId :: Maybe Text
relationalDatabaseBlueprintId :: Maybe Text
publiclyAccessible :: Maybe Bool
preferredMaintenanceWindow :: Maybe Text
preferredBackupWindow :: Maybe Text
pendingModifiedValues :: Maybe PendingModifiedRelationalDatabaseValues
pendingMaintenanceActions :: Maybe [PendingMaintenanceAction]
parameterApplyStatus :: Maybe Text
name :: Maybe Text
masterUsername :: Maybe Text
masterEndpoint :: Maybe RelationalDatabaseEndpoint
masterDatabaseName :: Maybe Text
location :: Maybe ResourceLocation
latestRestorableTime :: Maybe POSIX
hardware :: Maybe RelationalDatabaseHardware
engineVersion :: Maybe Text
engine :: Maybe Text
createdAt :: Maybe POSIX
caCertificateIdentifier :: Maybe Text
backupRetentionEnabled :: Maybe Bool
arn :: Maybe Text
$sel:tags:RelationalDatabase' :: RelationalDatabase -> Maybe [Tag]
$sel:supportCode:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:state:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:secondaryAvailabilityZone:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:resourceType:RelationalDatabase' :: RelationalDatabase -> Maybe ResourceType
$sel:relationalDatabaseBundleId:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:relationalDatabaseBlueprintId:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:publiclyAccessible:RelationalDatabase' :: RelationalDatabase -> Maybe Bool
$sel:preferredMaintenanceWindow:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:preferredBackupWindow:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:pendingModifiedValues:RelationalDatabase' :: RelationalDatabase -> Maybe PendingModifiedRelationalDatabaseValues
$sel:pendingMaintenanceActions:RelationalDatabase' :: RelationalDatabase -> Maybe [PendingMaintenanceAction]
$sel:parameterApplyStatus:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:name:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:masterUsername:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:masterEndpoint:RelationalDatabase' :: RelationalDatabase -> Maybe RelationalDatabaseEndpoint
$sel:masterDatabaseName:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:location:RelationalDatabase' :: RelationalDatabase -> Maybe ResourceLocation
$sel:latestRestorableTime:RelationalDatabase' :: RelationalDatabase -> Maybe POSIX
$sel:hardware:RelationalDatabase' :: RelationalDatabase -> Maybe RelationalDatabaseHardware
$sel:engineVersion:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:engine:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:createdAt:RelationalDatabase' :: RelationalDatabase -> Maybe POSIX
$sel:caCertificateIdentifier:RelationalDatabase' :: RelationalDatabase -> Maybe Text
$sel:backupRetentionEnabled:RelationalDatabase' :: RelationalDatabase -> Maybe Bool
$sel:arn:RelationalDatabase' :: RelationalDatabase -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
backupRetentionEnabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
caCertificateIdentifier
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
createdAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
engine
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
engineVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RelationalDatabaseHardware
hardware
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
latestRestorableTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ResourceLocation
location
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
masterDatabaseName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RelationalDatabaseEndpoint
masterEndpoint
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
masterUsername
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
parameterApplyStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [PendingMaintenanceAction]
pendingMaintenanceActions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PendingModifiedRelationalDatabaseValues
pendingModifiedValues
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
preferredBackupWindow
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
preferredMaintenanceWindow
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
publiclyAccessible
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
relationalDatabaseBlueprintId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
relationalDatabaseBundleId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ResourceType
resourceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
secondaryAvailabilityZone
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
state
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
supportCode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags