{-# LANGUAGE RankNTypes #-} module Database.InfluxDB.Lens ( credentials, user, password ) where import Control.Applicative import Data.Text (Text) import Database.InfluxDB.Http type Lens s t a b = Functor f => (a -> f b) -> s -> f t type Lens' s a = Lens s s a a credentials :: Lens' Config Credentials credentials f r = set <$> f (configCreds r) where set c = r { configCreds = c } user :: Lens' Credentials Text user f c = set <$> f (credsUser c) where set u = c { credsUser = u } password :: Lens' Credentials Text password f s = set <$> f (credsPassword s) where set p = s { credsPassword = p }