diff options
Diffstat (limited to '')
| -rw-r--r-- | lib/Server/Frontend/Ticker.hs | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/lib/Server/Frontend/Ticker.hs b/lib/Server/Frontend/Ticker.hs index 861197a..8813200 100644 --- a/lib/Server/Frontend/Ticker.hs +++ b/lib/Server/Frontend/Ticker.hs @@ -1,13 +1,15 @@ -{-# LANGUAGE QuasiQuotes #-} +{-# LANGUAGE BlockArguments #-} +{-# LANGUAGE QuasiQuotes #-} module Server.Frontend.Ticker (tickerWidget, postTickerAnnounceR, postTickerDeleteR) where -import Data.Functor ((<&>)) -import Data.Time (getCurrentTime) -import Persist (EntityField (TickerAnnouncementArchived), - TickerAnnouncement (..)) -import Server.Frontend.Routes (FrontendMessage (..), Handler, - Route (..), Widget) -import Yesod +import Data.Functor ((<&>)) +import Data.Time (getCurrentTime) +import Database.Esqueleto.Experimental hiding ((<&>)) +import Persist (EntityField (TickerAnnouncementArchived), + TickerAnnouncement (..)) +import Server.Frontend.Routes (FrontendMessage (..), Handler, + Route (..), Widget) +import Yesod hiding (update, (=.), (==.)) tickerAnnounceForm @@ -24,7 +26,10 @@ tickerAnnounceForm maybeCurrent = renderDivs $ TickerAnnouncement tickerWidget :: Handler Html tickerWidget = do - current <- runDB $ selectFirst [ TickerAnnouncementArchived ==. False ] [] + current <- runDB $ selectOne do + ann <- from (table @TickerAnnouncement) + where_ (ann ^. TickerAnnouncementArchived ==. val False) + pure ann (widget, enctype) <- generateFormPost (tickerAnnounceForm (current <&> entityVal)) @@ -40,13 +45,19 @@ tickerWidget = do postTickerAnnounceR :: Handler Html postTickerAnnounceR = do - current <- runDB $ selectFirst [ TickerAnnouncementArchived ==. False ] [] + current <- runDB $ selectOne do + ann <- from (table @TickerAnnouncement) + where_ (ann ^. TickerAnnouncementArchived ==. val False) + pure ann + ((result, widget), enctype) <- - runFormPost (tickerAnnounceForm (current <&> entityVal)) + runFormPost (tickerAnnounceForm (fmap entityVal current)) + case result of FormSuccess ann -> do - runDB $ do - updateWhere [] [ TickerAnnouncementArchived =. True ] + runDB do + update \t -> + set t [ TickerAnnouncementArchived =. val True ] insert ann redirect RootR _ -> defaultLayout @@ -59,5 +70,6 @@ postTickerAnnounceR = do postTickerDeleteR :: Handler Html postTickerDeleteR = do - runDB $ updateWhere [] [ TickerAnnouncementArchived =. True ] + runDB $ update \t -> + set t [TickerAnnouncementArchived =. val True] redirect RootR |
