module Stratosphere.IoTFleetWise.Campaign.DataDestinationConfigProperty (
        module Exports, DataDestinationConfigProperty(..),
        mkDataDestinationConfigProperty
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.IoTFleetWise.Campaign.MqttTopicConfigProperty as Exports
import {-# SOURCE #-} Stratosphere.IoTFleetWise.Campaign.S3ConfigProperty as Exports
import {-# SOURCE #-} Stratosphere.IoTFleetWise.Campaign.TimestreamConfigProperty as Exports
import Stratosphere.ResourceProperties
data DataDestinationConfigProperty
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotfleetwise-campaign-datadestinationconfig.html>
    DataDestinationConfigProperty {DataDestinationConfigProperty -> ()
haddock_workaround_ :: (),
                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotfleetwise-campaign-datadestinationconfig.html#cfn-iotfleetwise-campaign-datadestinationconfig-mqtttopicconfig>
                                   DataDestinationConfigProperty -> Maybe MqttTopicConfigProperty
mqttTopicConfig :: (Prelude.Maybe MqttTopicConfigProperty),
                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotfleetwise-campaign-datadestinationconfig.html#cfn-iotfleetwise-campaign-datadestinationconfig-s3config>
                                   DataDestinationConfigProperty -> Maybe S3ConfigProperty
s3Config :: (Prelude.Maybe S3ConfigProperty),
                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotfleetwise-campaign-datadestinationconfig.html#cfn-iotfleetwise-campaign-datadestinationconfig-timestreamconfig>
                                   DataDestinationConfigProperty -> Maybe TimestreamConfigProperty
timestreamConfig :: (Prelude.Maybe TimestreamConfigProperty)}
  deriving stock (DataDestinationConfigProperty
-> DataDestinationConfigProperty -> Bool
(DataDestinationConfigProperty
 -> DataDestinationConfigProperty -> Bool)
-> (DataDestinationConfigProperty
    -> DataDestinationConfigProperty -> Bool)
-> Eq DataDestinationConfigProperty
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DataDestinationConfigProperty
-> DataDestinationConfigProperty -> Bool
== :: DataDestinationConfigProperty
-> DataDestinationConfigProperty -> Bool
$c/= :: DataDestinationConfigProperty
-> DataDestinationConfigProperty -> Bool
/= :: DataDestinationConfigProperty
-> DataDestinationConfigProperty -> Bool
Prelude.Eq, Int -> DataDestinationConfigProperty -> ShowS
[DataDestinationConfigProperty] -> ShowS
DataDestinationConfigProperty -> String
(Int -> DataDestinationConfigProperty -> ShowS)
-> (DataDestinationConfigProperty -> String)
-> ([DataDestinationConfigProperty] -> ShowS)
-> Show DataDestinationConfigProperty
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DataDestinationConfigProperty -> ShowS
showsPrec :: Int -> DataDestinationConfigProperty -> ShowS
$cshow :: DataDestinationConfigProperty -> String
show :: DataDestinationConfigProperty -> String
$cshowList :: [DataDestinationConfigProperty] -> ShowS
showList :: [DataDestinationConfigProperty] -> ShowS
Prelude.Show)
mkDataDestinationConfigProperty :: DataDestinationConfigProperty
mkDataDestinationConfigProperty :: DataDestinationConfigProperty
mkDataDestinationConfigProperty
  = DataDestinationConfigProperty
      {haddock_workaround_ :: ()
haddock_workaround_ = (), mqttTopicConfig :: Maybe MqttTopicConfigProperty
mqttTopicConfig = Maybe MqttTopicConfigProperty
forall a. Maybe a
Prelude.Nothing,
       s3Config :: Maybe S3ConfigProperty
s3Config = Maybe S3ConfigProperty
forall a. Maybe a
Prelude.Nothing, timestreamConfig :: Maybe TimestreamConfigProperty
timestreamConfig = Maybe TimestreamConfigProperty
forall a. Maybe a
Prelude.Nothing}
instance ToResourceProperties DataDestinationConfigProperty where
  toResourceProperties :: DataDestinationConfigProperty -> ResourceProperties
toResourceProperties DataDestinationConfigProperty {Maybe MqttTopicConfigProperty
Maybe S3ConfigProperty
Maybe TimestreamConfigProperty
()
haddock_workaround_ :: DataDestinationConfigProperty -> ()
mqttTopicConfig :: DataDestinationConfigProperty -> Maybe MqttTopicConfigProperty
s3Config :: DataDestinationConfigProperty -> Maybe S3ConfigProperty
timestreamConfig :: DataDestinationConfigProperty -> Maybe TimestreamConfigProperty
haddock_workaround_ :: ()
mqttTopicConfig :: Maybe MqttTopicConfigProperty
s3Config :: Maybe S3ConfigProperty
timestreamConfig :: Maybe TimestreamConfigProperty
..}
    = ResourceProperties
        {awsType :: Text
awsType = Text
"AWS::IoTFleetWise::Campaign.DataDestinationConfig",
         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 -> MqttTopicConfigProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"MqttTopicConfig" (MqttTopicConfigProperty -> (Key, Value))
-> Maybe MqttTopicConfigProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe MqttTopicConfigProperty
mqttTopicConfig,
                            Key -> S3ConfigProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"S3Config" (S3ConfigProperty -> (Key, Value))
-> Maybe S3ConfigProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe S3ConfigProperty
s3Config,
                            Key -> TimestreamConfigProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"TimestreamConfig" (TimestreamConfigProperty -> (Key, Value))
-> Maybe TimestreamConfigProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe TimestreamConfigProperty
timestreamConfig])}
instance JSON.ToJSON DataDestinationConfigProperty where
  toJSON :: DataDestinationConfigProperty -> Value
toJSON DataDestinationConfigProperty {Maybe MqttTopicConfigProperty
Maybe S3ConfigProperty
Maybe TimestreamConfigProperty
()
haddock_workaround_ :: DataDestinationConfigProperty -> ()
mqttTopicConfig :: DataDestinationConfigProperty -> Maybe MqttTopicConfigProperty
s3Config :: DataDestinationConfigProperty -> Maybe S3ConfigProperty
timestreamConfig :: DataDestinationConfigProperty -> Maybe TimestreamConfigProperty
haddock_workaround_ :: ()
mqttTopicConfig :: Maybe MqttTopicConfigProperty
s3Config :: Maybe S3ConfigProperty
timestreamConfig :: Maybe TimestreamConfigProperty
..}
    = [(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 -> MqttTopicConfigProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"MqttTopicConfig" (MqttTopicConfigProperty -> (Key, Value))
-> Maybe MqttTopicConfigProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe MqttTopicConfigProperty
mqttTopicConfig,
               Key -> S3ConfigProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"S3Config" (S3ConfigProperty -> (Key, Value))
-> Maybe S3ConfigProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe S3ConfigProperty
s3Config,
               Key -> TimestreamConfigProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"TimestreamConfig" (TimestreamConfigProperty -> (Key, Value))
-> Maybe TimestreamConfigProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe TimestreamConfigProperty
timestreamConfig]))
instance Property "MqttTopicConfig" DataDestinationConfigProperty where
  type PropertyType "MqttTopicConfig" DataDestinationConfigProperty = MqttTopicConfigProperty
  set :: PropertyType "MqttTopicConfig" DataDestinationConfigProperty
-> DataDestinationConfigProperty -> DataDestinationConfigProperty
set PropertyType "MqttTopicConfig" DataDestinationConfigProperty
newValue DataDestinationConfigProperty {Maybe MqttTopicConfigProperty
Maybe S3ConfigProperty
Maybe TimestreamConfigProperty
()
haddock_workaround_ :: DataDestinationConfigProperty -> ()
mqttTopicConfig :: DataDestinationConfigProperty -> Maybe MqttTopicConfigProperty
s3Config :: DataDestinationConfigProperty -> Maybe S3ConfigProperty
timestreamConfig :: DataDestinationConfigProperty -> Maybe TimestreamConfigProperty
haddock_workaround_ :: ()
mqttTopicConfig :: Maybe MqttTopicConfigProperty
s3Config :: Maybe S3ConfigProperty
timestreamConfig :: Maybe TimestreamConfigProperty
..}
    = DataDestinationConfigProperty
        {mqttTopicConfig :: Maybe MqttTopicConfigProperty
mqttTopicConfig = MqttTopicConfigProperty -> Maybe MqttTopicConfigProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "MqttTopicConfig" DataDestinationConfigProperty
MqttTopicConfigProperty
newValue, Maybe S3ConfigProperty
Maybe TimestreamConfigProperty
()
haddock_workaround_ :: ()
s3Config :: Maybe S3ConfigProperty
timestreamConfig :: Maybe TimestreamConfigProperty
haddock_workaround_ :: ()
s3Config :: Maybe S3ConfigProperty
timestreamConfig :: Maybe TimestreamConfigProperty
..}
instance Property "S3Config" DataDestinationConfigProperty where
  type PropertyType "S3Config" DataDestinationConfigProperty = S3ConfigProperty
  set :: PropertyType "S3Config" DataDestinationConfigProperty
-> DataDestinationConfigProperty -> DataDestinationConfigProperty
set PropertyType "S3Config" DataDestinationConfigProperty
newValue DataDestinationConfigProperty {Maybe MqttTopicConfigProperty
Maybe S3ConfigProperty
Maybe TimestreamConfigProperty
()
haddock_workaround_ :: DataDestinationConfigProperty -> ()
mqttTopicConfig :: DataDestinationConfigProperty -> Maybe MqttTopicConfigProperty
s3Config :: DataDestinationConfigProperty -> Maybe S3ConfigProperty
timestreamConfig :: DataDestinationConfigProperty -> Maybe TimestreamConfigProperty
haddock_workaround_ :: ()
mqttTopicConfig :: Maybe MqttTopicConfigProperty
s3Config :: Maybe S3ConfigProperty
timestreamConfig :: Maybe TimestreamConfigProperty
..}
    = DataDestinationConfigProperty
        {s3Config :: Maybe S3ConfigProperty
s3Config = S3ConfigProperty -> Maybe S3ConfigProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "S3Config" DataDestinationConfigProperty
S3ConfigProperty
newValue, Maybe MqttTopicConfigProperty
Maybe TimestreamConfigProperty
()
haddock_workaround_ :: ()
mqttTopicConfig :: Maybe MqttTopicConfigProperty
timestreamConfig :: Maybe TimestreamConfigProperty
haddock_workaround_ :: ()
mqttTopicConfig :: Maybe MqttTopicConfigProperty
timestreamConfig :: Maybe TimestreamConfigProperty
..}
instance Property "TimestreamConfig" DataDestinationConfigProperty where
  type PropertyType "TimestreamConfig" DataDestinationConfigProperty = TimestreamConfigProperty
  set :: PropertyType "TimestreamConfig" DataDestinationConfigProperty
-> DataDestinationConfigProperty -> DataDestinationConfigProperty
set PropertyType "TimestreamConfig" DataDestinationConfigProperty
newValue DataDestinationConfigProperty {Maybe MqttTopicConfigProperty
Maybe S3ConfigProperty
Maybe TimestreamConfigProperty
()
haddock_workaround_ :: DataDestinationConfigProperty -> ()
mqttTopicConfig :: DataDestinationConfigProperty -> Maybe MqttTopicConfigProperty
s3Config :: DataDestinationConfigProperty -> Maybe S3ConfigProperty
timestreamConfig :: DataDestinationConfigProperty -> Maybe TimestreamConfigProperty
haddock_workaround_ :: ()
mqttTopicConfig :: Maybe MqttTopicConfigProperty
s3Config :: Maybe S3ConfigProperty
timestreamConfig :: Maybe TimestreamConfigProperty
..}
    = DataDestinationConfigProperty
        {timestreamConfig :: Maybe TimestreamConfigProperty
timestreamConfig = TimestreamConfigProperty -> Maybe TimestreamConfigProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "TimestreamConfig" DataDestinationConfigProperty
TimestreamConfigProperty
newValue, Maybe MqttTopicConfigProperty
Maybe S3ConfigProperty
()
haddock_workaround_ :: ()
mqttTopicConfig :: Maybe MqttTopicConfigProperty
s3Config :: Maybe S3ConfigProperty
haddock_workaround_ :: ()
mqttTopicConfig :: Maybe MqttTopicConfigProperty
s3Config :: Maybe S3ConfigProperty
..}