X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FConfiguration.hs;h=7e15a74a15926e745ab7da640d6a3745220fdb93;hb=1585e5bef7e46666a8f026a00884323c9834565b;hp=8b6a7cefff41250266213a7a44bb753b82ed3db8;hpb=bc4c3efd191f3cc5b7b9f046775bff706c491a7d;p=mailbox-count.git diff --git a/src/Configuration.hs b/src/Configuration.hs index 8b6a7ce..7e15a74 100644 --- a/src/Configuration.hs +++ b/src/Configuration.hs @@ -7,7 +7,7 @@ module Configuration ( merge_optional ) where -import System.Console.CmdArgs.Default ( Default(..) ) +import System.Console.CmdArgs.Default ( Default( def ) ) import qualified OptionalConfiguration as OC ( OptionalConfiguration(..), @@ -20,26 +20,42 @@ data Configuration = Configuration { database :: Maybe String, detail :: Bool, + detail_query :: String, host :: Maybe String, password :: Maybe String, port :: Maybe Int, + summary_query :: String, username :: Maybe String } deriving (Show) + -- | A Configuration with all of its fields set to their default -- values. +-- instance Default Configuration where def = Configuration { database = def, detail = def, + detail_query = def_detail_query, host = def, password = def, port = def, + summary_query = def_summary_query, username = def } + where + def_summary_query = "SELECT domain,COUNT(username) " ++ + "FROM mailbox " ++ + "GROUP BY domain "++ + "ORDER BY domain;" + + def_detail_query = "SELECT domain,username " ++ + "FROM mailbox " ++ + "ORDER BY domain;" -- | Merge a 'Configuration' with an 'OptionalConfiguration'. This is -- more or less the Monoid instance for 'OptionalConfiguration', but -- since the two types are different, we have to repeat ourselves. +-- merge_optional :: Configuration -> OC.OptionalConfiguration -> Configuration @@ -47,9 +63,11 @@ merge_optional cfg opt_cfg = Configuration (OC.merge_maybes (database cfg) (OC.database opt_cfg)) (merge (detail cfg) (OC.detail opt_cfg)) + (merge (detail_query cfg) (OC.detail_query opt_cfg)) (OC.merge_maybes (host cfg) (OC.host opt_cfg)) (OC.merge_maybes (password cfg) (OC.password opt_cfg)) (OC.merge_maybes (port cfg) (OC.port opt_cfg)) + (merge (summary_query cfg) (OC.summary_query opt_cfg)) (OC.merge_maybes (username cfg) (OC.username opt_cfg)) where -- | If the thing on the right is Just something, return that