RPAJLHMTUJU4AYNBOHVGHGGB4NY2NLY3BVPYN5FMWB3ZIMAUQHCQC 4SCFOJGNDAN4XZEAPWQQCBJ3CGZCJP3HUADRQLYZ2ITAKA7EJJTQC O5FVTOM6YFBLEPF3S576K6IMT6ZZ5VQCSB3YVXNS4CKBITKCRZ7AC WO2MINIF4TXOHWSE7JWXRZYN64XRVLYIRFMF4SMPSOXKA2V77KMQC IZEVQF627FA7VV25KJAWYWGGC35LZUUBBQRPN5ZAINTQLPEDRTEAC LAROLAYUGJ4Q5AEFV5EJMIA2ZKBNCBWHHHPCJ3CKCNIUIYUKRFVQC TLQ72DSJD7GGPWN6HGBHAVPBRQFKEQ6KSK43U7JWWID4ZWAF47JAC KNSI575VAW6HRCZYXOEPQ4DTSML4EORML5MV4DJBRKE7TXCPS4EAC A6HKMINBNGQLLX4QJMYWKQ4JAEHVJ4HIRVDKPPDI3FJUO2AAB7OQC FD7SV5I6VCW27HZ3T3K4MMGB2OYGJTPKFFA263TNTAMRJGQJWVNAC Z7KS5XHHC6PAMTVBHXY7KUSS3BWAOU6FSYIITUCFOOJZU4OUJHBAC 64C6AWH66FDKU6UE6Z6JPX2J2GBM2JOPTH2GL6LHKAIUBGNGDZ5AC 5XFJNUAZUCQ3WCGW4QRIAWR764QYDOPHOIVO2TRMGSSG7UDX2M2AC EQXRXRZDYCM7BDAVBOXQYPG6C7IJT3OFGNIXCDAHJJBRKAXNGL7AC SCXG6TJWYIPRUMT27KGKIIF6FYKTUTY74UNZ2FQTT63XZ6HIF3AAC 7XN3I3QJHYMKU2DCUXX34WQMSJ4ZJOWW7FME34EANO3E5W4Q632AC W35DDBFYF6Z4ZPCFEO5RPAONZLYCSNTXUSTS6FIUUVZHCI6Q7GHAC NVOCQVASZWTKQJG7GPH7KHKZZR7NUG4WLV5YY4KAIRPCJRWCZPIAC 75N3UJ4JK56KXF56GASGPAWLFYGJDETVJNYTF4KXFCQM767JUU5AC GKGVYBZGPJXO7N7GLHLRNYQPXFHBQSNQN53OKRFCXLQEYDTC5I4QC HE3JTXO37O4MOMWPZ4BRBHP53KBPZDG3PCSUCVNOKIS7IY26OCIAC OBFPJS2GHO2PEHBHGEHKIUOUAFIQHPIZXEVD2YIE3ZIE2PVMH5VAC PBD7LZYQHXAA3KLH2ZUX5GW4UFML6BQ32KXZF4KZ6OYFASUYFJ5QC 5DRIWGLUKMQZU2ZPBXSTLAWJKAMOD5YXAHM5LEDQHDFGYYLHWCDQC 7KZP4RHZ3QSYTPPQ257A65Z5UPX44TF2LAI2U5EMULQCLDCEUK2AC WZUHEZSBRKHQMNWDKVG4X6DDIQEAXTGI6IGAJ5ERPRQ3W2KUMX4QC ADMKQQGCGVSHHIMVQ4XFRDCG544SBJCYALSKZV45CQQBZ4ACUH2AC 2Y2QZFVFSKXEFEGYJB5A7GI735ONWPCF7DVTIY5T73AUEVTZTBBQC TCOAKCGGHOIRJCTZYEZQ3K6KCGL2LGAYGYFRGSPCHBTJJY2V6AXAC Z3M53KTLZMPOISMHE25SZJSWX5TA37IV33IRE7KNRAD3PKEAEJXQC NJZ3DKZYZTAEHPAEXS3XFWIPCJFR3D4642UQMGQABVFGNKQUEQVAC I2KHGVD44KT4MQJXGCTVSQKMBO6TVCY72F26TLXGWRL6PHGF6RNQC BROSTG5KP3NUNLSYPVQID254TE47E5RKQAKLPIY7PGWETE6JNMTAC XTBSG4C7SCZUFOU2BTNFR6B6TCGYI35BWUV4PVTS3N7KNH5VEARQC findEvents' :: ProjectId -> UserId -> Interval' -> QDBM [LogEntry]findEvents' (ProjectId pid) (UserId uid) ival =let q (Before e) = pquery"SELECT btc_addr, event_type, event_time, event_metadata FROM work_events \\WHERE project_id = ? AND user_id = ? AND event_time <= ?"(pid, uid, PUTCTime e)q (During s e) = pquery"SELECT btc_addr, event_type, event_time, event_metadata FROM work_events \\WHERE project_id = ? AND user_id = ? \\AND event_time >= ? AND event_time <= ?"(pid, uid, PUTCTime s, PUTCTime e)q (After s) = pquery"SELECT btc_addr, event_type, event_time, event_metadata FROM work_events \\WHERE project_id = ? AND user_id = ? AND event_time >= ?"(pid, uid, PUTCTime s)in fmap pLogEntry <$> q ival
base >= 4 && < 5, classy-prelude >= 0.10.1, aeson >= 0.8.0.2, attoparsec >= 0.12.1.2, base64-bytestring >= 1.0.0.1
base >= 4 && < 5, classy-prelude >= 0.10.1, aeson >= 0.8.0.2, attoparsec >= 0.12.1.2, base64-bytestring >= 1.0.0.1
, containers >= 0.5.5.1, configurator, either >= 4.3.1, errors >= 1.4.7, groups >= 0.4, heaps >= 0.3.1, hourglass >= 0.2.6 && < 0.3, lens >= 4.4.0.2, network-bitcoin >= 1.7.0
, containers >= 0.5.5.1, configurator, either >= 4.3.1, errors >= 1.4.7, groups >= 0.4, heaps >= 0.3.1, hourglass >= 0.2.6 && < 0.3, lens >= 4.4.0.2, network-bitcoin >= 1.7.0
loggedIntervalsRoute = serveJSON workIndexJSON $ method GET loggedIntervalsHandler
logEntriesRoute = serveJSON (fmap logEntryJSON) $ method GET logEntriesHandlerlogIntervalsRoute = serveJSON workIndexJSON $ method GET loggedIntervalsHandler--amendEventRoute = void $ method PUT amendEventHandler
, ("projects/:projectId/logEnd/:btcAddr", logEventRoute StopWork), ("projects/:projectId/log/:btcAddr", loggedIntervalsRoute), ("projects/:projectId", projectRoute), ("projects", listProjectsRoute)
, ("projects/:projectId/logEnd/:btcAddr", logEventRoute StopWork), ("projects/:projectId/logEntries", logEntriesRoute), ("projects/:projectId/intervals", logIntervalsRoute)
module Quixotic.Snaplet.Util whereimport ClassyPreludeimport Control.Monad.Trans.Maybeimport Data.ByteString.Char8 as Bimport Data.Time.ISO8601import Data.Thyme.Timeimport Data.Thyme.Clock as Cimport Snap.CoretimeParam :: MonadSnap m => ByteString -> m (Maybe C.UTCTime)timeParam k = runMaybeT $ dobs <- MaybeT $ getParam kt <- MaybeT . pure . parseISO8601 $ B.unpack bspure $ toThyme t
logEntriesHandler :: Handler App App [LogEntry]logEntriesHandler = doQDB{..} <- view qdb <$> with qm get(uid, pid) <- requireProjectAccessendpoints <- (,) <$> timeParam "after" <*> timeParam "before"ival <- case endpoints of(Just s, Just e) -> pure $ During s e(Nothing, Just e) -> pure $ Before e(Just s, Nothing) -> pure $ After s(Nothing, Nothing) -> snapError 400 $ "You must at least one of the \"after\" or \"before\" query parameter"liftPG . runReaderT $ findEvents pid uid ival
-- amendEventHandler :: Handler App App AmendmentId