packages feed

postgresql-pure-0.1.0.0: test-hdbc-postgresql/SpecificDB.hs

module SpecificDB where
import Database.HDBC
import Database.HDBC.PostgreSQL.Pure
import Test.HUnit
import Data.Default.Class(Default(def))
import Data.Maybe(fromMaybe)
import System.Environment(lookupEnv)

connectDB = 
    handleSqlError (do hostString <- getEnvDef "PURE_HOST" "127.0.0.1"
                       portString <- getEnvDef "PURE_PORT" "5432"
                       user <- getEnvDef "PURE_USER" "postgres"
                       password <- getEnvDef "PURE_PASSWORD" ""
                       database <- getEnvDef "PURE_DATABASE" "postgres"
                       let
                         config =
                           def
                             { address = AddressNotResolved hostString portString
                             , user = user
                             , password = password
                             , database = database
                             }
                       dbh <- connect config
                       run dbh "SET client_min_messages=WARNING" []
                       return dbh)

dateTimeTypeOfSqlValue :: SqlValue -> String
dateTimeTypeOfSqlValue (SqlLocalDate _) = "date"
dateTimeTypeOfSqlValue (SqlLocalTimeOfDay _) = "time without time zone"
dateTimeTypeOfSqlValue (SqlZonedLocalTimeOfDay _ _) = "time with time zone"
dateTimeTypeOfSqlValue (SqlLocalTime _) = "timestamp without time zone"
dateTimeTypeOfSqlValue (SqlZonedTime _) = "timestamp with time zone"
dateTimeTypeOfSqlValue (SqlUTCTime _) = "timestamp with time zone"
dateTimeTypeOfSqlValue (SqlDiffTime _) = "interval"
dateTimeTypeOfSqlValue (SqlPOSIXTime _) = "numeric"
dateTimeTypeOfSqlValue (SqlEpochTime _) = "integer"
dateTimeTypeOfSqlValue (SqlTimeDiff _) = "interval"
dateTimeTypeOfSqlValue _ = "text"

supportsFracTime = True

getEnvDef :: String -> String -> IO String
getEnvDef name value = fromMaybe value <$> lookupEnv name