module Database.HDBC.Record.InsertQuery (
PreparedInsertQuery, prepare, prepareInsertQuery,
runPreparedInsertQuery, runInsertQuery
) where
import Database.HDBC (IConnection, SqlValue)
import Database.Relational.Query (InsertQuery, untypeInsertQuery)
import Database.Record (ToSql)
import Database.HDBC.Record.Statement
(unsafePrepare, PreparedStatement, runPreparedNoFetch)
type PreparedInsertQuery p = PreparedStatement p ()
prepare :: IConnection conn
=> conn
-> InsertQuery p
-> IO (PreparedInsertQuery p)
prepare conn = unsafePrepare conn . untypeInsertQuery
prepareInsertQuery :: IConnection conn
=> conn
-> InsertQuery p
-> IO (PreparedInsertQuery p)
prepareInsertQuery = prepare
runPreparedInsertQuery :: ToSql SqlValue p
=> PreparedInsertQuery p
-> p
-> IO Integer
runPreparedInsertQuery = runPreparedNoFetch
runInsertQuery :: (IConnection conn, ToSql SqlValue p)
=> conn
-> InsertQuery p
-> p
-> IO Integer
runInsertQuery conn q p = prepareInsertQuery conn q >>= (`runPreparedInsertQuery` p)