module Stratosphere.DataZone.Owner.OwnerPropertiesProperty (
        module Exports, OwnerPropertiesProperty(..),
        mkOwnerPropertiesProperty
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.DataZone.Owner.OwnerGroupPropertiesProperty as Exports
import {-# SOURCE #-} Stratosphere.DataZone.Owner.OwnerUserPropertiesProperty as Exports
import Stratosphere.ResourceProperties
data OwnerPropertiesProperty
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-owner-ownerproperties.html>
    OwnerPropertiesProperty {OwnerPropertiesProperty -> ()
haddock_workaround_ :: (),
                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-owner-ownerproperties.html#cfn-datazone-owner-ownerproperties-group>
                             OwnerPropertiesProperty -> Maybe OwnerGroupPropertiesProperty
group :: (Prelude.Maybe OwnerGroupPropertiesProperty),
                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datazone-owner-ownerproperties.html#cfn-datazone-owner-ownerproperties-user>
                             OwnerPropertiesProperty -> Maybe OwnerUserPropertiesProperty
user :: (Prelude.Maybe OwnerUserPropertiesProperty)}
  deriving stock (OwnerPropertiesProperty -> OwnerPropertiesProperty -> Bool
(OwnerPropertiesProperty -> OwnerPropertiesProperty -> Bool)
-> (OwnerPropertiesProperty -> OwnerPropertiesProperty -> Bool)
-> Eq OwnerPropertiesProperty
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: OwnerPropertiesProperty -> OwnerPropertiesProperty -> Bool
== :: OwnerPropertiesProperty -> OwnerPropertiesProperty -> Bool
$c/= :: OwnerPropertiesProperty -> OwnerPropertiesProperty -> Bool
/= :: OwnerPropertiesProperty -> OwnerPropertiesProperty -> Bool
Prelude.Eq, Int -> OwnerPropertiesProperty -> ShowS
[OwnerPropertiesProperty] -> ShowS
OwnerPropertiesProperty -> String
(Int -> OwnerPropertiesProperty -> ShowS)
-> (OwnerPropertiesProperty -> String)
-> ([OwnerPropertiesProperty] -> ShowS)
-> Show OwnerPropertiesProperty
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> OwnerPropertiesProperty -> ShowS
showsPrec :: Int -> OwnerPropertiesProperty -> ShowS
$cshow :: OwnerPropertiesProperty -> String
show :: OwnerPropertiesProperty -> String
$cshowList :: [OwnerPropertiesProperty] -> ShowS
showList :: [OwnerPropertiesProperty] -> ShowS
Prelude.Show)
mkOwnerPropertiesProperty :: OwnerPropertiesProperty
mkOwnerPropertiesProperty :: OwnerPropertiesProperty
mkOwnerPropertiesProperty
  = OwnerPropertiesProperty
      {haddock_workaround_ :: ()
haddock_workaround_ = (), group :: Maybe OwnerGroupPropertiesProperty
group = Maybe OwnerGroupPropertiesProperty
forall a. Maybe a
Prelude.Nothing,
       user :: Maybe OwnerUserPropertiesProperty
user = Maybe OwnerUserPropertiesProperty
forall a. Maybe a
Prelude.Nothing}
instance ToResourceProperties OwnerPropertiesProperty where
  toResourceProperties :: OwnerPropertiesProperty -> ResourceProperties
toResourceProperties OwnerPropertiesProperty {Maybe OwnerGroupPropertiesProperty
Maybe OwnerUserPropertiesProperty
()
haddock_workaround_ :: OwnerPropertiesProperty -> ()
group :: OwnerPropertiesProperty -> Maybe OwnerGroupPropertiesProperty
user :: OwnerPropertiesProperty -> Maybe OwnerUserPropertiesProperty
haddock_workaround_ :: ()
group :: Maybe OwnerGroupPropertiesProperty
user :: Maybe OwnerUserPropertiesProperty
..}
    = ResourceProperties
        {awsType :: Text
awsType = Text
"AWS::DataZone::Owner.OwnerProperties",
         supportsTags :: Bool
supportsTags = Bool
Prelude.False,
         properties :: Object
properties = [Item Object] -> Object
forall l. IsList l => [Item l] -> l
Prelude.fromList
                        ([Maybe (Key, Value)] -> [(Key, Value)]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
                           [Key -> OwnerGroupPropertiesProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"Group" (OwnerGroupPropertiesProperty -> (Key, Value))
-> Maybe OwnerGroupPropertiesProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe OwnerGroupPropertiesProperty
group,
                            Key -> OwnerUserPropertiesProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"User" (OwnerUserPropertiesProperty -> (Key, Value))
-> Maybe OwnerUserPropertiesProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe OwnerUserPropertiesProperty
user])}
instance JSON.ToJSON OwnerPropertiesProperty where
  toJSON :: OwnerPropertiesProperty -> Value
toJSON OwnerPropertiesProperty {Maybe OwnerGroupPropertiesProperty
Maybe OwnerUserPropertiesProperty
()
haddock_workaround_ :: OwnerPropertiesProperty -> ()
group :: OwnerPropertiesProperty -> Maybe OwnerGroupPropertiesProperty
user :: OwnerPropertiesProperty -> Maybe OwnerUserPropertiesProperty
haddock_workaround_ :: ()
group :: Maybe OwnerGroupPropertiesProperty
user :: Maybe OwnerUserPropertiesProperty
..}
    = [(Key, Value)] -> Value
JSON.object
        ([Item [(Key, Value)]] -> [(Key, Value)]
forall l. IsList l => [Item l] -> l
Prelude.fromList
           ([Maybe (Key, Value)] -> [(Key, Value)]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
              [Key -> OwnerGroupPropertiesProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"Group" (OwnerGroupPropertiesProperty -> (Key, Value))
-> Maybe OwnerGroupPropertiesProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe OwnerGroupPropertiesProperty
group,
               Key -> OwnerUserPropertiesProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"User" (OwnerUserPropertiesProperty -> (Key, Value))
-> Maybe OwnerUserPropertiesProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe OwnerUserPropertiesProperty
user]))
instance Property "Group" OwnerPropertiesProperty where
  type PropertyType "Group" OwnerPropertiesProperty = OwnerGroupPropertiesProperty
  set :: PropertyType "Group" OwnerPropertiesProperty
-> OwnerPropertiesProperty -> OwnerPropertiesProperty
set PropertyType "Group" OwnerPropertiesProperty
newValue OwnerPropertiesProperty {Maybe OwnerGroupPropertiesProperty
Maybe OwnerUserPropertiesProperty
()
haddock_workaround_ :: OwnerPropertiesProperty -> ()
group :: OwnerPropertiesProperty -> Maybe OwnerGroupPropertiesProperty
user :: OwnerPropertiesProperty -> Maybe OwnerUserPropertiesProperty
haddock_workaround_ :: ()
group :: Maybe OwnerGroupPropertiesProperty
user :: Maybe OwnerUserPropertiesProperty
..}
    = OwnerPropertiesProperty {group :: Maybe OwnerGroupPropertiesProperty
group = OwnerGroupPropertiesProperty -> Maybe OwnerGroupPropertiesProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "Group" OwnerPropertiesProperty
OwnerGroupPropertiesProperty
newValue, Maybe OwnerUserPropertiesProperty
()
haddock_workaround_ :: ()
user :: Maybe OwnerUserPropertiesProperty
haddock_workaround_ :: ()
user :: Maybe OwnerUserPropertiesProperty
..}
instance Property "User" OwnerPropertiesProperty where
  type PropertyType "User" OwnerPropertiesProperty = OwnerUserPropertiesProperty
  set :: PropertyType "User" OwnerPropertiesProperty
-> OwnerPropertiesProperty -> OwnerPropertiesProperty
set PropertyType "User" OwnerPropertiesProperty
newValue OwnerPropertiesProperty {Maybe OwnerGroupPropertiesProperty
Maybe OwnerUserPropertiesProperty
()
haddock_workaround_ :: OwnerPropertiesProperty -> ()
group :: OwnerPropertiesProperty -> Maybe OwnerGroupPropertiesProperty
user :: OwnerPropertiesProperty -> Maybe OwnerUserPropertiesProperty
haddock_workaround_ :: ()
group :: Maybe OwnerGroupPropertiesProperty
user :: Maybe OwnerUserPropertiesProperty
..}
    = OwnerPropertiesProperty {user :: Maybe OwnerUserPropertiesProperty
user = OwnerUserPropertiesProperty -> Maybe OwnerUserPropertiesProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "User" OwnerPropertiesProperty
OwnerUserPropertiesProperty
newValue, Maybe OwnerGroupPropertiesProperty
()
haddock_workaround_ :: ()
group :: Maybe OwnerGroupPropertiesProperty
haddock_workaround_ :: ()
group :: Maybe OwnerGroupPropertiesProperty
..}