{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Handler.Edit where
import Database.Persist.Sql
import Import
deleteDeleteR :: Int64 -> Handler Html
deleteDeleteR :: Int64 -> Handler Html
deleteDeleteR Int64
bid = do
UserId
userId <- HandlerFor App UserId
HandlerFor App (AuthId (HandlerSite (HandlerFor App)))
forall (m :: * -> *).
(MonadHandler m, YesodAuth (HandlerSite m)) =>
m (AuthId (HandlerSite m))
requireAuthId
YesodDB App () -> HandlerFor App ()
forall a. YesodDB App a -> HandlerFor App a
forall site a.
YesodPersist site =>
YesodDB site a -> HandlerFor site a
runDB do
let k_bid :: Key Bookmark
k_bid = Int64 -> Key Bookmark
forall record.
ToBackendKey SqlBackend record =>
Int64 -> Key record
toSqlKey Int64
bid
Bookmark
_ <- UserId -> Key Bookmark -> DBM (HandlerFor App) Bookmark
requireResource UserId
userId Key Bookmark
k_bid
Key Bookmark -> ReaderT SqlBackend (HandlerFor App) ()
forall backend record (m :: * -> *).
(PersistStoreWrite backend, MonadIO m,
PersistRecordBackend record backend) =>
Key record -> ReaderT backend m ()
forall record (m :: * -> *).
(MonadIO m, PersistRecordBackend record SqlBackend) =>
Key record -> ReaderT SqlBackend m ()
delete Key Bookmark
k_bid
Html -> Handler Html
forall a. a -> HandlerFor App a
forall (m :: * -> *) a. Monad m => a -> m a
return Html
""
postReadR :: Int64 -> Handler Html
postReadR :: Int64 -> Handler Html
postReadR Int64
bid = do
UserId
userId <- HandlerFor App UserId
HandlerFor App (AuthId (HandlerSite (HandlerFor App)))
forall (m :: * -> *).
(MonadHandler m, YesodAuth (HandlerSite m)) =>
m (AuthId (HandlerSite m))
requireAuthId
YesodDB App () -> HandlerFor App ()
forall a. YesodDB App a -> HandlerFor App a
forall site a.
YesodPersist site =>
YesodDB site a -> HandlerFor site a
runDB do
let k_bid :: Key Bookmark
k_bid = Int64 -> Key Bookmark
forall record.
ToBackendKey SqlBackend record =>
Int64 -> Key record
toSqlKey Int64
bid
Bookmark
_ <- UserId -> Key Bookmark -> DBM (HandlerFor App) Bookmark
requireResource UserId
userId Key Bookmark
k_bid
Key Bookmark
-> [Update Bookmark] -> ReaderT SqlBackend (HandlerFor App) ()
forall backend record (m :: * -> *).
(PersistStoreWrite backend, MonadIO m,
PersistRecordBackend record backend) =>
Key record -> [Update record] -> ReaderT backend m ()
forall record (m :: * -> *).
(MonadIO m, PersistRecordBackend record SqlBackend) =>
Key record -> [Update record] -> ReaderT SqlBackend m ()
update Key Bookmark
k_bid [EntityField Bookmark Bool
forall typ. (typ ~ Bool) => EntityField Bookmark typ
BookmarkToRead EntityField Bookmark Bool -> Bool -> Update Bookmark
forall v typ.
PersistField typ =>
EntityField v typ -> typ -> Update v
=. Bool
False]
Html -> Handler Html
forall a. a -> HandlerFor App a
forall (m :: * -> *) a. Monad m => a -> m a
return Html
""
postStarR :: Int64 -> Handler Html
postStarR :: Int64 -> Handler Html
postStarR Int64
bid = Int64 -> Bool -> Handler Html
_setSelected Int64
bid Bool
True
postUnstarR :: Int64 -> Handler Html
postUnstarR :: Int64 -> Handler Html
postUnstarR Int64
bid = Int64 -> Bool -> Handler Html
_setSelected Int64
bid Bool
False
_setSelected :: Int64 -> Bool -> Handler Html
_setSelected :: Int64 -> Bool -> Handler Html
_setSelected Int64
bid Bool
selected = do
UserId
userId <- HandlerFor App UserId
HandlerFor App (AuthId (HandlerSite (HandlerFor App)))
forall (m :: * -> *).
(MonadHandler m, YesodAuth (HandlerSite m)) =>
m (AuthId (HandlerSite m))
requireAuthId
YesodDB App () -> HandlerFor App ()
forall a. YesodDB App a -> HandlerFor App a
forall site a.
YesodPersist site =>
YesodDB site a -> HandlerFor site a
runDB do
let k_bid :: Key Bookmark
k_bid = Int64 -> Key Bookmark
forall record.
ToBackendKey SqlBackend record =>
Int64 -> Key record
toSqlKey Int64
bid
Bookmark
bm <- UserId -> Key Bookmark -> DBM (HandlerFor App) Bookmark
requireResource UserId
userId Key Bookmark
k_bid
Key Bookmark
-> [Update Bookmark] -> ReaderT SqlBackend (HandlerFor App) ()
forall backend record (m :: * -> *).
(PersistStoreWrite backend, MonadIO m,
PersistRecordBackend record backend) =>
Key record -> [Update record] -> ReaderT backend m ()
forall record (m :: * -> *).
(MonadIO m, PersistRecordBackend record SqlBackend) =>
Key record -> [Update record] -> ReaderT SqlBackend m ()
update Key Bookmark
k_bid [EntityField Bookmark Bool
forall typ. (typ ~ Bool) => EntityField Bookmark typ
BookmarkSelected EntityField Bookmark Bool -> Bool -> Update Bookmark
forall v typ.
PersistField typ =>
EntityField v typ -> typ -> Update v
=. Bool
selected]
Html -> Handler Html
forall a. a -> HandlerFor App a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Html
""
requireResource :: UserId -> Key Bookmark -> DBM Handler Bookmark
requireResource :: UserId -> Key Bookmark -> DBM (HandlerFor App) Bookmark
requireResource UserId
userId Key Bookmark
k_bid = do
Bookmark
bmark <- Key Bookmark -> SqlPersistT (HandlerFor App) Bookmark
forall (m :: * -> *) backend val.
(MonadIO m, PersistStoreRead backend,
PersistRecordBackend val backend) =>
Key val -> ReaderT backend m val
get404 Key Bookmark
k_bid
if UserId
userId UserId -> UserId -> Bool
forall a. Eq a => a -> a -> Bool
== Bookmark -> UserId
bookmarkUserId Bookmark
bmark
then Bookmark -> SqlPersistT (HandlerFor App) Bookmark
forall a. a -> ReaderT SqlBackend (HandlerFor App) a
forall (m :: * -> *) a. Monad m => a -> m a
return Bookmark
bmark
else SqlPersistT (HandlerFor App) Bookmark
forall (m :: * -> *) a. MonadHandler m => m a
notFound