module Database.Custom.IBMDB2 (
  module Database.Relational,
  relationalQuery,
  insertValue, insertValueNoPH, insertQuery,
  update, updateNoPH,
  delete, deleteNoPH,
  ) where
import Database.Relational.Schema.IBMDB2.Config (config)
import Database.Relational hiding
  (relationalQuery,
   insertValue, insertValueNoPH, insertQuery,
   update, updateNoPH,
   delete, deleteNoPH, )
relationalQuery :: Relation p r -> QuerySuffix -> Query p r
relationalQuery = relationalQuery_ config
insertValue :: TableDerivable r
            => Register r (PlaceHolders p)
            -> Insert p
insertValue = insertValue' config
insertValueNoPH :: TableDerivable r
                => Register r ()
                -> Insert ()
insertValueNoPH body = insertValue $ body >> return unitPH
insertQuery :: TableDerivable r => Pi r r' -> Relation p r' -> InsertQuery p
insertQuery = insertQuery' config
update :: TableDerivable r
       => (Record Flat r -> Assign r (PlaceHolders p))
       -> Update p
update = update' config
updateNoPH :: TableDerivable r
           => (Record Flat r -> Assign r ())
           -> Update ()
updateNoPH body = update $ (>> return unitPH) . body
delete :: TableDerivable r
       => (Record Flat r -> Restrict (PlaceHolders p))
       -> Delete p
delete = delete' config
deleteNoPH :: TableDerivable r
           => (Record Flat r -> Restrict ())
           -> Delete ()
deleteNoPH body = delete $ (>> return unitPH) . body