module Database.PostgreSQL.Simple.Vector where
import Database.PostgreSQL.Simple (Connection, formatQuery, formatMany)
import Database.PostgreSQL.Simple.FromRow (FromRow(..))
import Database.PostgreSQL.Simple.ToRow (ToRow(..))
import Database.PostgreSQL.Simple.Internal (RowParser, exec)
import Database.PostgreSQL.Simple.Internal.PQResultUtils
import Database.PostgreSQL.Simple.Types ( Query (..) )
import qualified Data.Vector as V
query :: (ToRow q, FromRow r) => Connection -> Query -> q -> IO (V.Vector r)
query = queryWith fromRow
query_ :: (FromRow r) => Connection -> Query -> IO (V.Vector r)
query_ = queryWith_ fromRow
queryWith :: ToRow q => RowParser r -> Connection -> Query -> q -> IO (V.Vector r)
queryWith parser conn template qs = do
result <- exec conn =<< formatQuery conn template qs
finishQueryWithV parser conn template result
queryWith_ :: RowParser r -> Connection -> Query -> IO (V.Vector r)
queryWith_ parser conn q@(Query que) = do
result <- exec conn que
finishQueryWithV parser conn q result
returning :: (ToRow q, FromRow r) => Connection -> Query -> [q] -> IO (V.Vector r)
returning = returningWith fromRow
returningWith :: (ToRow q) => RowParser r -> Connection -> Query -> [q] -> IO (V.Vector r)
returningWith _ _ _ [] = return V.empty
returningWith parser conn q qs = do
result <- exec conn =<< formatMany conn q qs
finishQueryWithV parser conn q result