amazonka-databrew-2.0: gen/Amazonka/DataBrew/Types/Input.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.DataBrew.Types.Input
-- 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.DataBrew.Types.Input where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.DataBrew.Types.DataCatalogInputDefinition
import Amazonka.DataBrew.Types.DatabaseInputDefinition
import Amazonka.DataBrew.Types.Metadata
import Amazonka.DataBrew.Types.S3Location
import qualified Amazonka.Prelude as Prelude
-- | Represents information on how DataBrew can find data, in either the Glue
-- Data Catalog or Amazon S3.
--
-- /See:/ 'newInput' smart constructor.
data Input = Input'
{ -- | The Glue Data Catalog parameters for the data.
dataCatalogInputDefinition :: Prelude.Maybe DataCatalogInputDefinition,
-- | Connection information for dataset input files stored in a database.
databaseInputDefinition :: Prelude.Maybe DatabaseInputDefinition,
-- | Contains additional resource information needed for specific datasets.
metadata :: Prelude.Maybe Metadata,
-- | The Amazon S3 location where the data is stored.
s3InputDefinition :: Prelude.Maybe S3Location
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'Input' 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:
--
-- 'dataCatalogInputDefinition', 'input_dataCatalogInputDefinition' - The Glue Data Catalog parameters for the data.
--
-- 'databaseInputDefinition', 'input_databaseInputDefinition' - Connection information for dataset input files stored in a database.
--
-- 'metadata', 'input_metadata' - Contains additional resource information needed for specific datasets.
--
-- 's3InputDefinition', 'input_s3InputDefinition' - The Amazon S3 location where the data is stored.
newInput ::
Input
newInput =
Input'
{ dataCatalogInputDefinition =
Prelude.Nothing,
databaseInputDefinition = Prelude.Nothing,
metadata = Prelude.Nothing,
s3InputDefinition = Prelude.Nothing
}
-- | The Glue Data Catalog parameters for the data.
input_dataCatalogInputDefinition :: Lens.Lens' Input (Prelude.Maybe DataCatalogInputDefinition)
input_dataCatalogInputDefinition = Lens.lens (\Input' {dataCatalogInputDefinition} -> dataCatalogInputDefinition) (\s@Input' {} a -> s {dataCatalogInputDefinition = a} :: Input)
-- | Connection information for dataset input files stored in a database.
input_databaseInputDefinition :: Lens.Lens' Input (Prelude.Maybe DatabaseInputDefinition)
input_databaseInputDefinition = Lens.lens (\Input' {databaseInputDefinition} -> databaseInputDefinition) (\s@Input' {} a -> s {databaseInputDefinition = a} :: Input)
-- | Contains additional resource information needed for specific datasets.
input_metadata :: Lens.Lens' Input (Prelude.Maybe Metadata)
input_metadata = Lens.lens (\Input' {metadata} -> metadata) (\s@Input' {} a -> s {metadata = a} :: Input)
-- | The Amazon S3 location where the data is stored.
input_s3InputDefinition :: Lens.Lens' Input (Prelude.Maybe S3Location)
input_s3InputDefinition = Lens.lens (\Input' {s3InputDefinition} -> s3InputDefinition) (\s@Input' {} a -> s {s3InputDefinition = a} :: Input)
instance Data.FromJSON Input where
parseJSON =
Data.withObject
"Input"
( \x ->
Input'
Prelude.<$> (x Data..:? "DataCatalogInputDefinition")
Prelude.<*> (x Data..:? "DatabaseInputDefinition")
Prelude.<*> (x Data..:? "Metadata")
Prelude.<*> (x Data..:? "S3InputDefinition")
)
instance Prelude.Hashable Input where
hashWithSalt _salt Input' {..} =
_salt
`Prelude.hashWithSalt` dataCatalogInputDefinition
`Prelude.hashWithSalt` databaseInputDefinition
`Prelude.hashWithSalt` metadata
`Prelude.hashWithSalt` s3InputDefinition
instance Prelude.NFData Input where
rnf Input' {..} =
Prelude.rnf dataCatalogInputDefinition
`Prelude.seq` Prelude.rnf databaseInputDefinition
`Prelude.seq` Prelude.rnf metadata
`Prelude.seq` Prelude.rnf s3InputDefinition
instance Data.ToJSON Input where
toJSON Input' {..} =
Data.object
( Prelude.catMaybes
[ ("DataCatalogInputDefinition" Data..=)
Prelude.<$> dataCatalogInputDefinition,
("DatabaseInputDefinition" Data..=)
Prelude.<$> databaseInputDefinition,
("Metadata" Data..=) Prelude.<$> metadata,
("S3InputDefinition" Data..=)
Prelude.<$> s3InputDefinition
]
)