packages feed

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!"