{-# 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