module IHP.QueryBuilder.HasqlHelpers
( wrapDynamicQuery
, quoteIdentifier
) where
import IHP.Prelude
import qualified Hasql.DynamicStatements.Snippet as Snippet
import Hasql.DynamicStatements.Snippet (Snippet)
import qualified Data.Text as Text
wrapDynamicQuery :: Snippet -> Snippet
wrapDynamicQuery :: Snippet -> Snippet
wrapDynamicQuery Snippet
innerQuery =
Text -> Snippet
Snippet.sql Text
"WITH _ihp_dynamic_result AS (" Snippet -> Snippet -> Snippet
forall a. Semigroup a => a -> a -> a
<> Snippet
innerQuery Snippet -> Snippet -> Snippet
forall a. Semigroup a => a -> a -> a
<> Text -> Snippet
Snippet.sql Text
") SELECT row_to_json(t)::jsonb FROM _ihp_dynamic_result AS t"
quoteIdentifier :: Text -> Snippet
quoteIdentifier :: Text -> Snippet
quoteIdentifier Text
name = Text -> Snippet
Snippet.sql (Text -> Text
forall a b. ConvertibleStrings a b => a -> b
cs (Text
"\"" Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> HasCallStack => Text -> Text -> Text -> Text
Text -> Text -> Text -> Text
Text.replace Text
"\"" Text
"\"\"" Text
name Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
"\""))