{-# 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.LakeFormation.Types.PrincipalResourcePermissions where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.LakeFormation.Types.DataLakePrincipal
import Amazonka.LakeFormation.Types.DetailsMap
import Amazonka.LakeFormation.Types.Permission
import Amazonka.LakeFormation.Types.Resource
import qualified Amazonka.Prelude as Prelude
data PrincipalResourcePermissions = PrincipalResourcePermissions'
{
PrincipalResourcePermissions -> Maybe DetailsMap
additionalDetails :: Prelude.Maybe DetailsMap,
PrincipalResourcePermissions -> Maybe [Permission]
permissions :: Prelude.Maybe [Permission],
PrincipalResourcePermissions -> Maybe [Permission]
permissionsWithGrantOption :: Prelude.Maybe [Permission],
PrincipalResourcePermissions -> Maybe DataLakePrincipal
principal :: Prelude.Maybe DataLakePrincipal,
PrincipalResourcePermissions -> Maybe Resource
resource :: Prelude.Maybe Resource
}
deriving (PrincipalResourcePermissions
-> PrincipalResourcePermissions -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PrincipalResourcePermissions
-> PrincipalResourcePermissions -> Bool
$c/= :: PrincipalResourcePermissions
-> PrincipalResourcePermissions -> Bool
== :: PrincipalResourcePermissions
-> PrincipalResourcePermissions -> Bool
$c== :: PrincipalResourcePermissions
-> PrincipalResourcePermissions -> Bool
Prelude.Eq, ReadPrec [PrincipalResourcePermissions]
ReadPrec PrincipalResourcePermissions
Int -> ReadS PrincipalResourcePermissions
ReadS [PrincipalResourcePermissions]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PrincipalResourcePermissions]
$creadListPrec :: ReadPrec [PrincipalResourcePermissions]
readPrec :: ReadPrec PrincipalResourcePermissions
$creadPrec :: ReadPrec PrincipalResourcePermissions
readList :: ReadS [PrincipalResourcePermissions]
$creadList :: ReadS [PrincipalResourcePermissions]
readsPrec :: Int -> ReadS PrincipalResourcePermissions
$creadsPrec :: Int -> ReadS PrincipalResourcePermissions
Prelude.Read, Int -> PrincipalResourcePermissions -> ShowS
[PrincipalResourcePermissions] -> ShowS
PrincipalResourcePermissions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PrincipalResourcePermissions] -> ShowS
$cshowList :: [PrincipalResourcePermissions] -> ShowS
show :: PrincipalResourcePermissions -> String
$cshow :: PrincipalResourcePermissions -> String
showsPrec :: Int -> PrincipalResourcePermissions -> ShowS
$cshowsPrec :: Int -> PrincipalResourcePermissions -> ShowS
Prelude.Show, forall x.
Rep PrincipalResourcePermissions x -> PrincipalResourcePermissions
forall x.
PrincipalResourcePermissions -> Rep PrincipalResourcePermissions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep PrincipalResourcePermissions x -> PrincipalResourcePermissions
$cfrom :: forall x.
PrincipalResourcePermissions -> Rep PrincipalResourcePermissions x
Prelude.Generic)
newPrincipalResourcePermissions ::
PrincipalResourcePermissions
newPrincipalResourcePermissions :: PrincipalResourcePermissions
newPrincipalResourcePermissions =
PrincipalResourcePermissions'
{ $sel:additionalDetails:PrincipalResourcePermissions' :: Maybe DetailsMap
additionalDetails =
forall a. Maybe a
Prelude.Nothing,
$sel:permissions:PrincipalResourcePermissions' :: Maybe [Permission]
permissions = forall a. Maybe a
Prelude.Nothing,
$sel:permissionsWithGrantOption:PrincipalResourcePermissions' :: Maybe [Permission]
permissionsWithGrantOption = forall a. Maybe a
Prelude.Nothing,
$sel:principal:PrincipalResourcePermissions' :: Maybe DataLakePrincipal
principal = forall a. Maybe a
Prelude.Nothing,
$sel:resource:PrincipalResourcePermissions' :: Maybe Resource
resource = forall a. Maybe a
Prelude.Nothing
}
principalResourcePermissions_additionalDetails :: Lens.Lens' PrincipalResourcePermissions (Prelude.Maybe DetailsMap)
principalResourcePermissions_additionalDetails :: Lens' PrincipalResourcePermissions (Maybe DetailsMap)
principalResourcePermissions_additionalDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PrincipalResourcePermissions' {Maybe DetailsMap
additionalDetails :: Maybe DetailsMap
$sel:additionalDetails:PrincipalResourcePermissions' :: PrincipalResourcePermissions -> Maybe DetailsMap
additionalDetails} -> Maybe DetailsMap
additionalDetails) (\s :: PrincipalResourcePermissions
s@PrincipalResourcePermissions' {} Maybe DetailsMap
a -> PrincipalResourcePermissions
s {$sel:additionalDetails:PrincipalResourcePermissions' :: Maybe DetailsMap
additionalDetails = Maybe DetailsMap
a} :: PrincipalResourcePermissions)
principalResourcePermissions_permissions :: Lens.Lens' PrincipalResourcePermissions (Prelude.Maybe [Permission])
principalResourcePermissions_permissions :: Lens' PrincipalResourcePermissions (Maybe [Permission])
principalResourcePermissions_permissions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PrincipalResourcePermissions' {Maybe [Permission]
permissions :: Maybe [Permission]
$sel:permissions:PrincipalResourcePermissions' :: PrincipalResourcePermissions -> Maybe [Permission]
permissions} -> Maybe [Permission]
permissions) (\s :: PrincipalResourcePermissions
s@PrincipalResourcePermissions' {} Maybe [Permission]
a -> PrincipalResourcePermissions
s {$sel:permissions:PrincipalResourcePermissions' :: Maybe [Permission]
permissions = Maybe [Permission]
a} :: PrincipalResourcePermissions) 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
principalResourcePermissions_permissionsWithGrantOption :: Lens.Lens' PrincipalResourcePermissions (Prelude.Maybe [Permission])
principalResourcePermissions_permissionsWithGrantOption :: Lens' PrincipalResourcePermissions (Maybe [Permission])
principalResourcePermissions_permissionsWithGrantOption = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PrincipalResourcePermissions' {Maybe [Permission]
permissionsWithGrantOption :: Maybe [Permission]
$sel:permissionsWithGrantOption:PrincipalResourcePermissions' :: PrincipalResourcePermissions -> Maybe [Permission]
permissionsWithGrantOption} -> Maybe [Permission]
permissionsWithGrantOption) (\s :: PrincipalResourcePermissions
s@PrincipalResourcePermissions' {} Maybe [Permission]
a -> PrincipalResourcePermissions
s {$sel:permissionsWithGrantOption:PrincipalResourcePermissions' :: Maybe [Permission]
permissionsWithGrantOption = Maybe [Permission]
a} :: PrincipalResourcePermissions) 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
principalResourcePermissions_principal :: Lens.Lens' PrincipalResourcePermissions (Prelude.Maybe DataLakePrincipal)
principalResourcePermissions_principal :: Lens' PrincipalResourcePermissions (Maybe DataLakePrincipal)
principalResourcePermissions_principal = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PrincipalResourcePermissions' {Maybe DataLakePrincipal
principal :: Maybe DataLakePrincipal
$sel:principal:PrincipalResourcePermissions' :: PrincipalResourcePermissions -> Maybe DataLakePrincipal
principal} -> Maybe DataLakePrincipal
principal) (\s :: PrincipalResourcePermissions
s@PrincipalResourcePermissions' {} Maybe DataLakePrincipal
a -> PrincipalResourcePermissions
s {$sel:principal:PrincipalResourcePermissions' :: Maybe DataLakePrincipal
principal = Maybe DataLakePrincipal
a} :: PrincipalResourcePermissions)
principalResourcePermissions_resource :: Lens.Lens' PrincipalResourcePermissions (Prelude.Maybe Resource)
principalResourcePermissions_resource :: Lens' PrincipalResourcePermissions (Maybe Resource)
principalResourcePermissions_resource = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PrincipalResourcePermissions' {Maybe Resource
resource :: Maybe Resource
$sel:resource:PrincipalResourcePermissions' :: PrincipalResourcePermissions -> Maybe Resource
resource} -> Maybe Resource
resource) (\s :: PrincipalResourcePermissions
s@PrincipalResourcePermissions' {} Maybe Resource
a -> PrincipalResourcePermissions
s {$sel:resource:PrincipalResourcePermissions' :: Maybe Resource
resource = Maybe Resource
a} :: PrincipalResourcePermissions)
instance Data.FromJSON PrincipalResourcePermissions where
parseJSON :: Value -> Parser PrincipalResourcePermissions
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"PrincipalResourcePermissions"
( \Object
x ->
Maybe DetailsMap
-> Maybe [Permission]
-> Maybe [Permission]
-> Maybe DataLakePrincipal
-> Maybe Resource
-> PrincipalResourcePermissions
PrincipalResourcePermissions'
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
"AdditionalDetails")
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
"Permissions" 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
"PermissionsWithGrantOption"
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
"Principal")
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
"Resource")
)
instance
Prelude.Hashable
PrincipalResourcePermissions
where
hashWithSalt :: Int -> PrincipalResourcePermissions -> Int
hashWithSalt Int
_salt PrincipalResourcePermissions' {Maybe [Permission]
Maybe DataLakePrincipal
Maybe DetailsMap
Maybe Resource
resource :: Maybe Resource
principal :: Maybe DataLakePrincipal
permissionsWithGrantOption :: Maybe [Permission]
permissions :: Maybe [Permission]
additionalDetails :: Maybe DetailsMap
$sel:resource:PrincipalResourcePermissions' :: PrincipalResourcePermissions -> Maybe Resource
$sel:principal:PrincipalResourcePermissions' :: PrincipalResourcePermissions -> Maybe DataLakePrincipal
$sel:permissionsWithGrantOption:PrincipalResourcePermissions' :: PrincipalResourcePermissions -> Maybe [Permission]
$sel:permissions:PrincipalResourcePermissions' :: PrincipalResourcePermissions -> Maybe [Permission]
$sel:additionalDetails:PrincipalResourcePermissions' :: PrincipalResourcePermissions -> Maybe DetailsMap
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DetailsMap
additionalDetails
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Permission]
permissions
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Permission]
permissionsWithGrantOption
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DataLakePrincipal
principal
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Resource
resource
instance Prelude.NFData PrincipalResourcePermissions where
rnf :: PrincipalResourcePermissions -> ()
rnf PrincipalResourcePermissions' {Maybe [Permission]
Maybe DataLakePrincipal
Maybe DetailsMap
Maybe Resource
resource :: Maybe Resource
principal :: Maybe DataLakePrincipal
permissionsWithGrantOption :: Maybe [Permission]
permissions :: Maybe [Permission]
additionalDetails :: Maybe DetailsMap
$sel:resource:PrincipalResourcePermissions' :: PrincipalResourcePermissions -> Maybe Resource
$sel:principal:PrincipalResourcePermissions' :: PrincipalResourcePermissions -> Maybe DataLakePrincipal
$sel:permissionsWithGrantOption:PrincipalResourcePermissions' :: PrincipalResourcePermissions -> Maybe [Permission]
$sel:permissions:PrincipalResourcePermissions' :: PrincipalResourcePermissions -> Maybe [Permission]
$sel:additionalDetails:PrincipalResourcePermissions' :: PrincipalResourcePermissions -> Maybe DetailsMap
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe DetailsMap
additionalDetails
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Permission]
permissions
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Permission]
permissionsWithGrantOption
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DataLakePrincipal
principal
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Resource
resource