CurryDB-0.1.0.0: redis/main.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
import Database.Curry
import Database.Redis
import Options.Applicative
-- import System.Remote.Monitoring (forkServer)
import Filesystem.Path.CurrentOS (decodeString)
data Option = Option
{ optPort :: Int
, optPath :: Maybe FilePath
}
opts :: Parser Option
opts = Option
<$> option
( long "port" & short 'p' & metavar "PORT"
& value 8854
& help "Port Number"
)
<*> option
( long "file" & short 'f' & metavar "FILE"
& reader (Just . Just)
& value Nothing
& help "dump file"
)
main :: IO ()
main = execParser optsInfo >>= \Option{..} -> do
-- forkServer "localhost" 8000 -- monitoring
(`runServer` serverSettings optPort "*") $ def
{ configPath = fmap decodeString optPath
, configSaveStrategy =
[ SaveByFrequency 900 1
, SaveByFrequency 300 10
, SaveByFrequency 60 10000
]
}
where
optsInfo = info (helper <*> opts)
( fullDesc
& header "curry-redis - a redis clone over CurryDB"
)