module Orville.PostgreSQL.Plan.Explanation
( Explanation
, noExplanation
, explainStep
, explanationSteps
)
where
newtype Explanation
= Explanation ([String] -> [String])
instance Semigroup Explanation where
<> :: Explanation -> Explanation -> Explanation
(<>) = Explanation -> Explanation -> Explanation
appendExplanation
instance Monoid Explanation where
mempty :: Explanation
mempty = Explanation
noExplanation
appendExplanation :: Explanation -> Explanation -> Explanation
appendExplanation :: Explanation -> Explanation -> Explanation
appendExplanation (Explanation [String] -> [String]
front) (Explanation [String] -> [String]
back) =
([String] -> [String]) -> Explanation
Explanation ([String] -> [String]
front ([String] -> [String])
-> ([String] -> [String]) -> [String] -> [String]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [String] -> [String]
back)
noExplanation :: Explanation
noExplanation :: Explanation
noExplanation =
([String] -> [String]) -> Explanation
Explanation [String] -> [String]
forall a. a -> a
id
explainStep :: String -> Explanation
explainStep :: String -> Explanation
explainStep String
str =
([String] -> [String]) -> Explanation
Explanation (String
str String -> [String] -> [String]
forall a. a -> [a] -> [a]
:)
explanationSteps :: Explanation -> [String]
explanationSteps :: Explanation -> [String]
explanationSteps (Explanation [String] -> [String]
prependTo) =
[String] -> [String]
prependTo []