diff options
-rw-r--r-- | sariulclocks.cabal | 2 | ||||
-rw-r--r-- | src/Types/Classes.hs | 4 | ||||
-rw-r--r-- | src/Utils/ScoresFile.hs | 19 | ||||
-rw-r--r-- | src/sariulclocks.hs | 4 |
4 files changed, 22 insertions, 7 deletions
diff --git a/sariulclocks.cabal b/sariulclocks.cabal index dd1eba7..2bf5577 100644 --- a/sariulclocks.cabal +++ b/sariulclocks.cabal @@ -20,7 +20,7 @@ executable sariulclocks.cgi main-is: sariulclocks.hs -- other-modules: -- other-extensions: - build-depends: base, cgi, xhtml, unix + build-depends: base, cgi, xhtml, time hs-source-dirs: src default-language: Haskell2010 ld-options: -static -pthread diff --git a/src/Types/Classes.hs b/src/Types/Classes.hs index a004080..9242b12 100644 --- a/src/Types/Classes.hs +++ b/src/Types/Classes.hs @@ -1,5 +1,7 @@ module Types.Classes where +import Types.Scores + data Grade = GradeFive Multiplier | GradeSix Multiplier @@ -8,6 +10,8 @@ type Multiplier = Float -- grade; class; no. Ss data Class = Class Grade Int Int +type ScoresList = [(Grade, Score)] + instance Show Grade where show (GradeFive _) = "5" show (GradeSix _) = "6" diff --git a/src/Utils/ScoresFile.hs b/src/Utils/ScoresFile.hs index 71e0dd5..31ad6ca 100644 --- a/src/Utils/ScoresFile.hs +++ b/src/Utils/ScoresFile.hs @@ -3,12 +3,23 @@ module Utils.ScoresFile ( readScoresFile import Types.Scores import Types.Classes -import System.Posix.Files +import Data.Time.Clock.POSIX (getPOSIXTime) +import Control.Applicative ((<$>)) +import System.IO (withFile) + +scoresToCSV :: ScoresList -> String +scoresToCSV = undefined + +scoresFromCSV :: String -> ScoresList +scoresFromCSV = undefined -- read to scores-XX.csv where XX is largest timestamp -readScoresFile :: IO [(Class,Score)] +readScoresFile :: IO ScoresList readScoresFile = undefined -- writes to score-XX.csv where XX is unix timestamp: a simple-minded logging -writeScoresFile :: [(Class,Score)] -> IO () -writeScoresFile = undefined +writeScoresFile :: ScoresList -> IO () +writeScoresFile scores = do + timestamp <- round <$> getPOSIXTime + let filename = "scores-" ++ show timestamp ++ ".csv" + writeFile filename (scoresToCSV scores) diff --git a/src/sariulclocks.hs b/src/sariulclocks.hs index f1d2538..7528eed 100644 --- a/src/sariulclocks.hs +++ b/src/sariulclocks.hs @@ -7,12 +7,12 @@ import Types.Scores page :: Html page = body << h1 << "Hello World!" -cgiMain :: [(Class,Score)] -> ([(Class,Score)],CGI CGIResult) +cgiMain :: ScoresList -> (ScoresList, CGI CGIResult) cgiMain scores = (scores, output $ renderHtml page) main :: IO () main = do scores <- readScoresFile - (newScores,cgi) <- cgiMain scores + (newScores, cgi) <- cgiMain scores writeScoresFile newScores runCGI . handleErrors $ cgi |