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