bein-0.3: Bein/Web/Pages/New.hs
module Bein.Web.Pages.New where
import Bein.Web.Types
import Bein.Web.Commands
import Happstack.Server
import Database.HDBC
import Control.Monad.Trans
import Bein.Web.Pages.Login
newObject :: BeinServerPart Response
newObject = authenticated $ do newId <- path createObject
newUrl <- fullUrl ("/" ++ show newId)
seeOther newUrl (toResponse "Redirecting...")
createObject :: String -> BeinServerPart Int
createObject typeToCreate =
asksUser >>= \user -> lift $ updateWithResponse "select new_object(?,?)" [toSql typeToCreate, toSql (uid user)] >>= \r ->
case r of
[] -> error "Did not receive value back from database in createObject!"
[[newId]] -> return (fromSql newId)
_ -> error "Received multiple rows from database in createObject!"