aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--sariulclocks.cabal2
-rw-r--r--src/Types/Classes.hs4
-rw-r--r--src/Utils/ScoresFile.hs19
-rw-r--r--src/sariulclocks.hs4
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