module Yesod.Crud.Internal where

-- import ClassyPrelude.Yesod
-- import Yesod.Core
-- import Yesod.Core.Types
-- import qualified Network.Wai as W
-- 
-- subHelper :: Monad m 
--           => HandlerT child (HandlerT parent m) TypedContent
--           -> YesodSubRunnerEnv child parent (HandlerT parent m)
--           -> Maybe (Route child)
--           -> W.Application
-- subHelper handlert YesodSubRunnerEnv {..} route =
--     ysreParentRunner base ysreParentEnv (fmap ysreToParentRoute route)
--   where
--     base = stripHandlerT (fmap toTypedContent handlert) ysreGetSub ysreToParentRoute route
-- 
-- stripHandlerT :: HandlerT child (HandlerT parent m) a
--               -> (parent -> child)
--               -> (Route child -> Route parent)
--               -> Maybe (Route child)
--               -> HandlerT parent m a
-- stripHandlerT (HandlerT f) getSub toMaster newRoute = HandlerT $ \hd -> do
--     let env = handlerEnv hd
--     ($ hd) $ unHandlerT $ f hd
--         { handlerEnv = env
--             { rheSite = getSub $ rheSite env
--             , rheRoute = newRoute
--             , rheRender = \url params -> rheRender env (toMaster url) params
--             }
--         , handlerToParent = toMaster
--         }