module Handler.Item where import Import getItemR :: ItemId -> Handler TypedContent getItemR itemId = do eLookup <- runDB $ fmap (Entity itemId) <$> get itemId case eLookup of Nothing -> notFound Just entity -> selectRep $ do provideJson entity provideRep (redirect $ InventoryListingR :#: itemId :: Handler Html) putItemR :: ItemId -> Handler Value putItemR itemId = do Item{..} <- requireCheckJsonBody returnJson . Entity itemId =<< runDB (updateGet itemId [ ItemKind =. itemKind , ItemNormKind =. itemNormKind , ItemBought =. itemBought , ItemExpires =. itemExpires , ItemOpened =. itemOpened ]) patchItemR :: ItemId -> Handler Value patchItemR itemId = do diffs <- (requireCheckJsonBody :: Handler ItemDiffs) returnJson . Entity itemId =<< runDB (updateGet itemId $ toUpdate diffs) deleteItemR :: ItemId -> Handler () deleteItemR = runDB . delete