{-
Copyright (C) 2015 Dr. Alistair Ward
This file is part of WeekDaze.
WeekDaze is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
WeekDaze is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with WeekDaze. If not, see .
-}
{- |
[@AUTHOR@] Dr. Alistair Ward
[@DESCRIPTION@] Supports ODBC-connection to a DBMS.
-}
module WeekDaze.Database.ODBC(
-- * Functions
buildConnectionString
) where
import qualified Data.List
{- |
* Constructs an ODBC connection-string according to the syntax defined in or .
* CAVEAT: despite ODBC's aim of abstracting the connection-process, the field-names defined here are MySQL-specific.
-}
buildConnectionString
:: Maybe String -- ^ The optional host-name on which the data-server is running.
-> Maybe Int -- ^ The optional port on which the data-server is listening.
-> Maybe String -- ^ The optional user-name on the above data-server.
-> Maybe String -- ^ The optional password by which to authenticate with the above data-server.
-> Maybe String -- ^ The optional database-name.
-> String -- ^ A DSN by which to select the remaining connection-parameters from one's previously filed data-sources; e.g. from "~/.odbc.ini".
-> String
buildConnectionString maybeDataServerName maybeDataServerPort maybeDataServerUserName maybeDataServerPassword maybeDatabaseName dsn = Data.List.intercalate ";" [
showString key $ showChar '=' value | (key, Just value) <- [
(
"SERVER", maybeDataServerName -- PostgreSQL uses 'Servername' here.
), (
"PORT", fmap show maybeDataServerPort
), (
"UID", maybeDataServerUserName -- AKA 'User'. PostgreSQL uses 'UserName' here.
), (
"PASSWORD", maybeDataServerPassword
), (
"DATABASE", maybeDatabaseName
), (
"DSN", Just dsn
)
]
] -- List-comprehension.