{-# 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 #-}
module Amazonka.Textract.Types.Extraction 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
import Amazonka.Textract.Types.ExpenseDocument
import Amazonka.Textract.Types.IdentityDocument
import Amazonka.Textract.Types.LendingDocument
data =
{ :: Prelude.Maybe ExpenseDocument,
:: Prelude.Maybe IdentityDocument,
:: Prelude.Maybe LendingDocument
}
deriving (Extraction -> Extraction -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Extraction -> Extraction -> Bool
$c/= :: Extraction -> Extraction -> Bool
== :: Extraction -> Extraction -> Bool
$c== :: Extraction -> Extraction -> Bool
Prelude.Eq, ReadPrec [Extraction]
ReadPrec Extraction
Int -> ReadS Extraction
ReadS [Extraction]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Extraction]
$creadListPrec :: ReadPrec [Extraction]
readPrec :: ReadPrec Extraction
$creadPrec :: ReadPrec Extraction
readList :: ReadS [Extraction]
$creadList :: ReadS [Extraction]
readsPrec :: Int -> ReadS Extraction
$creadsPrec :: Int -> ReadS Extraction
Prelude.Read, Int -> Extraction -> ShowS
[Extraction] -> ShowS
Extraction -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Extraction] -> ShowS
$cshowList :: [Extraction] -> ShowS
show :: Extraction -> String
$cshow :: Extraction -> String
showsPrec :: Int -> Extraction -> ShowS
$cshowsPrec :: Int -> Extraction -> ShowS
Prelude.Show, forall x. Rep Extraction x -> Extraction
forall x. Extraction -> Rep Extraction x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Extraction x -> Extraction
$cfrom :: forall x. Extraction -> Rep Extraction x
Prelude.Generic)
newExtraction ::
Extraction
=
Extraction'
{ $sel:expenseDocument:Extraction' :: Maybe ExpenseDocument
expenseDocument = forall a. Maybe a
Prelude.Nothing,
$sel:identityDocument:Extraction' :: Maybe IdentityDocument
identityDocument = forall a. Maybe a
Prelude.Nothing,
$sel:lendingDocument:Extraction' :: Maybe LendingDocument
lendingDocument = forall a. Maybe a
Prelude.Nothing
}
extraction_expenseDocument :: Lens.Lens' Extraction (Prelude.Maybe ExpenseDocument)
= forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Extraction' {Maybe ExpenseDocument
expenseDocument :: Maybe ExpenseDocument
$sel:expenseDocument:Extraction' :: Extraction -> Maybe ExpenseDocument
expenseDocument} -> Maybe ExpenseDocument
expenseDocument) (\s :: Extraction
s@Extraction' {} Maybe ExpenseDocument
a -> Extraction
s {$sel:expenseDocument:Extraction' :: Maybe ExpenseDocument
expenseDocument = Maybe ExpenseDocument
a} :: Extraction)
extraction_identityDocument :: Lens.Lens' Extraction (Prelude.Maybe IdentityDocument)
= forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Extraction' {Maybe IdentityDocument
identityDocument :: Maybe IdentityDocument
$sel:identityDocument:Extraction' :: Extraction -> Maybe IdentityDocument
identityDocument} -> Maybe IdentityDocument
identityDocument) (\s :: Extraction
s@Extraction' {} Maybe IdentityDocument
a -> Extraction
s {$sel:identityDocument:Extraction' :: Maybe IdentityDocument
identityDocument = Maybe IdentityDocument
a} :: Extraction)
extraction_lendingDocument :: Lens.Lens' Extraction (Prelude.Maybe LendingDocument)
= forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Extraction' {Maybe LendingDocument
lendingDocument :: Maybe LendingDocument
$sel:lendingDocument:Extraction' :: Extraction -> Maybe LendingDocument
lendingDocument} -> Maybe LendingDocument
lendingDocument) (\s :: Extraction
s@Extraction' {} Maybe LendingDocument
a -> Extraction
s {$sel:lendingDocument:Extraction' :: Maybe LendingDocument
lendingDocument = Maybe LendingDocument
a} :: Extraction)
instance Data.FromJSON Extraction where
parseJSON :: Value -> Parser Extraction
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"Extraction"
( \Object
x ->
Maybe ExpenseDocument
-> Maybe IdentityDocument -> Maybe LendingDocument -> Extraction
Extraction'
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
"ExpenseDocument")
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
"IdentityDocument")
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
"LendingDocument")
)
instance Prelude.Hashable Extraction where
hashWithSalt :: Int -> Extraction -> Int
hashWithSalt Int
_salt Extraction' {Maybe LendingDocument
Maybe ExpenseDocument
Maybe IdentityDocument
lendingDocument :: Maybe LendingDocument
identityDocument :: Maybe IdentityDocument
expenseDocument :: Maybe ExpenseDocument
$sel:lendingDocument:Extraction' :: Extraction -> Maybe LendingDocument
$sel:identityDocument:Extraction' :: Extraction -> Maybe IdentityDocument
$sel:expenseDocument:Extraction' :: Extraction -> Maybe ExpenseDocument
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ExpenseDocument
expenseDocument
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe IdentityDocument
identityDocument
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LendingDocument
lendingDocument
instance Prelude.NFData Extraction where
rnf :: Extraction -> ()
rnf Extraction' {Maybe LendingDocument
Maybe ExpenseDocument
Maybe IdentityDocument
lendingDocument :: Maybe LendingDocument
identityDocument :: Maybe IdentityDocument
expenseDocument :: Maybe ExpenseDocument
$sel:lendingDocument:Extraction' :: Extraction -> Maybe LendingDocument
$sel:identityDocument:Extraction' :: Extraction -> Maybe IdentityDocument
$sel:expenseDocument:Extraction' :: Extraction -> Maybe ExpenseDocument
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe ExpenseDocument
expenseDocument
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe IdentityDocument
identityDocument
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LendingDocument
lendingDocument