Server now compiles using abstracted SQLite

[?]
Oct 22, 2014, 2:11 AM
64VI73NPSFNWTL6UXM6YHRFLNJZ3NUJ2R3CL53MO2HSZWFGBIRTQC

Dependencies

  • [2] 64C6AWH6 Rename Ananke -> Quixotic, project reboot.
  • [3] EQXRXRZD Changed to use tasty instead of test-framework
  • [4] NVOCQVAS Initial failing tests.
  • [5] GKGVYBZG Added JSON serialization to TimeLog
  • [6] RSEB2NFG Replacing Snap with Scotty.
  • [7] ADMKQQGC Initial empty Snap project.
  • [8] 4QX5E5AC Initial compilation of payouts function succeeds.

Change contents

  • edit in quixotic.cabal at line 60
    [2.2037]
    [2.2037]
    , sqlite
  • replacement in server/Main.hs at line 1
    [3.5188][3.1279:1314]()
    {-# LANGUAGE OverloadedStrings #-}
    [3.5188]
    [3.5255]
    {-# LANGUAGE ScopedTypeVariables, OverloadedStrings #-}
  • edit in server/Main.hs at line 5
    [3.5260][2.2315:2336]()
    import Control.Monad
  • edit in server/Main.hs at line 9
    [2.2455]
    [2.2455]
    import qualified Data.Text as T
    import qualified Data.Text.Lazy as LT
  • replacement in server/Main.hs at line 12
    [2.2478][2.2478:2502]()
    import Data.Time.Format
    [2.2478]
    [2.2502]
    import Database.SQLite
  • edit in server/Main.hs at line 15
    [2.2543]
    [2.2543]
    import Quixotic.Database.SQLite
  • edit in server/Main.hs at line 23
    [3.1492]
    [2.2594]
    main = do
    db <- openConnection "quixotic.db"
    adb <- sqliteADB db
    dbMain db adb
  • replacement in server/Main.hs at line 28
    [2.2595][2.2595:2625]()
    dbMain :: a -> ADB a -> IO ()
    [2.2595]
    [2.2625]
    dbMain :: a -> ADB IO a -> IO ()
  • replacement in server/Main.hs at line 38
    [3.1816][2.2645:2767]()
    post "/logStart/:btcAddr" $ handleLogRequest adb StartWork
    post "/logEnd/:btcAddr" $ handleLogRequest db StopWork
    [3.1816]
    [3.5695]
    post "/logStart/:btcAddr" $ handleLogRequest db adb StartWork
    post "/logEnd/:btcAddr" $ handleLogRequest db adb StopWork
  • replacement in server/Main.hs at line 41
    [3.5696][2.2768:2808]()
    get "/payouts" $ currentPayouts adb
    [3.5696]
    [3.5717]
    get "/payouts" $ currentPayouts db adb
  • replacement in server/Main.hs at line 43
    [3.5718][2.2809:2904]()
    handleLogRequest :: ADB a -> (UTCTime -> WorkEvent) -> ActionM ()
    handleLogRequest db ev = do
    [3.5718]
    [2.2904]
    handleLogRequest :: a -> ADB IO a -> (UTCTime -> WorkEvent) -> ActionM ()
    handleLogRequest db adb ev = do
  • replacement in server/Main.hs at line 47
    [2.2980][2.2980:3037]()
    liftIO . recordEvent db $ LogEntry addr (ev timestamp)
    [2.2980]
    [3.6062]
    liftIO $ recordEvent adb db $ LogEntry addr (ev timestamp)
  • replacement in server/Main.hs at line 49
    [3.6063][2.3038:3100]()
    currentPayouts :: ADB a -> ActionM ()
    currentPayouts db = do
    [3.6063]
    [2.3100]
    currentPayouts :: a -> ADB IO a -> ActionM ()
    currentPayouts db adb = do
  • replacement in server/Main.hs at line 53
    [2.3188][2.3188:3259]()
    widx <- undefined
    json . PayoutsResponse $ payouts dep ptime widx
    [2.3188]
    [3.6168]
    buildPayoutsResponse :: WorkIndex -> ActionM ()
    buildPayoutsResponse widx = json . PayoutsResponse $ payouts dep ptime widx
  • edit in server/Main.hs at line 57
    [3.6169]
    [2.3260]
    payoutsAction :: EitherT T.Text ActionM WorkIndex
    payoutsAction = mapEitherT liftIO $ readWorkIndex adb db
    eitherT (raise . LT.fromStrict) buildPayoutsResponse payoutsAction
  • edit in src/Quixotic/Database/SQLite.hs at line 1
    [2.3612]
    [2.3613]
    {-# LANGUAGE ScopedTypeVariables, OverloadedStrings #-}
  • replacement in src/Quixotic/Database/SQLite.hs at line 14
    [2.3901][2.3901:3922]()
    import System.Locale
    [2.3901]
    [2.3922]
    import System.Locale (defaultTimeLocale)
  • replacement in src/Quixotic/Database/SQLite.hs at line 16
    [2.3923][2.3923:4032]()
    sqliteADB :: String -> IO (D.ADB IO SQLiteHandle)
    sqliteADB dbName = do
    db <- openConnection "quixotic.db"
    [2.3923]
    [2.4032]
    sqliteADB :: SQLiteHandle -> IO (D.ADB IO SQLiteHandle)
    sqliteADB db = do
    _ <- defineTableOpt db True eventTable
  • replacement in src/Quixotic/Database/SQLite.hs at line 27
    [2.4372][2.4372:4433]()
    readWorkIndex :: SQLiteHandle -> EitherT String IO WorkIndex
    [2.4372]
    [2.4433]
    readWorkIndex :: SQLiteHandle -> EitherT T.Text IO WorkIndex
  • replacement in src/Quixotic/Database/SQLite.hs at line 29
    [2.4455][2.4455:4555]()
    rows <- EitherT $ execStatement db "SELECT btcAddr, event, eventTime from workEvents"
    undefined
    [2.4455]
    [2.4555]
    let baseResult = EitherT $ execStatement db "SELECT btcAddr, event, eventTime from workEvents"
    rows <- bimapEitherT T.pack id baseResult
    return . intervals $ fmap parseRow (join rows)
  • edit in src/Quixotic/Database/SQLite.hs at line 33
    [2.4556]
    [2.4556]
    parseRow :: Row Value -> LogEntry
    parseRow = undefined
  • edit in src/Quixotic/Database.hs at line 6
    [2.5020]
    [2.5020]
    import Data.Text
  • replacement in src/Quixotic/Database.hs at line 11
    [2.5106][2.5106:5159]()
    , readWorkIndex :: a -> EitherT String m WorkIndex
    [2.5106]
    [2.5159]
    , readWorkIndex :: a -> EitherT Text m WorkIndex
  • replacement in src/Quixotic/TimeLog.hs at line 1
    [3.846][3.91:167]()
    {-# LANGUAGE DeriveDataTypeable, ScopedTypeVariables, OverloadedStrings #-}
    [3.846]
    [3.883]
    {-# LANGUAGE ScopedTypeVariables, OverloadedStrings #-}