module Stratosphere.Resource
( DeletionPolicy(..)
, Resource(..)
, ResourceProperties(..)
, Resources(..)
, resource
, resourceToJSON
)
where
import GHC.Exts (IsList(..))
import Prelude
import Stratosphere.NamedItem
import Stratosphere.Prelude
import Stratosphere.Property
import Stratosphere.ResourceProperties
import Stratosphere.Value
import qualified Data.Aeson as JSON
import qualified Stratosphere.ResourceAttributes.CreationPolicy as ResourceAttributes
import qualified Stratosphere.ResourceAttributes.UpdatePolicy as ResourceAttributes
data DeletionPolicy
= Delete
| Retain
| Snapshot
deriving (Int -> DeletionPolicy -> ShowS
[DeletionPolicy] -> ShowS
DeletionPolicy -> String
(Int -> DeletionPolicy -> ShowS)
-> (DeletionPolicy -> String)
-> ([DeletionPolicy] -> ShowS)
-> Show DeletionPolicy
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DeletionPolicy -> ShowS
showsPrec :: Int -> DeletionPolicy -> ShowS
$cshow :: DeletionPolicy -> String
show :: DeletionPolicy -> String
$cshowList :: [DeletionPolicy] -> ShowS
showList :: [DeletionPolicy] -> ShowS
Show, DeletionPolicy -> DeletionPolicy -> Bool
(DeletionPolicy -> DeletionPolicy -> Bool)
-> (DeletionPolicy -> DeletionPolicy -> Bool) -> Eq DeletionPolicy
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DeletionPolicy -> DeletionPolicy -> Bool
== :: DeletionPolicy -> DeletionPolicy -> Bool
$c/= :: DeletionPolicy -> DeletionPolicy -> Bool
/= :: DeletionPolicy -> DeletionPolicy -> Bool
Eq, (forall x. DeletionPolicy -> Rep DeletionPolicy x)
-> (forall x. Rep DeletionPolicy x -> DeletionPolicy)
-> Generic DeletionPolicy
forall x. Rep DeletionPolicy x -> DeletionPolicy
forall x. DeletionPolicy -> Rep DeletionPolicy x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. DeletionPolicy -> Rep DeletionPolicy x
from :: forall x. DeletionPolicy -> Rep DeletionPolicy x
$cto :: forall x. Rep DeletionPolicy x -> DeletionPolicy
to :: forall x. Rep DeletionPolicy x -> DeletionPolicy
Generic)
instance JSON.ToJSON DeletionPolicy where
toJSON :: DeletionPolicy -> Value
toJSON = \case
DeletionPolicy
Delete -> Value
"Delete"
DeletionPolicy
Retain -> Value
"Retain"
DeletionPolicy
Snapshot -> Value
"Snapshot"
data Resource = Resource
{ Resource -> Maybe Text
condition :: Maybe Text
, Resource -> Maybe CreationPolicy
creationPolicy :: Maybe ResourceAttributes.CreationPolicy
, Resource -> Maybe DeletionPolicy
deletionPolicy :: Maybe DeletionPolicy
, Resource -> Maybe [Text]
dependsOn :: Maybe [Text]
, Resource -> Text
logicalName :: Text
, Resource -> Maybe Object
metadata :: Maybe JSON.Object
, Resource -> ResourceProperties
properties :: ResourceProperties
, Resource -> Maybe UpdatePolicy
updatePolicy :: Maybe ResourceAttributes.UpdatePolicy
}
deriving (Int -> Resource -> ShowS
[Resource] -> ShowS
Resource -> String
(Int -> Resource -> ShowS)
-> (Resource -> String) -> ([Resource] -> ShowS) -> Show Resource
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Resource -> ShowS
showsPrec :: Int -> Resource -> ShowS
$cshow :: Resource -> String
show :: Resource -> String
$cshowList :: [Resource] -> ShowS
showList :: [Resource] -> ShowS
Show, Resource -> Resource -> Bool
(Resource -> Resource -> Bool)
-> (Resource -> Resource -> Bool) -> Eq Resource
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Resource -> Resource -> Bool
== :: Resource -> Resource -> Bool
$c/= :: Resource -> Resource -> Bool
/= :: Resource -> Resource -> Bool
Eq)
instance Property "Condition" Resource where
type PropertyType "Condition" Resource = Text
set :: PropertyType "Condition" Resource -> Resource -> Resource
set PropertyType "Condition" Resource
newValue Resource{Maybe [Text]
Maybe Object
Maybe Text
Maybe CreationPolicy
Maybe UpdatePolicy
Maybe DeletionPolicy
Text
ResourceProperties
condition :: Resource -> Maybe Text
creationPolicy :: Resource -> Maybe CreationPolicy
deletionPolicy :: Resource -> Maybe DeletionPolicy
dependsOn :: Resource -> Maybe [Text]
logicalName :: Resource -> Text
metadata :: Resource -> Maybe Object
properties :: Resource -> ResourceProperties
updatePolicy :: Resource -> Maybe UpdatePolicy
condition :: Maybe Text
creationPolicy :: Maybe CreationPolicy
deletionPolicy :: Maybe DeletionPolicy
dependsOn :: Maybe [Text]
logicalName :: Text
metadata :: Maybe Object
properties :: ResourceProperties
updatePolicy :: Maybe UpdatePolicy
..} = Resource{condition :: Maybe Text
condition = Text -> Maybe Text
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
PropertyType "Condition" Resource
newValue, Maybe [Text]
Maybe Object
Maybe CreationPolicy
Maybe UpdatePolicy
Maybe DeletionPolicy
Text
ResourceProperties
creationPolicy :: Maybe CreationPolicy
deletionPolicy :: Maybe DeletionPolicy
dependsOn :: Maybe [Text]
logicalName :: Text
metadata :: Maybe Object
properties :: ResourceProperties
updatePolicy :: Maybe UpdatePolicy
creationPolicy :: Maybe CreationPolicy
deletionPolicy :: Maybe DeletionPolicy
dependsOn :: Maybe [Text]
logicalName :: Text
metadata :: Maybe Object
properties :: ResourceProperties
updatePolicy :: Maybe UpdatePolicy
..}
instance Property "CreationPolicy" Resource where
type PropertyType "CreationPolicy" Resource = ResourceAttributes.CreationPolicy
set :: PropertyType "CreationPolicy" Resource -> Resource -> Resource
set PropertyType "CreationPolicy" Resource
newValue Resource{Maybe [Text]
Maybe Object
Maybe Text
Maybe CreationPolicy
Maybe UpdatePolicy
Maybe DeletionPolicy
Text
ResourceProperties
condition :: Resource -> Maybe Text
creationPolicy :: Resource -> Maybe CreationPolicy
deletionPolicy :: Resource -> Maybe DeletionPolicy
dependsOn :: Resource -> Maybe [Text]
logicalName :: Resource -> Text
metadata :: Resource -> Maybe Object
properties :: Resource -> ResourceProperties
updatePolicy :: Resource -> Maybe UpdatePolicy
condition :: Maybe Text
creationPolicy :: Maybe CreationPolicy
deletionPolicy :: Maybe DeletionPolicy
dependsOn :: Maybe [Text]
logicalName :: Text
metadata :: Maybe Object
properties :: ResourceProperties
updatePolicy :: Maybe UpdatePolicy
..} = Resource{creationPolicy :: Maybe CreationPolicy
creationPolicy = CreationPolicy -> Maybe CreationPolicy
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure PropertyType "CreationPolicy" Resource
CreationPolicy
newValue, Maybe [Text]
Maybe Object
Maybe Text
Maybe UpdatePolicy
Maybe DeletionPolicy
Text
ResourceProperties
condition :: Maybe Text
deletionPolicy :: Maybe DeletionPolicy
dependsOn :: Maybe [Text]
logicalName :: Text
metadata :: Maybe Object
properties :: ResourceProperties
updatePolicy :: Maybe UpdatePolicy
condition :: Maybe Text
deletionPolicy :: Maybe DeletionPolicy
dependsOn :: Maybe [Text]
logicalName :: Text
metadata :: Maybe Object
properties :: ResourceProperties
updatePolicy :: Maybe UpdatePolicy
..}
instance Property "DeletionPolicy" Resource where
type PropertyType "DeletionPolicy" Resource = DeletionPolicy
set :: PropertyType "DeletionPolicy" Resource -> Resource -> Resource
set PropertyType "DeletionPolicy" Resource
newValue Resource{Maybe [Text]
Maybe Object
Maybe Text
Maybe CreationPolicy
Maybe UpdatePolicy
Maybe DeletionPolicy
Text
ResourceProperties
condition :: Resource -> Maybe Text
creationPolicy :: Resource -> Maybe CreationPolicy
deletionPolicy :: Resource -> Maybe DeletionPolicy
dependsOn :: Resource -> Maybe [Text]
logicalName :: Resource -> Text
metadata :: Resource -> Maybe Object
properties :: Resource -> ResourceProperties
updatePolicy :: Resource -> Maybe UpdatePolicy
condition :: Maybe Text
creationPolicy :: Maybe CreationPolicy
deletionPolicy :: Maybe DeletionPolicy
dependsOn :: Maybe [Text]
logicalName :: Text
metadata :: Maybe Object
properties :: ResourceProperties
updatePolicy :: Maybe UpdatePolicy
..} = Resource{deletionPolicy :: Maybe DeletionPolicy
deletionPolicy = DeletionPolicy -> Maybe DeletionPolicy
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure PropertyType "DeletionPolicy" Resource
DeletionPolicy
newValue, Maybe [Text]
Maybe Object
Maybe Text
Maybe CreationPolicy
Maybe UpdatePolicy
Text
ResourceProperties
condition :: Maybe Text
creationPolicy :: Maybe CreationPolicy
dependsOn :: Maybe [Text]
logicalName :: Text
metadata :: Maybe Object
properties :: ResourceProperties
updatePolicy :: Maybe UpdatePolicy
condition :: Maybe Text
creationPolicy :: Maybe CreationPolicy
dependsOn :: Maybe [Text]
logicalName :: Text
metadata :: Maybe Object
properties :: ResourceProperties
updatePolicy :: Maybe UpdatePolicy
..}
instance Property "DependsOn" Resource where
type PropertyType "DependsOn" Resource = [Text]
set :: PropertyType "DependsOn" Resource -> Resource -> Resource
set PropertyType "DependsOn" Resource
newValue Resource{Maybe [Text]
Maybe Object
Maybe Text
Maybe CreationPolicy
Maybe UpdatePolicy
Maybe DeletionPolicy
Text
ResourceProperties
condition :: Resource -> Maybe Text
creationPolicy :: Resource -> Maybe CreationPolicy
deletionPolicy :: Resource -> Maybe DeletionPolicy
dependsOn :: Resource -> Maybe [Text]
logicalName :: Resource -> Text
metadata :: Resource -> Maybe Object
properties :: Resource -> ResourceProperties
updatePolicy :: Resource -> Maybe UpdatePolicy
condition :: Maybe Text
creationPolicy :: Maybe CreationPolicy
deletionPolicy :: Maybe DeletionPolicy
dependsOn :: Maybe [Text]
logicalName :: Text
metadata :: Maybe Object
properties :: ResourceProperties
updatePolicy :: Maybe UpdatePolicy
..} = Resource{dependsOn :: Maybe [Text]
dependsOn = [Text] -> Maybe [Text]
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure [Text]
PropertyType "DependsOn" Resource
newValue, Maybe Object
Maybe Text
Maybe CreationPolicy
Maybe UpdatePolicy
Maybe DeletionPolicy
Text
ResourceProperties
condition :: Maybe Text
creationPolicy :: Maybe CreationPolicy
deletionPolicy :: Maybe DeletionPolicy
logicalName :: Text
metadata :: Maybe Object
properties :: ResourceProperties
updatePolicy :: Maybe UpdatePolicy
condition :: Maybe Text
creationPolicy :: Maybe CreationPolicy
deletionPolicy :: Maybe DeletionPolicy
logicalName :: Text
metadata :: Maybe Object
properties :: ResourceProperties
updatePolicy :: Maybe UpdatePolicy
..}
instance Property "LogicalName" Resource where
type PropertyType "LogicalName" Resource = Text
set :: PropertyType "LogicalName" Resource -> Resource -> Resource
set PropertyType "LogicalName" Resource
newValue Resource{Maybe [Text]
Maybe Object
Maybe Text
Maybe CreationPolicy
Maybe UpdatePolicy
Maybe DeletionPolicy
Text
ResourceProperties
condition :: Resource -> Maybe Text
creationPolicy :: Resource -> Maybe CreationPolicy
deletionPolicy :: Resource -> Maybe DeletionPolicy
dependsOn :: Resource -> Maybe [Text]
logicalName :: Resource -> Text
metadata :: Resource -> Maybe Object
properties :: Resource -> ResourceProperties
updatePolicy :: Resource -> Maybe UpdatePolicy
condition :: Maybe Text
creationPolicy :: Maybe CreationPolicy
deletionPolicy :: Maybe DeletionPolicy
dependsOn :: Maybe [Text]
logicalName :: Text
metadata :: Maybe Object
properties :: ResourceProperties
updatePolicy :: Maybe UpdatePolicy
..} = Resource{logicalName :: Text
logicalName = Text
PropertyType "LogicalName" Resource
newValue, Maybe [Text]
Maybe Object
Maybe Text
Maybe CreationPolicy
Maybe UpdatePolicy
Maybe DeletionPolicy
ResourceProperties
condition :: Maybe Text
creationPolicy :: Maybe CreationPolicy
deletionPolicy :: Maybe DeletionPolicy
dependsOn :: Maybe [Text]
metadata :: Maybe Object
properties :: ResourceProperties
updatePolicy :: Maybe UpdatePolicy
condition :: Maybe Text
creationPolicy :: Maybe CreationPolicy
deletionPolicy :: Maybe DeletionPolicy
dependsOn :: Maybe [Text]
metadata :: Maybe Object
properties :: ResourceProperties
updatePolicy :: Maybe UpdatePolicy
..}
instance Property "Metadata" Resource where
type PropertyType "Metadata" Resource = JSON.Object
set :: PropertyType "Metadata" Resource -> Resource -> Resource
set PropertyType "Metadata" Resource
newValue Resource{Maybe [Text]
Maybe Object
Maybe Text
Maybe CreationPolicy
Maybe UpdatePolicy
Maybe DeletionPolicy
Text
ResourceProperties
condition :: Resource -> Maybe Text
creationPolicy :: Resource -> Maybe CreationPolicy
deletionPolicy :: Resource -> Maybe DeletionPolicy
dependsOn :: Resource -> Maybe [Text]
logicalName :: Resource -> Text
metadata :: Resource -> Maybe Object
properties :: Resource -> ResourceProperties
updatePolicy :: Resource -> Maybe UpdatePolicy
condition :: Maybe Text
creationPolicy :: Maybe CreationPolicy
deletionPolicy :: Maybe DeletionPolicy
dependsOn :: Maybe [Text]
logicalName :: Text
metadata :: Maybe Object
properties :: ResourceProperties
updatePolicy :: Maybe UpdatePolicy
..} = Resource{metadata :: Maybe Object
metadata = Object -> Maybe Object
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Object
PropertyType "Metadata" Resource
newValue, Maybe [Text]
Maybe Text
Maybe CreationPolicy
Maybe UpdatePolicy
Maybe DeletionPolicy
Text
ResourceProperties
condition :: Maybe Text
creationPolicy :: Maybe CreationPolicy
deletionPolicy :: Maybe DeletionPolicy
dependsOn :: Maybe [Text]
logicalName :: Text
properties :: ResourceProperties
updatePolicy :: Maybe UpdatePolicy
condition :: Maybe Text
creationPolicy :: Maybe CreationPolicy
deletionPolicy :: Maybe DeletionPolicy
dependsOn :: Maybe [Text]
logicalName :: Text
properties :: ResourceProperties
updatePolicy :: Maybe UpdatePolicy
..}
instance Property "Properties" Resource where
type PropertyType "Properties" Resource = ResourceProperties
set :: PropertyType "Properties" Resource -> Resource -> Resource
set PropertyType "Properties" Resource
newValue Resource{Maybe [Text]
Maybe Object
Maybe Text
Maybe CreationPolicy
Maybe UpdatePolicy
Maybe DeletionPolicy
Text
ResourceProperties
condition :: Resource -> Maybe Text
creationPolicy :: Resource -> Maybe CreationPolicy
deletionPolicy :: Resource -> Maybe DeletionPolicy
dependsOn :: Resource -> Maybe [Text]
logicalName :: Resource -> Text
metadata :: Resource -> Maybe Object
properties :: Resource -> ResourceProperties
updatePolicy :: Resource -> Maybe UpdatePolicy
condition :: Maybe Text
creationPolicy :: Maybe CreationPolicy
deletionPolicy :: Maybe DeletionPolicy
dependsOn :: Maybe [Text]
logicalName :: Text
metadata :: Maybe Object
properties :: ResourceProperties
updatePolicy :: Maybe UpdatePolicy
..} = Resource{properties :: ResourceProperties
properties = PropertyType "Properties" Resource
ResourceProperties
newValue, Maybe [Text]
Maybe Object
Maybe Text
Maybe CreationPolicy
Maybe UpdatePolicy
Maybe DeletionPolicy
Text
condition :: Maybe Text
creationPolicy :: Maybe CreationPolicy
deletionPolicy :: Maybe DeletionPolicy
dependsOn :: Maybe [Text]
logicalName :: Text
metadata :: Maybe Object
updatePolicy :: Maybe UpdatePolicy
condition :: Maybe Text
creationPolicy :: Maybe CreationPolicy
deletionPolicy :: Maybe DeletionPolicy
dependsOn :: Maybe [Text]
logicalName :: Text
metadata :: Maybe Object
updatePolicy :: Maybe UpdatePolicy
..}
instance Property "UpdatePolicy" Resource where
type PropertyType "UpdatePolicy" Resource = ResourceAttributes.UpdatePolicy
set :: PropertyType "UpdatePolicy" Resource -> Resource -> Resource
set PropertyType "UpdatePolicy" Resource
newValue Resource{Maybe [Text]
Maybe Object
Maybe Text
Maybe CreationPolicy
Maybe UpdatePolicy
Maybe DeletionPolicy
Text
ResourceProperties
condition :: Resource -> Maybe Text
creationPolicy :: Resource -> Maybe CreationPolicy
deletionPolicy :: Resource -> Maybe DeletionPolicy
dependsOn :: Resource -> Maybe [Text]
logicalName :: Resource -> Text
metadata :: Resource -> Maybe Object
properties :: Resource -> ResourceProperties
updatePolicy :: Resource -> Maybe UpdatePolicy
condition :: Maybe Text
creationPolicy :: Maybe CreationPolicy
deletionPolicy :: Maybe DeletionPolicy
dependsOn :: Maybe [Text]
logicalName :: Text
metadata :: Maybe Object
properties :: ResourceProperties
updatePolicy :: Maybe UpdatePolicy
..} = Resource{updatePolicy :: Maybe UpdatePolicy
updatePolicy = UpdatePolicy -> Maybe UpdatePolicy
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure PropertyType "UpdatePolicy" Resource
UpdatePolicy
newValue, Maybe [Text]
Maybe Object
Maybe Text
Maybe CreationPolicy
Maybe DeletionPolicy
Text
ResourceProperties
condition :: Maybe Text
creationPolicy :: Maybe CreationPolicy
deletionPolicy :: Maybe DeletionPolicy
dependsOn :: Maybe [Text]
logicalName :: Text
metadata :: Maybe Object
properties :: ResourceProperties
condition :: Maybe Text
creationPolicy :: Maybe CreationPolicy
deletionPolicy :: Maybe DeletionPolicy
dependsOn :: Maybe [Text]
logicalName :: Text
metadata :: Maybe Object
properties :: ResourceProperties
..}
instance ToRef Resource b where
toRef :: Resource -> Value b
toRef = Text -> Value b
forall a. Text -> Value a
Ref (Text -> Value b) -> (Resource -> Text) -> Resource -> Value b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (.logicalName)
resource
:: ToResourceProperties a
=> Text
-> a
-> Resource
resource :: forall a. ToResourceProperties a => Text -> a -> Resource
resource Text
logicalName a
properties =
Resource
{ condition :: Maybe Text
condition = Maybe Text
forall a. Maybe a
Nothing
, creationPolicy :: Maybe CreationPolicy
creationPolicy = Maybe CreationPolicy
forall a. Maybe a
Nothing
, deletionPolicy :: Maybe DeletionPolicy
deletionPolicy = Maybe DeletionPolicy
forall a. Maybe a
Nothing
, dependsOn :: Maybe [Text]
dependsOn = Maybe [Text]
forall a. Maybe a
Nothing
, metadata :: Maybe Object
metadata = Maybe Object
forall a. Maybe a
Nothing
, properties :: ResourceProperties
properties = a -> ResourceProperties
forall a. ToResourceProperties a => a -> ResourceProperties
toResourceProperties a
properties
, updatePolicy :: Maybe UpdatePolicy
updatePolicy = Maybe UpdatePolicy
forall a. Maybe a
Nothing
, Text
logicalName :: Text
logicalName :: Text
..
}
resourceToJSON :: Resource -> JSON.Value
resourceToJSON :: Resource -> Value
resourceToJSON Resource{Maybe [Text]
Maybe Object
Maybe Text
Maybe CreationPolicy
Maybe UpdatePolicy
Maybe DeletionPolicy
Text
ResourceProperties
condition :: Resource -> Maybe Text
creationPolicy :: Resource -> Maybe CreationPolicy
deletionPolicy :: Resource -> Maybe DeletionPolicy
dependsOn :: Resource -> Maybe [Text]
logicalName :: Resource -> Text
metadata :: Resource -> Maybe Object
properties :: Resource -> ResourceProperties
updatePolicy :: Resource -> Maybe UpdatePolicy
condition :: Maybe Text
creationPolicy :: Maybe CreationPolicy
deletionPolicy :: Maybe DeletionPolicy
dependsOn :: Maybe [Text]
logicalName :: Text
metadata :: Maybe Object
properties :: ResourceProperties
updatePolicy :: Maybe UpdatePolicy
..}
= [Pair] -> Value
JSON.object
([Pair] -> Value) -> [Pair] -> Value
forall a b. (a -> b) -> a -> b
$ ResourceProperties -> [Pair]
resourcePropertiesJSON ResourceProperties
properties [Pair] -> [Pair] -> [Pair]
forall a. Semigroup a => a -> a -> a
<> [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
catMaybes
[ Key -> Maybe Text -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
maybeField Key
"Condition" Maybe Text
condition
, Key -> Maybe CreationPolicy -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
maybeField Key
"CreationPolicy" Maybe CreationPolicy
creationPolicy
, Key -> Maybe DeletionPolicy -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
maybeField Key
"DeletionPolicy" Maybe DeletionPolicy
deletionPolicy
, Key -> Maybe [Text] -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
maybeField Key
"DependsOn" Maybe [Text]
dependsOn
, Key -> Maybe Object -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
maybeField Key
"Metadata" Maybe Object
metadata
, Key -> Maybe UpdatePolicy -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
maybeField Key
"UpdatePolicy" Maybe UpdatePolicy
updatePolicy
]
newtype Resources = Resources { Resources -> [Resource]
resourceList :: [Resource] }
deriving stock (Int -> Resources -> ShowS
[Resources] -> ShowS
Resources -> String
(Int -> Resources -> ShowS)
-> (Resources -> String)
-> ([Resources] -> ShowS)
-> Show Resources
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Resources -> ShowS
showsPrec :: Int -> Resources -> ShowS
$cshow :: Resources -> String
show :: Resources -> String
$cshowList :: [Resources] -> ShowS
showList :: [Resources] -> ShowS
Show, Resources -> Resources -> Bool
(Resources -> Resources -> Bool)
-> (Resources -> Resources -> Bool) -> Eq Resources
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Resources -> Resources -> Bool
== :: Resources -> Resources -> Bool
$c/= :: Resources -> Resources -> Bool
/= :: Resources -> Resources -> Bool
Eq)
deriving newtype (Semigroup Resources
Resources
Semigroup Resources =>
Resources
-> (Resources -> Resources -> Resources)
-> ([Resources] -> Resources)
-> Monoid Resources
[Resources] -> Resources
Resources -> Resources -> Resources
forall a.
Semigroup a =>
a -> (a -> a -> a) -> ([a] -> a) -> Monoid a
$cmempty :: Resources
mempty :: Resources
$cmappend :: Resources -> Resources -> Resources
mappend :: Resources -> Resources -> Resources
$cmconcat :: [Resources] -> Resources
mconcat :: [Resources] -> Resources
Monoid, (Element Resources -> Element Resources) -> Resources -> Resources
((Element Resources -> Element Resources)
-> Resources -> Resources)
-> MonoFunctor Resources
forall mono.
((Element mono -> Element mono) -> mono -> mono)
-> MonoFunctor mono
$comap :: (Element Resources -> Element Resources) -> Resources -> Resources
omap :: (Element Resources -> Element Resources) -> Resources -> Resources
MonoFunctor, NonEmpty Resources -> Resources
Resources -> Resources -> Resources
(Resources -> Resources -> Resources)
-> (NonEmpty Resources -> Resources)
-> (forall b. Integral b => b -> Resources -> Resources)
-> Semigroup Resources
forall b. Integral b => b -> Resources -> Resources
forall a.
(a -> a -> a)
-> (NonEmpty a -> a)
-> (forall b. Integral b => b -> a -> a)
-> Semigroup a
$c<> :: Resources -> Resources -> Resources
<> :: Resources -> Resources -> Resources
$csconcat :: NonEmpty Resources -> Resources
sconcat :: NonEmpty Resources -> Resources
$cstimes :: forall b. Integral b => b -> Resources -> Resources
stimes :: forall b. Integral b => b -> Resources -> Resources
Semigroup)
type instance Element Resources = Resource
instance IsList Resources where
type Item Resources = Resource
fromList :: [Item Resources] -> Resources
fromList = [Item Resources] -> Resources
[Resource] -> Resources
Resources
toList :: Resources -> [Item Resources]
toList = (.resourceList)
instance NamedItem Resource where
itemName :: Resource -> Text
itemName = (.logicalName)
nameToJSON :: Resource -> Value
nameToJSON = Resource -> Value
resourceToJSON
instance JSON.ToJSON Resources where
toJSON :: Resources -> Value
toJSON = [Resource] -> Value
forall a. NamedItem a => [a] -> Value
namedItemToJSON ([Resource] -> Value)
-> (Resources -> [Resource]) -> Resources -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (.resourceList)