module Hasql.DynamicStatements.Snippet.Defs where
import Hasql.DynamicStatements.Prelude
import qualified Hasql.Encoders as Encoders
import qualified Hasql.Implicits.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 :: String -> Snippet
fromString String
x = Seq SnippetChunk -> Snippet
Snippet (SnippetChunk -> Seq SnippetChunk
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ByteString -> SnippetChunk
StringSnippetChunk (String -> ByteString
forall a. IsString a => String -> a
fromString String
x)))
sql :: ByteString -> Snippet
sql :: ByteString -> Snippet
sql ByteString
x = Seq SnippetChunk -> Snippet
Snippet (SnippetChunk -> Seq SnippetChunk
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ByteString -> SnippetChunk
StringSnippetChunk ByteString
x))
param :: Encoders.DefaultParamEncoder param => param -> Snippet
param :: param -> Snippet
param = NullableOrNot Value param -> param -> Snippet
forall param. NullableOrNot Value param -> param -> Snippet
encoderAndParam NullableOrNot Value param
forall a. DefaultParamEncoder a => NullableOrNot Value a
Encoders.defaultParam
encoderAndParam :: Encoders.NullableOrNot Encoders.Value param -> param -> Snippet
encoderAndParam :: NullableOrNot Value param -> param -> Snippet
encoderAndParam NullableOrNot Value param
encoder param
param = Seq SnippetChunk -> Snippet
Snippet (SnippetChunk -> Seq SnippetChunk
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Params () -> SnippetChunk
ParamSnippetChunk (param
param param -> Params param -> Params ()
forall (f :: * -> *) b a. Contravariant f => b -> f b -> f a
>$ NullableOrNot Value param -> Params param
forall a. NullableOrNot Value a -> Params a
Encoders.param NullableOrNot Value param
encoder)))