module Database.HaskellDB.HDBC.MySQL (
mysqlConnect,
DriverInterface(..), driver
) where
import Database.HaskellDB.Database
import Database.HaskellDB.HDBC
import Database.HaskellDB.DriverAPI
import Database.HaskellDB.Sql.Generate (SqlGenerator)
import Data.List
import Database.HDBC.MySQL
mysqlConnect :: MonadIO m => SqlGenerator -> [(String,String)] -> (Database -> m a) -> m a
mysqlConnect gen opts = hdbcConnect gen (connectMySQL conninfo)
where conninfo = foldl' (\info (k,v) ->
case k
of
"host" -> info { mysqlHost = v }
"user" -> info { mysqlUser = v }
"password" -> info { mysqlPassword = v }
"database" -> info { mysqlDatabase = v }
"port" -> info { mysqlPort = read v }
"unixSocket" -> info { mysqlUnixSocket = v }
_ -> info
) defaultMySQLConnectInfo opts
options :: [(String, String)]
options =
[]
mysqlConnectOpts :: MonadIO m => [(String,String)] -> (Database -> m a) -> m a
mysqlConnectOpts opts f =
do gen <- getGenerator opts
let opts' = filter ((/="generator") . fst) opts
mysqlConnect gen opts' f
driver :: DriverInterface
driver = defaultdriver { connect = mysqlConnectOpts, requiredOptions = options }