module Yesod.Core.Lens
  ( envL
  , siteL
  ) where

import Freckle.App.Prelude

import Control.Lens (Lens', lens)
import Yesod.Core.Types (HandlerData, RunHandlerEnv, handlerEnv, rheSite)

envL :: Lens' (HandlerData child site) (RunHandlerEnv child site)
envL :: (RunHandlerEnv child site -> f (RunHandlerEnv child site))
-> HandlerData child site -> f (HandlerData child site)
envL = (HandlerData child site -> RunHandlerEnv child site)
-> (HandlerData child site
    -> RunHandlerEnv child site -> HandlerData child site)
-> Lens
     (HandlerData child site)
     (HandlerData child site)
     (RunHandlerEnv child site)
     (RunHandlerEnv child site)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens HandlerData child site -> RunHandlerEnv child site
forall child site.
HandlerData child site -> RunHandlerEnv child site
handlerEnv ((HandlerData child site
  -> RunHandlerEnv child site -> HandlerData child site)
 -> Lens
      (HandlerData child site)
      (HandlerData child site)
      (RunHandlerEnv child site)
      (RunHandlerEnv child site))
-> (HandlerData child site
    -> RunHandlerEnv child site -> HandlerData child site)
-> Lens
     (HandlerData child site)
     (HandlerData child site)
     (RunHandlerEnv child site)
     (RunHandlerEnv child site)
forall a b. (a -> b) -> a -> b
$ \HandlerData child site
x RunHandlerEnv child site
y -> HandlerData child site
x { handlerEnv :: RunHandlerEnv child site
handlerEnv = RunHandlerEnv child site
y }

siteL :: Lens' (RunHandlerEnv child site) site
siteL :: (site -> f site)
-> RunHandlerEnv child site -> f (RunHandlerEnv child site)
siteL = (RunHandlerEnv child site -> site)
-> (RunHandlerEnv child site -> site -> RunHandlerEnv child site)
-> Lens
     (RunHandlerEnv child site) (RunHandlerEnv child site) site site
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens RunHandlerEnv child site -> site
forall child site. RunHandlerEnv child site -> site
rheSite ((RunHandlerEnv child site -> site -> RunHandlerEnv child site)
 -> Lens
      (RunHandlerEnv child site) (RunHandlerEnv child site) site site)
-> (RunHandlerEnv child site -> site -> RunHandlerEnv child site)
-> Lens
     (RunHandlerEnv child site) (RunHandlerEnv child site) site site
forall a b. (a -> b) -> a -> b
$ \RunHandlerEnv child site
x site
y -> RunHandlerEnv child site
x { rheSite :: site
rheSite = site
y }