time-wasting-thread-memorial/web/src/Main.hs

34 lines
1.4 KiB
Haskell
Raw Normal View History

2015-07-28 05:03:13 +00:00
{-# LANGUAGE OverloadedStrings #-}
module Main where
2015-07-28 15:38:30 +00:00
import Data.Text.Lazy (toStrict)
2015-07-28 14:28:03 +00:00
import qualified Database.SQLite.Simple as Db
import qualified Network.Wai.Middleware.RequestLogger as RequestLogger
import qualified Network.Wai.Middleware.Static as Static
2015-07-28 15:38:30 +00:00
import Text.Blaze.Html.Renderer.Text
import Web.Spock.Safe ((<//>))
2015-07-28 14:28:03 +00:00
import qualified Web.Spock.Safe as S hiding (head)
import qualified Within.DBMemorial.Post as Post
2015-07-28 15:38:30 +00:00
import qualified Within.DBMemorial.User as User
import qualified Within.DBMemorial.Views.Materialize as Materialize
2015-07-28 05:03:13 +00:00
main :: IO ()
2015-07-28 05:54:37 +00:00
main = do
2015-07-28 06:29:29 +00:00
conn <- Db.open "../db/posts.db"
2015-07-28 05:54:37 +00:00
-- Simple tests to prove we're reading from SQLite
r <- Db.query_ conn "SELECT * FROM Posts WHERE page=1" :: IO [Post.Post]
2015-07-28 05:54:37 +00:00
let h = head r
-- Set up the URL router
2015-07-28 06:29:29 +00:00
S.runSpock 5000 $ S.spockT id $ do
2015-07-28 14:28:03 +00:00
S.middleware $ Static.staticPolicy $ Static.addBase "public"
S.middleware $ RequestLogger.logStdout
2015-07-28 15:43:49 +00:00
2015-07-28 06:29:29 +00:00
S.get S.root $
2015-07-28 15:38:30 +00:00
S.html $ toStrict (renderHtml (Materialize.base "The OP" (Post.render h)))
{-S.get ("users" <//> S.var) $ \id ->
S.text renderHtml $ User.render $ do
res <- Db.query_ conn "SELECT * FROM Users WHERE id=?" id :: IO [User.User]
head res-}