module Hasql.DynamicStatements.Snippet.Defs where
import Hasql.DynamicStatements.Prelude
import qualified Hasql.Encoders as Encoders
newtype Snippet = Snippet (Seq SnippetChunk)
data SnippetChunk =
StringSnippetChunk ByteString |
ParamSnippetChunk (Encoders.Params ())
deriving instance Semigroup Snippet
deriving instance Monoid Snippet
instance IsString Snippet where
fromString x = Snippet (pure (StringSnippetChunk (fromString x)))
sql :: ByteString -> Snippet
sql x = Snippet (pure (StringSnippetChunk x))
param :: Default (Encoders.Value param) => param -> Snippet
param = encoderAndParam def
nullableParam :: Default (Encoders.Value param) => Maybe param -> Snippet
nullableParam = encoderAndNullableParam def
encoderAndParam :: Encoders.Value param -> param -> Snippet
encoderAndParam = paramsEncoderAndParam . Encoders.param
encoderAndNullableParam :: Encoders.Value param -> Maybe param -> Snippet
encoderAndNullableParam = paramsEncoderAndParam . Encoders.nullableParam
paramsEncoderAndParam :: Encoders.Params param -> param -> Snippet
paramsEncoderAndParam encoder param = Snippet (pure (ParamSnippetChunk (param >$ encoder)))