{-# OPTIONS_GHC -fno-warn-orphans #-} module Application ( with~sitearg~ , withDevelAppPort ) where import Import import Settings import Settings.StaticFiles (staticSite) import Yesod.Auth import Yesod.Default.Config import Yesod.Default.Main import Yesod.Default.Handlers import Data.Dynamic (Dynamic, toDyn) #if DEVELOPMENT import Yesod.Logger (Logger, logBS, flushLogger) import Network.Wai.Middleware.RequestLogger (logHandleDev) #else import Yesod.Logger (Logger) import Network.Wai.Middleware.RequestLogger (logStdout) #endif import qualified Database.Persist.Base~importMigration~ -- Import all relevant handler modules here. import Handler.Root -- This line actually creates our YesodSite instance. It is the second half -- of the call to mkYesodData which occurs in Foundation.hs. Please see -- the comments there for more details. mkYesodDispatch "~sitearg~" resources~sitearg~ -- This function allocates resources (such as a database connection pool), -- performs initialization and creates a WAI application. This is also the -- place to put your migrate statements to have automatic database -- migrations handled by Yesod. with~sitearg~ :: AppConfig DefaultEnv () -> Logger -> (Application -> IO ()) -> IO () with~sitearg~ conf logger f = do s <- staticSite dbconf <- withYamlEnvironment "config/~dbConfigFile~.yml" (appEnv conf) $ either error return . Database.Persist.Base.loadConfig Database.Persist.Base.withPool (dbconf :: Settings.PersistConfig) $ \p -> do~runMigration~ let h = ~sitearg~ conf logger s p defaultRunner (f . logWare) h where #ifdef DEVELOPMENT logWare = logHandleDev (\msg -> logBS logger msg >> flushLogger logger) #else logWare = logStdout #endif -- for yesod devel withDevelAppPort :: Dynamic withDevelAppPort = toDyn $ defaultDevelApp with~sitearg~