packages feed

hpgsql-simple-compat-0.1.0.0: src/Database/PostgreSQL/Query/Functions.hs

module Database.PostgreSQL.Query.Functions
  ( pgQuery,
  )
where

import Control.Monad.IO.Class (liftIO)
import Database.PostgreSQL.Query.SqlBuilder (ToSqlBuilder (..), defaultLogMasker, runSqlBuilder)
import Database.PostgreSQL.Query.Types (HasPostgres (..), MonadPostgres)
import Database.PostgreSQL.Simple (query)
import Database.PostgreSQL.Simple.FromRow (FromRow)
import GHC.Stack (HasCallStack)

-- | Execute a query generated by 'sqlExp' and return results.
--
-- @
-- let userName = "Vovka Erohin" :: Text
-- pgQuery [sqlExp| SELECT id, name FROM users WHERE name = \#{userName}|]
-- @
pgQuery ::
  (MonadPostgres m, ToSqlBuilder q, FromRow r, HasCallStack) =>
  q ->
  m [r]
pgQuery q = withPGConnection $ \conn -> liftIO $ do
  (simpleQ, row) <- runSqlBuilder conn defaultLogMasker (toSqlBuilder q)
  query conn simpleQ row