module Stratosphere.EntityResolution.MatchingWorkflow.ResolutionTechniquesProperty (
        module Exports, ResolutionTechniquesProperty(..),
        mkResolutionTechniquesProperty
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.EntityResolution.MatchingWorkflow.ProviderPropertiesProperty as Exports
import {-# SOURCE #-} Stratosphere.EntityResolution.MatchingWorkflow.RuleBasedPropertiesProperty as Exports
import {-# SOURCE #-} Stratosphere.EntityResolution.MatchingWorkflow.RuleConditionPropertiesProperty as Exports
import Stratosphere.ResourceProperties
import Stratosphere.Value
data ResolutionTechniquesProperty
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-resolutiontechniques.html>
    ResolutionTechniquesProperty {ResolutionTechniquesProperty -> ()
haddock_workaround_ :: (),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-resolutiontechniques.html#cfn-entityresolution-matchingworkflow-resolutiontechniques-providerproperties>
                                  ResolutionTechniquesProperty -> Maybe ProviderPropertiesProperty
providerProperties :: (Prelude.Maybe ProviderPropertiesProperty),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-resolutiontechniques.html#cfn-entityresolution-matchingworkflow-resolutiontechniques-resolutiontype>
                                  ResolutionTechniquesProperty -> Maybe (Value Text)
resolutionType :: (Prelude.Maybe (Value Prelude.Text)),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-resolutiontechniques.html#cfn-entityresolution-matchingworkflow-resolutiontechniques-rulebasedproperties>
                                  ResolutionTechniquesProperty -> Maybe RuleBasedPropertiesProperty
ruleBasedProperties :: (Prelude.Maybe RuleBasedPropertiesProperty),
                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-entityresolution-matchingworkflow-resolutiontechniques.html#cfn-entityresolution-matchingworkflow-resolutiontechniques-ruleconditionproperties>
                                  ResolutionTechniquesProperty
-> Maybe RuleConditionPropertiesProperty
ruleConditionProperties :: (Prelude.Maybe RuleConditionPropertiesProperty)}
  deriving stock (ResolutionTechniquesProperty
-> ResolutionTechniquesProperty -> Bool
(ResolutionTechniquesProperty
 -> ResolutionTechniquesProperty -> Bool)
-> (ResolutionTechniquesProperty
    -> ResolutionTechniquesProperty -> Bool)
-> Eq ResolutionTechniquesProperty
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ResolutionTechniquesProperty
-> ResolutionTechniquesProperty -> Bool
== :: ResolutionTechniquesProperty
-> ResolutionTechniquesProperty -> Bool
$c/= :: ResolutionTechniquesProperty
-> ResolutionTechniquesProperty -> Bool
/= :: ResolutionTechniquesProperty
-> ResolutionTechniquesProperty -> Bool
Prelude.Eq, Int -> ResolutionTechniquesProperty -> ShowS
[ResolutionTechniquesProperty] -> ShowS
ResolutionTechniquesProperty -> String
(Int -> ResolutionTechniquesProperty -> ShowS)
-> (ResolutionTechniquesProperty -> String)
-> ([ResolutionTechniquesProperty] -> ShowS)
-> Show ResolutionTechniquesProperty
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ResolutionTechniquesProperty -> ShowS
showsPrec :: Int -> ResolutionTechniquesProperty -> ShowS
$cshow :: ResolutionTechniquesProperty -> String
show :: ResolutionTechniquesProperty -> String
$cshowList :: [ResolutionTechniquesProperty] -> ShowS
showList :: [ResolutionTechniquesProperty] -> ShowS
Prelude.Show)
mkResolutionTechniquesProperty :: ResolutionTechniquesProperty
mkResolutionTechniquesProperty :: ResolutionTechniquesProperty
mkResolutionTechniquesProperty
  = ResolutionTechniquesProperty
      {haddock_workaround_ :: ()
haddock_workaround_ = (), providerProperties :: Maybe ProviderPropertiesProperty
providerProperties = Maybe ProviderPropertiesProperty
forall a. Maybe a
Prelude.Nothing,
       resolutionType :: Maybe (Value Text)
resolutionType = Maybe (Value Text)
forall a. Maybe a
Prelude.Nothing,
       ruleBasedProperties :: Maybe RuleBasedPropertiesProperty
ruleBasedProperties = Maybe RuleBasedPropertiesProperty
forall a. Maybe a
Prelude.Nothing,
       ruleConditionProperties :: Maybe RuleConditionPropertiesProperty
ruleConditionProperties = Maybe RuleConditionPropertiesProperty
forall a. Maybe a
Prelude.Nothing}
instance ToResourceProperties ResolutionTechniquesProperty where
  toResourceProperties :: ResolutionTechniquesProperty -> ResourceProperties
toResourceProperties ResolutionTechniquesProperty {Maybe (Value Text)
Maybe ProviderPropertiesProperty
Maybe RuleConditionPropertiesProperty
Maybe RuleBasedPropertiesProperty
()
haddock_workaround_ :: ResolutionTechniquesProperty -> ()
providerProperties :: ResolutionTechniquesProperty -> Maybe ProviderPropertiesProperty
resolutionType :: ResolutionTechniquesProperty -> Maybe (Value Text)
ruleBasedProperties :: ResolutionTechniquesProperty -> Maybe RuleBasedPropertiesProperty
ruleConditionProperties :: ResolutionTechniquesProperty
-> Maybe RuleConditionPropertiesProperty
haddock_workaround_ :: ()
providerProperties :: Maybe ProviderPropertiesProperty
resolutionType :: Maybe (Value Text)
ruleBasedProperties :: Maybe RuleBasedPropertiesProperty
ruleConditionProperties :: Maybe RuleConditionPropertiesProperty
..}
    = ResourceProperties
        {awsType :: Text
awsType = Text
"AWS::EntityResolution::MatchingWorkflow.ResolutionTechniques",
         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 -> ProviderPropertiesProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"ProviderProperties" (ProviderPropertiesProperty -> (Key, Value))
-> Maybe ProviderPropertiesProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ProviderPropertiesProperty
providerProperties,
                            Key -> Value Text -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"ResolutionType" (Value Text -> (Key, Value))
-> Maybe (Value Text) -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (Value Text)
resolutionType,
                            Key -> RuleBasedPropertiesProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"RuleBasedProperties" (RuleBasedPropertiesProperty -> (Key, Value))
-> Maybe RuleBasedPropertiesProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe RuleBasedPropertiesProperty
ruleBasedProperties,
                            Key -> RuleConditionPropertiesProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"RuleConditionProperties"
                              (RuleConditionPropertiesProperty -> (Key, Value))
-> Maybe RuleConditionPropertiesProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe RuleConditionPropertiesProperty
ruleConditionProperties])}
instance JSON.ToJSON ResolutionTechniquesProperty where
  toJSON :: ResolutionTechniquesProperty -> Value
toJSON ResolutionTechniquesProperty {Maybe (Value Text)
Maybe ProviderPropertiesProperty
Maybe RuleConditionPropertiesProperty
Maybe RuleBasedPropertiesProperty
()
haddock_workaround_ :: ResolutionTechniquesProperty -> ()
providerProperties :: ResolutionTechniquesProperty -> Maybe ProviderPropertiesProperty
resolutionType :: ResolutionTechniquesProperty -> Maybe (Value Text)
ruleBasedProperties :: ResolutionTechniquesProperty -> Maybe RuleBasedPropertiesProperty
ruleConditionProperties :: ResolutionTechniquesProperty
-> Maybe RuleConditionPropertiesProperty
haddock_workaround_ :: ()
providerProperties :: Maybe ProviderPropertiesProperty
resolutionType :: Maybe (Value Text)
ruleBasedProperties :: Maybe RuleBasedPropertiesProperty
ruleConditionProperties :: Maybe RuleConditionPropertiesProperty
..}
    = [(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 -> ProviderPropertiesProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"ProviderProperties" (ProviderPropertiesProperty -> (Key, Value))
-> Maybe ProviderPropertiesProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ProviderPropertiesProperty
providerProperties,
               Key -> Value Text -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"ResolutionType" (Value Text -> (Key, Value))
-> Maybe (Value Text) -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (Value Text)
resolutionType,
               Key -> RuleBasedPropertiesProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"RuleBasedProperties" (RuleBasedPropertiesProperty -> (Key, Value))
-> Maybe RuleBasedPropertiesProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe RuleBasedPropertiesProperty
ruleBasedProperties,
               Key -> RuleConditionPropertiesProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"RuleConditionProperties"
                 (RuleConditionPropertiesProperty -> (Key, Value))
-> Maybe RuleConditionPropertiesProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe RuleConditionPropertiesProperty
ruleConditionProperties]))
instance Property "ProviderProperties" ResolutionTechniquesProperty where
  type PropertyType "ProviderProperties" ResolutionTechniquesProperty = ProviderPropertiesProperty
  set :: PropertyType "ProviderProperties" ResolutionTechniquesProperty
-> ResolutionTechniquesProperty -> ResolutionTechniquesProperty
set PropertyType "ProviderProperties" ResolutionTechniquesProperty
newValue ResolutionTechniquesProperty {Maybe (Value Text)
Maybe ProviderPropertiesProperty
Maybe RuleConditionPropertiesProperty
Maybe RuleBasedPropertiesProperty
()
haddock_workaround_ :: ResolutionTechniquesProperty -> ()
providerProperties :: ResolutionTechniquesProperty -> Maybe ProviderPropertiesProperty
resolutionType :: ResolutionTechniquesProperty -> Maybe (Value Text)
ruleBasedProperties :: ResolutionTechniquesProperty -> Maybe RuleBasedPropertiesProperty
ruleConditionProperties :: ResolutionTechniquesProperty
-> Maybe RuleConditionPropertiesProperty
haddock_workaround_ :: ()
providerProperties :: Maybe ProviderPropertiesProperty
resolutionType :: Maybe (Value Text)
ruleBasedProperties :: Maybe RuleBasedPropertiesProperty
ruleConditionProperties :: Maybe RuleConditionPropertiesProperty
..}
    = ResolutionTechniquesProperty
        {providerProperties :: Maybe ProviderPropertiesProperty
providerProperties = ProviderPropertiesProperty -> Maybe ProviderPropertiesProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "ProviderProperties" ResolutionTechniquesProperty
ProviderPropertiesProperty
newValue, Maybe (Value Text)
Maybe RuleConditionPropertiesProperty
Maybe RuleBasedPropertiesProperty
()
haddock_workaround_ :: ()
resolutionType :: Maybe (Value Text)
ruleBasedProperties :: Maybe RuleBasedPropertiesProperty
ruleConditionProperties :: Maybe RuleConditionPropertiesProperty
haddock_workaround_ :: ()
resolutionType :: Maybe (Value Text)
ruleBasedProperties :: Maybe RuleBasedPropertiesProperty
ruleConditionProperties :: Maybe RuleConditionPropertiesProperty
..}
instance Property "ResolutionType" ResolutionTechniquesProperty where
  type PropertyType "ResolutionType" ResolutionTechniquesProperty = Value Prelude.Text
  set :: PropertyType "ResolutionType" ResolutionTechniquesProperty
-> ResolutionTechniquesProperty -> ResolutionTechniquesProperty
set PropertyType "ResolutionType" ResolutionTechniquesProperty
newValue ResolutionTechniquesProperty {Maybe (Value Text)
Maybe ProviderPropertiesProperty
Maybe RuleConditionPropertiesProperty
Maybe RuleBasedPropertiesProperty
()
haddock_workaround_ :: ResolutionTechniquesProperty -> ()
providerProperties :: ResolutionTechniquesProperty -> Maybe ProviderPropertiesProperty
resolutionType :: ResolutionTechniquesProperty -> Maybe (Value Text)
ruleBasedProperties :: ResolutionTechniquesProperty -> Maybe RuleBasedPropertiesProperty
ruleConditionProperties :: ResolutionTechniquesProperty
-> Maybe RuleConditionPropertiesProperty
haddock_workaround_ :: ()
providerProperties :: Maybe ProviderPropertiesProperty
resolutionType :: Maybe (Value Text)
ruleBasedProperties :: Maybe RuleBasedPropertiesProperty
ruleConditionProperties :: Maybe RuleConditionPropertiesProperty
..}
    = ResolutionTechniquesProperty
        {resolutionType :: Maybe (Value Text)
resolutionType = Value Text -> Maybe (Value Text)
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "ResolutionType" ResolutionTechniquesProperty
Value Text
newValue, Maybe ProviderPropertiesProperty
Maybe RuleConditionPropertiesProperty
Maybe RuleBasedPropertiesProperty
()
haddock_workaround_ :: ()
providerProperties :: Maybe ProviderPropertiesProperty
ruleBasedProperties :: Maybe RuleBasedPropertiesProperty
ruleConditionProperties :: Maybe RuleConditionPropertiesProperty
haddock_workaround_ :: ()
providerProperties :: Maybe ProviderPropertiesProperty
ruleBasedProperties :: Maybe RuleBasedPropertiesProperty
ruleConditionProperties :: Maybe RuleConditionPropertiesProperty
..}
instance Property "RuleBasedProperties" ResolutionTechniquesProperty where
  type PropertyType "RuleBasedProperties" ResolutionTechniquesProperty = RuleBasedPropertiesProperty
  set :: PropertyType "RuleBasedProperties" ResolutionTechniquesProperty
-> ResolutionTechniquesProperty -> ResolutionTechniquesProperty
set PropertyType "RuleBasedProperties" ResolutionTechniquesProperty
newValue ResolutionTechniquesProperty {Maybe (Value Text)
Maybe ProviderPropertiesProperty
Maybe RuleConditionPropertiesProperty
Maybe RuleBasedPropertiesProperty
()
haddock_workaround_ :: ResolutionTechniquesProperty -> ()
providerProperties :: ResolutionTechniquesProperty -> Maybe ProviderPropertiesProperty
resolutionType :: ResolutionTechniquesProperty -> Maybe (Value Text)
ruleBasedProperties :: ResolutionTechniquesProperty -> Maybe RuleBasedPropertiesProperty
ruleConditionProperties :: ResolutionTechniquesProperty
-> Maybe RuleConditionPropertiesProperty
haddock_workaround_ :: ()
providerProperties :: Maybe ProviderPropertiesProperty
resolutionType :: Maybe (Value Text)
ruleBasedProperties :: Maybe RuleBasedPropertiesProperty
ruleConditionProperties :: Maybe RuleConditionPropertiesProperty
..}
    = ResolutionTechniquesProperty
        {ruleBasedProperties :: Maybe RuleBasedPropertiesProperty
ruleBasedProperties = RuleBasedPropertiesProperty -> Maybe RuleBasedPropertiesProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "RuleBasedProperties" ResolutionTechniquesProperty
RuleBasedPropertiesProperty
newValue, Maybe (Value Text)
Maybe ProviderPropertiesProperty
Maybe RuleConditionPropertiesProperty
()
haddock_workaround_ :: ()
providerProperties :: Maybe ProviderPropertiesProperty
resolutionType :: Maybe (Value Text)
ruleConditionProperties :: Maybe RuleConditionPropertiesProperty
haddock_workaround_ :: ()
providerProperties :: Maybe ProviderPropertiesProperty
resolutionType :: Maybe (Value Text)
ruleConditionProperties :: Maybe RuleConditionPropertiesProperty
..}
instance Property "RuleConditionProperties" ResolutionTechniquesProperty where
  type PropertyType "RuleConditionProperties" ResolutionTechniquesProperty = RuleConditionPropertiesProperty
  set :: PropertyType "RuleConditionProperties" ResolutionTechniquesProperty
-> ResolutionTechniquesProperty -> ResolutionTechniquesProperty
set PropertyType "RuleConditionProperties" ResolutionTechniquesProperty
newValue ResolutionTechniquesProperty {Maybe (Value Text)
Maybe ProviderPropertiesProperty
Maybe RuleConditionPropertiesProperty
Maybe RuleBasedPropertiesProperty
()
haddock_workaround_ :: ResolutionTechniquesProperty -> ()
providerProperties :: ResolutionTechniquesProperty -> Maybe ProviderPropertiesProperty
resolutionType :: ResolutionTechniquesProperty -> Maybe (Value Text)
ruleBasedProperties :: ResolutionTechniquesProperty -> Maybe RuleBasedPropertiesProperty
ruleConditionProperties :: ResolutionTechniquesProperty
-> Maybe RuleConditionPropertiesProperty
haddock_workaround_ :: ()
providerProperties :: Maybe ProviderPropertiesProperty
resolutionType :: Maybe (Value Text)
ruleBasedProperties :: Maybe RuleBasedPropertiesProperty
ruleConditionProperties :: Maybe RuleConditionPropertiesProperty
..}
    = ResolutionTechniquesProperty
        {ruleConditionProperties :: Maybe RuleConditionPropertiesProperty
ruleConditionProperties = RuleConditionPropertiesProperty
-> Maybe RuleConditionPropertiesProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "RuleConditionProperties" ResolutionTechniquesProperty
RuleConditionPropertiesProperty
newValue, Maybe (Value Text)
Maybe ProviderPropertiesProperty
Maybe RuleBasedPropertiesProperty
()
haddock_workaround_ :: ()
providerProperties :: Maybe ProviderPropertiesProperty
resolutionType :: Maybe (Value Text)
ruleBasedProperties :: Maybe RuleBasedPropertiesProperty
haddock_workaround_ :: ()
providerProperties :: Maybe ProviderPropertiesProperty
resolutionType :: Maybe (Value Text)
ruleBasedProperties :: Maybe RuleBasedPropertiesProperty
..}