{-# LANGUAGE RankNTypes #-}

module Database.Persist.SqlBackend.Internal.Statement where

import Conduit
import Data.Acquire
import Data.Int
import Database.Persist.Types.Base

-- | A 'Statement' is a representation of a database query that has been
-- prepared and stored on the server side.
data Statement = Statement
    { Statement -> IO ()
stmtFinalize :: IO ()
    , Statement -> IO ()
stmtReset :: IO ()
    , Statement -> [PersistValue] -> IO Int64
stmtExecute :: [PersistValue] -> IO Int64
    , Statement
-> forall (m :: * -> *).
   MonadIO m =>
   [PersistValue] -> Acquire (ConduitM () [PersistValue] m ())
stmtQuery
        :: forall m
         . (MonadIO m)
        => [PersistValue]
        -> Acquire (ConduitM () [PersistValue] m ())
    }