module Database.HaskellDB.DBSpec.DatabaseToDBSpec
(dbToDBSpec)
where
import Database.HaskellDB.Database (Database, tables, describe, )
import Database.HaskellDB.DBSpec.DBInfo
(DBInfo, makeCInfo, makeTInfo, makeDBSpec,
DBOptions(DBOptions), useBString, makeIdent, )
import qualified Database.HaskellDB.DBSpec.PPHelpers as PP
dbToDBSpec :: Bool
-> PP.MakeIdentifiers
-> String
-> Database
-> IO DBInfo
dbToDBSpec useBStr mkIdent name dbconn
= do ts <- tables dbconn
descs <- mapM (describe dbconn) ts
let cinfos = map (map $ uncurry makeCInfo) descs
let tinfos = map (uncurry makeTInfo) (zip ts cinfos)
return $ makeDBSpec name (DBOptions {useBString = useBStr, makeIdent = mkIdent }) tinfos