{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE OverloadedStrings #-} module YesodDsl.Generator.Require where import YesodDsl.AST import Text.Shakespeare.Text hiding (toText) import qualified Data.Text as T import YesodDsl.Generator.Common import YesodDsl.Generator.Esqueleto import Control.Monad.Reader requireStmts :: [Stmt] -> String requireStmts ps = concatMap f $ zip ([1..] :: [Int]) ps where f (requireId,(Require sq)) = runReader (do mw <- case sqWhere sq of Just expr -> do e <- hsExpr 0 expr return $ "where_ (" ++ e ++ ")\n" Nothing -> return "" jes <- liftM concat $ mapM mapJoinExpr (reverse $ sqJoins sq) return $ let maybeWhere = mw (selectEntity, selectVar) = sqFrom sq joinExprs = jes in T.unpack $(codegenFile "codegen/require-select-query.cg")) (emptyContext { ctxNames = sqAliases sq }) f _ = ""