{-# LANGUAGE TemplateHaskell #-}
module DS (definePgTable) where
import Language.Haskell.TH (Q, Dec, Name)
import Database.HDBC.PostgreSQL (connectPostgreSQL)
import Database.HDBC.Query.TH (defineTableFromDB)
import Database.HDBC.Schema.Driver (Driver (..))
import Database.HDBC.Schema.PostgreSQL (driverPostgreSQL)
import Data.PostgreSQL.NetworkAddress
addNetAddress :: Driver conn -> Driver conn
addNetAddress d =
d { typeMap = [ ("inet", [t| Inet |]), ("cidr", [t| Cidr |] ) ] ++ typeMap d }
definePgTable :: String -> String -> [Name] -> Q [Dec]
definePgTable =
defineTableFromDB (connectPostgreSQL "dbname=testdb") (addNetAddress driverPostgreSQL)