52 lines
1.1 KiB
Haskell
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
|