espial/src/Handler/Edit.hs
Jon Schoning 2e3e7097e6 init
2019-01-30 20:54:47 -06:00

52 lines
1.1 KiB
Haskell

{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Handler.Edit where
import Database.Persist.Sql
import Import
-- routes
deleteDeleteR :: Int64 -> Handler Html
deleteDeleteR bid = do
userId <- requireAuthId
runDB $ do
let k_bid = BookmarkKey bid
_ <- requireResource userId k_bid
deleteCascade k_bid
return ""
postReadR :: Int64 -> Handler Html
postReadR bid = do
userId <- requireAuthId
runDB $ do
let k_bid = BookmarkKey bid
_ <- requireResource userId k_bid
update k_bid [BookmarkToRead =. False]
return ""
postStarR :: Int64 -> Handler Html
postStarR bid = _setSelected bid True
postUnstarR :: Int64 -> Handler Html
postUnstarR bid = _setSelected bid False
-- common
_setSelected :: Int64 -> Bool -> Handler Html
_setSelected bid selected = do
userId <- requireAuthId
runDB $ do
let k_bid = BookmarkKey bid
bm <- requireResource userId k_bid
update k_bid [BookmarkSelected =. selected]
pure ""
requireResource :: UserId -> Key Bookmark -> DBM Handler Bookmark
requireResource userId k_bid = do
bmark <- get404 k_bid
if userId == bookmarkUserId bmark
then return bmark
else notFound