relational-query-HDBC-0.6.1.1: src/Database/HDBC/Record/InsertQuery.hs
{-# LANGUAGE FlexibleContexts #-}
-- |
-- Module : Database.HDBC.Record.InsertQuery
-- Copyright : 2013 Kei Hibino
-- License : BSD3
--
-- Maintainer : ex8k.hibino@gmail.com
-- Stability : experimental
-- Portability : unknown
--
-- This module provides typed 'InsertQuery' running sequence
-- which intermediate structures are typed.
module Database.HDBC.Record.InsertQuery (
PreparedInsertQuery, prepare, prepareInsertQuery, withPrepareInsertQuery,
runPreparedInsertQuery, runInsertQuery
) where
import Database.HDBC (IConnection, SqlValue)
import Database.Relational.Query (InsertQuery)
import Database.Record (ToSql)
import Database.HDBC.Record.Statement
(prepareNoFetch, withPrepareNoFetch, PreparedStatement, runPreparedNoFetch, runNoFetch)
-- | Typed prepared insert query type.
type PreparedInsertQuery p = PreparedStatement p ()
-- | Typed prepare insert-query operation.
prepare :: IConnection conn
=> conn
-> InsertQuery p
-> IO (PreparedInsertQuery p)
prepare = prepareNoFetch
-- | Same as 'prepare'.
prepareInsertQuery :: IConnection conn
=> conn
-> InsertQuery p
-> IO (PreparedInsertQuery p)
prepareInsertQuery = prepare
-- | Bracketed prepare operation.
withPrepareInsertQuery :: IConnection conn
=> conn
-> InsertQuery p
-> (PreparedInsertQuery p -> IO a)
-> IO a
withPrepareInsertQuery = withPrepareNoFetch
-- | Bind parameters, execute statement and get execution result.
runPreparedInsertQuery :: ToSql SqlValue p
=> PreparedInsertQuery p
-> p
-> IO Integer
runPreparedInsertQuery = runPreparedNoFetch
-- | Prepare insert statement, bind parameters,
-- execute statement and get execution result.
runInsertQuery :: (IConnection conn, ToSql SqlValue p)
=> conn
-> InsertQuery p
-> p
-> IO Integer
runInsertQuery = runNoFetch