The route-based logStart/logStop is nicer.
[?]
Oct 20, 2016, 3:57 AM
UILI6PILCRDPZ3XYA54LGIGPSU7ERWNHCE7R3CE64ZEC7ONOEMOQCDependencies
- [2]
BWN72T44Don't accept work timestamp from an external source. - [3]
O5FVTOM6Undo JSON silliness, enable a couple more routes. - [4]
POX3UAMTEnabling logging of time to contributor/project accounts - [5]
2XQD6KKKAdd invitation logic and clean up DBProg error handling. - [6]
RPAJLHMTChange to use UUIDs instead of ints for primary keys. - [7]
RN7EI6INUpdate database layer to use CreditTo - [8]
O722AOKEAdd route to allow crediting of events to users/projects. - [9]
MGOF7IUFUpdate TASKS list to reflect completed projects. - [10]
NEDDHXUKReformat via stylish-haskell - [11]
BROSTG5KBeginning of modularization of server. - [*]
W35DDBFYFactor common JSON conversions up into client lib module. - [*]
QMRKFEPGRefactor QDB to use a free monad algebra instead. - [*]
ADMKQQGCInitial empty Snap project.
Change contents
- replacement in lib/Aftok/Json.hs at line 250
parseLogEntry :: Value -> Parser (C.UTCTime -> LogEntry)parseLogEntry = unversion parseLogEntry' whereparseLogEntry :: (C.UTCTime -> LogEvent) -> Value -> Parser (C.UTCTime -> LogEntry)parseLogEntry f = unversion parseLogEntry' where - edit in lib/Aftok/Json.hs at line 254
eventCtr <- x .: "eventType" >>= nameEvent - replacement in lib/Aftok/Json.hs at line 255
pure $ \t -> LogEntry creditTo' (eventCtr t) eventMeta'pure $ \t -> LogEntry creditTo' (f t) eventMeta' - edit in server/Aftok/Snaplet/WorkLog.hs at line 27
uid <- requireUserIdpid <- requireProjectIdrequestBody <- readRequestBody 4096timestamp <- liftIO C.getCurrentTimecase A.eitherDecode requestBody >>= parseEither (parseLogEntry evCtr) ofLeft err -> snapError 400 $ "Unable to parse log entry " <> (tshow requestBody) <> ": " <> tshow errRight entry -> snapEval $ createEvent pid uid (entry timestamp)logWorkBTCHandler :: (C.UTCTime -> LogEvent) -> Handler App App EventIdlogWorkBTCHandler evCtr = do - edit in server/Aftok/Snaplet/WorkLog.hs at line 48
recordLogEntryHandler :: Handler App App EventIdrecordLogEntryHandler = douid <- requireUserIdpid <- requireProjectIdrequestBody <- readRequestBody 4096timestamp <- liftIO C.getCurrentTimecase A.eitherDecode requestBody >>= parseEither parseLogEntry ofLeft err -> snapError 400 $ "Unable to parse log entry " <> (tshow requestBody) <> ": " <> tshow errRight entry -> snapEval $ createEvent pid uid (entry timestamp) - replacement in server/Main.hs at line 48
recordLogEntryRoute = serveJSON eventIdJSON $ method POST recordLogEntryHandlerlogWorkBTCRoute f = serveJSON eventIdJSON $ method POST (logWorkBTCHandler f) - replacement in server/Main.hs at line 68
, ("projects/:projectId/logStart/:btcAddr", logWorkRoute StartWork), ("projects/:projectId/logEnd/:btcAddr", logWorkRoute StopWork), ("projects/:projectId/logWorkEvent", recordLogEntryRoute), ("projects/:projectId/logStart", logWorkRoute StartWork), ("projects/:projectId/logEnd", logWorkRoute StopWork), ("projects/:projectId/logStart/:btcAddr", logWorkBTCRoute StartWork), ("projects/:projectId/logEnd/:btcAddr", logWorkBTCRoute StopWork)