Skip to content

Instantly share code, notes, and snippets.

@lorenzo
Last active May 12, 2017 14:08
Show Gist options
  • Save lorenzo/3c1b4733f16d41535a0c26bc94c8c9eb to your computer and use it in GitHub Desktop.
Save lorenzo/3c1b4733f16d41535a0c26bc94c8c9eb to your computer and use it in GitHub Desktop.
share
[mkPersist sqlSettings, mkMigrate "migrateAll"]
[persistLowerCase|
Run
match Text
groupName Text
concurrency Int
created UTCTime
deriving Eq Show Generic
Rollup
runId RunId Maybe
hits Int
maxTime Double
meanTime Double
minTime Double
totalTime Double
variance Double
successHits Int
userErrorHits Int
serverErrorHits Int
failedHits Int
quantile95 Double
deriving Eq Show Generic
Page
runId RunId Maybe
url Text Maybe
hits Int
maxTime Double
meanTime Double
minTime Double
totalTime Double
variance Double
successHits Int
userErrorHits Int
serverErrorHits Int
failedHits Int
quantile95 Double
deriving Eq Show Generic
|]
findRunStats
:: MonadIO m
=> Key Run -> SqlReadT m [Rollup]
findRunStats runId = do
rows <-
select $
from $ \rollup -> do
where_ (rollup ^. RollupRunId ==. just (val runId))
groupBy (rollup ^. RollupId)
return
( coalesceDefault [avg_ (rollup ^. RollupHits)] (val 0)
, coalesceDefault [max_ (rollup ^. RollupMaxTime)] (val 0)
, coalesceDefault [avg_ (rollup ^. RollupMeanTime)] (val 0)
, coalesceDefault [min_ (rollup ^. RollupMinTime)] (val 0)
, coalesceDefault [sum_ (rollup ^. RollupTotalTime)] (val 0)
, coalesceDefault [avg_ (rollup ^. RollupVariance)] (val 0)
, coalesceDefault [sum_ (rollup ^. RollupSuccessHits)] (val 0)
, coalesceDefault [sum_ (rollup ^. RollupUserErrorHits)] (val 0)
, coalesceDefault [sum_ (rollup ^. RollupServerErrorHits)] (val 0)
, coalesceDefault [sum_ (rollup ^. RollupFailedHits)] (val 0)
, coalesceDefault [avg_ (rollup ^. RollupQuantile95)] (val 0))
return (fmap buildRollup rows)
where
buildRollup = curry11 (Rollup Nothing)
curry11 func (Value a, Value b, Value c, Value d, Value e, Value f, Value g, Value h, Value i, Value j, Value k) =
func a b c d e f g h i j k
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment