File: ODBC.hs

package info (click to toggle)
haskelldb-hdbc-odbc 0.13-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 64 kB
  • ctags: 1
  • sloc: haskell: 29; makefile: 3
file content (41 lines) | stat: -rw-r--r-- 1,445 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
-----------------------------------------------------------
-- |
-- Module      :  Database.HaskellDB.HDBC.ODBC
-- Copyright   :  HWT Group (c) 2003, Bjorn Bringert (c) 2006
-- License     :  BSD-style
-- 
-- Maintainer  :  haskelldb-users@lists.sourceforge.net
-- Stability   :  experimental
-- Portability :  portable
--
-----------------------------------------------------------
module Database.HaskellDB.HDBC.ODBC (
		      odbcConnect,
                      DriverInterface(..), driver
		      ) where

import Database.HaskellDB.Database
import Database.HaskellDB.HDBC
import Database.HaskellDB.DriverAPI
import Database.HaskellDB.Sql.Generate (SqlGenerator)

import Database.HDBC.ODBC (connectODBC)

odbcConnect :: MonadIO m => SqlGenerator -> [(String,String)] -> (Database -> m a) -> m a
odbcConnect gen opts = hdbcConnect gen (connectODBC conninfo)
    -- strangely enough, mysql+unixodbc want a semicolon terminating connstring
    where conninfo = foldr (\(k,v) z -> k ++ "=" ++ v ++ ";" ++ z) [] opts

options :: [(String, String)]
options =
    []

odbcConnectOpts :: MonadIO m => [(String,String)] -> (Database -> m a) -> m a
odbcConnectOpts opts f = 
    do gen <- getGenerator opts
       let opts' = filter ((/="generator") . fst) opts
       odbcConnect gen opts' f

-- | This driver passes its options through to HDBC.
driver :: DriverInterface
driver = defaultdriver { connect = odbcConnectOpts, requiredOptions = options }