packages feed

composite-ekg 0.2.0.0 → 0.3.0.0

raw patch · 2 files changed

+9/−12 lines, 2 filesdep −Framesdep −basic-preludePVP ok

version bump matches the API change (PVP)

Dependencies removed: Frames, basic-prelude

API changes (from Hackage documentation)

- Composite.Ekg: instance (Composite.Ekg.EkgMetric a, Composite.Ekg.EkgMetric (Frames.Rec.Record rs), Composite.Base.NamedField (s Frames.Col.:-> a)) => Composite.Ekg.EkgMetric (Frames.Rec.Record (s Frames.Col.:-> a : rs))
- Composite.Ekg: instance Composite.Ekg.EkgMetric (Frames.Rec.Record '[])
+ Composite.Ekg: instance (Composite.Ekg.EkgMetric a, Composite.Ekg.EkgMetric (Composite.Record.Record rs), GHC.TypeLits.KnownSymbol s) => Composite.Ekg.EkgMetric (Composite.Record.Record (s Composite.Record.:-> a : rs))
+ Composite.Ekg: instance Composite.Ekg.EkgMetric (Composite.Record.Record '[])

Files

composite-ekg.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack  name:           composite-ekg-version:        0.2.0.0+version:        0.3.0.0 synopsis:       EKG Metrics for Vinyl/Frames records description:    Integration between EKG and Vinyl/Frames records allowing records holding registered metrics to be easily constructed from a type declaration. category:       Records@@ -18,15 +18,13 @@ library   hs-source-dirs:       src-  default-extensions: DataKinds FlexibleContexts FlexibleInstances GeneralizedNewtypeDeriving MultiParamTypeClasses NoImplicitPrelude OverloadedStrings PolyKinds ScopedTypeVariables StandaloneDeriving StrictData TemplateHaskell TupleSections TypeFamilies TypeOperators ViewPatterns+  default-extensions: DataKinds FlexibleContexts FlexibleInstances GeneralizedNewtypeDeriving MultiParamTypeClasses OverloadedStrings PolyKinds ScopedTypeVariables StandaloneDeriving StrictData TemplateHaskell TupleSections TypeFamilies TypeOperators ViewPatterns   ghc-options: -Wall -O2   build-depends:       base >= 4.7 && < 5-    , basic-prelude     , composite-base     , ekg     , ekg-core-    , Frames     , lens     , text     , vinyl
src/Composite/Ekg.hs view
@@ -1,14 +1,13 @@ module Composite.Ekg (EkgMetric(ekgMetric)) where -import BasicPrelude-import Composite.Base (NamedField(fieldName))-import Control.Lens (view, _Unwrapped)+import Composite.Record ((:->)(Val), Rec((:&), RNil), Record) import Data.Char (isUpper, toLower)+import Data.Functor.Identity (Identity(Identity))+import Data.Monoid ((<>)) import qualified Data.Text as Text import Data.Proxy (Proxy(Proxy))-import Data.Vinyl.Core (Rec((:&), RNil))-import Data.Vinyl.Functor (Identity(Identity))-import Frames (Record, (:->))+import Data.Text (Text, pack)+import GHC.TypeLits (KnownSymbol, symbolVal) import System.Metrics (Store, createCounter, createGauge, createLabel, createDistribution) import System.Metrics.Counter (Counter) import System.Metrics.Gauge (Gauge)@@ -44,10 +43,10 @@ class EkgMetric a where   ekgMetric :: Text -> Store -> IO a -instance forall a s rs. (EkgMetric a, EkgMetric (Record rs), NamedField (s :-> a)) => EkgMetric (Record ((s :-> a) ': rs)) where+instance forall a s rs. (EkgMetric a, EkgMetric (Record rs), KnownSymbol s) => EkgMetric (Record ((s :-> a) ': rs)) where   ekgMetric prefix store =     (:&)-      <$> (Identity . view _Unwrapped <$> ekgMetric (prefix <> "." <> (upperScores . fieldName) (Proxy :: Proxy (s :-> a))) store)+      <$> (Identity . Val <$> ekgMetric (prefix <> "." <> (upperScores . pack . symbolVal) (Proxy :: Proxy s)) store)       <*> ekgMetric prefix store  instance EkgMetric (Record '[]) where