module Hasql.Session
  ( Session.Session,
    Session.pipeline,
    script,
    statement,
    Session.onLibpqConnection,
  )
where

import Hasql.Engine.Contexts.Session qualified as Session
import Hasql.Engine.Statement qualified as Statement
import Hasql.Platform.Prelude

-- |
-- Possibly a multi-statement query,
-- which however cannot be parameterized or prepared,
-- nor can any results of it be collected.
script :: Text -> Session.Session ()
script :: Text -> Session ()
script Text
sql = ByteString -> Session ()
Session.script (Text -> ByteString
encodeUtf8 Text
sql)

-- |
-- Execute a statement by providing parameters to it.
statement :: params -> Statement.Statement params result -> Session.Session result
statement :: forall params result.
params -> Statement params result -> Session result
statement params
params Statement params result
stmt = Statement params result -> params -> Session result
forall params result.
Statement params result -> params -> Session result
Session.statement Statement params result
stmt params
params