module Handler.Item where import Import getItemR :: ItemId -> Handler TypedContent getItemR itemId = do entity <- runDB $ withType =<< Entity itemId <$> get404 itemId selectRep $ do provideJson entity provideRep (redirect $ InventoryListingR :#: itemId :: Handler Html) putItemR :: ItemId -> Handler Value putItemR itemId = do (Item{..} `WithType` t) <- requireCheckJsonBody returnJson <=< runDB $ do entity <- Entity itemId <$> (updateGet itemId [ ItemKind =. itemKind , ItemNormKind =. itemNormKind , ItemBought =. itemBought , ItemExpires =. itemExpires , ItemOpened =. itemOpened ]) update (itemFkType $ entityVal entity) [ KindType =. t ] withType entity patchItemR :: ItemId -> Handler Value patchItemR itemId = do (itemUpdates, typeUpdates) <- toUpdate <$> (requireCheckJsonBody :: Handler ItemDiffs) returnJson <=< runDB $ do entity <- Entity itemId <$> updateGet itemId itemUpdates update (itemFkType $ entityVal entity) typeUpdates withType entity deleteItemR :: ItemId -> Handler () deleteItemR = runDB . delete