@@ -109,12 +109,14 @@ type API =
109109type DecksAPI =
110110 Get '[JSON ] [WithId DeckId Deck ] :<|>
111111 ReqBody '[JSON ] Deck :> Post '[JSON ] (WithId DeckId Deck ) :<|>
112- Capture " deck_id" DeckId :> ReqBody '[JSON ] Deck :> Put '[JSON ] (WithId DeckId Deck )
112+ Capture " deck_id" DeckId :> ReqBody '[JSON ] Deck :> Put '[JSON ] (WithId DeckId Deck ) :<|>
113+ Capture " deck_id" DeckId :> Delete '[JSON ] ()
113114
114115type SlidesAPI =
115116 Get '[JSON ] [WithId SlideId Slide ] :<|>
116117 ReqBody '[JSON ] Slide :> Post '[JSON ] (WithId SlideId Slide ) :<|>
117- Capture " slide_id" SlideId :> ReqBody '[JSON ] Slide :> Put '[JSON ] (WithId SlideId Slide )
118+ Capture " slide_id" SlideId :> ReqBody '[JSON ] Slide :> Put '[JSON ] (WithId SlideId Slide ) :<|>
119+ Capture " slide_id" SlideId :> Delete '[JSON ] ()
118120
119121api :: Proxy API
120122api = Proxy
@@ -129,8 +131,16 @@ application env = Servant.serve api (server env)
129131server :: Aws. Env -> Servant. Server API
130132server env = serveDecks :<|> serveSlides
131133 where
132- serveDecks = decksGet env :<|> decksPost env :<|> decksPut env
133- serveSlides = slidesGet env :<|> slidesPost env :<|> slidesPut env
134+ serveDecks =
135+ decksGet env :<|>
136+ decksPost env :<|>
137+ decksPut env :<|>
138+ decksDelete env
139+ serveSlides =
140+ slidesGet env :<|>
141+ slidesPost env :<|>
142+ slidesPut env :<|>
143+ slidesDelete env
134144
135145decksGet :: Aws. Env -> Servant. Handler [WithId DeckId Deck ]
136146decksGet env = do
@@ -180,6 +190,19 @@ decksPut env deckId deck = do
180190
181191 pure $ WithId deckId deck
182192
193+ decksDelete :: Aws. Env -> DeckId -> Servant. Handler ()
194+ decksDelete env deckId = do
195+
196+ res <- runAWS env $ Aws. send $ DynamoDB. deleteItem " Decks" &
197+ DynamoDB. diKey .~ HMS. singleton " DeckId"
198+ (deckIdToAttributeValue deckId)
199+
200+ case res of
201+ Right {} -> pure ()
202+ Left e -> do
203+ liftIO $ print e
204+ Servant. throwError Servant. err500
205+
183206runAWS :: MonadIO m => Aws. Env -> Aws. AWS a -> m (Either SomeException a )
184207runAWS env =
185208 liftIO .
@@ -238,6 +261,19 @@ slidesPut env slideId slide = do
238261
239262 pure $ WithId slideId slide
240263
264+ slidesDelete :: Aws. Env -> SlideId -> Servant. Handler ()
265+ slidesDelete env slideId = do
266+
267+ res <- runAWS env $ Aws. send $ DynamoDB. deleteItem " Slides" &
268+ DynamoDB. diKey .~ HMS. singleton " SlideId"
269+ (slideIdToAttributeValue slideId)
270+
271+ case res of
272+ Right x -> liftIO $ print x
273+ Left e -> do
274+ liftIO $ print e
275+ Servant. throwError Servant. err500
276+
241277randomString :: Int -> [Char ] -> IO String
242278randomString len allowedChars =
243279 replicateM len $ do
0 commit comments