Skip to content
This repository was archived by the owner on Feb 6, 2024. It is now read-only.

Commit 13b6fcf

Browse files
authored
Merge pull request #94 from deckgo/nm-stuff
Update handle API
2 parents 23d639f + 61d430c commit 13b6fcf

File tree

2 files changed

+34
-29
lines changed

2 files changed

+34
-29
lines changed

infra/handler/app/Test.hs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ main = do
4242

4343
let someSlide = Slide "foo" "bar" HMS.empty
4444

45-
slideId <- runClientM (slidesPost' someSlide) clientEnv >>= \case
45+
slideId <- runClientM (slidesPost' b someSlide) clientEnv >>= \case
4646
Left err -> error $ "Expected new slide, got error: " <> show err
4747
Right (Item slideId _) -> pure slideId
4848

@@ -62,32 +62,32 @@ main = do
6262
Right deck ->
6363
if deck == (Item deckId newDeck) then pure () else (error $ "Expected get deck, got: " <> show deck)
6464

65-
runClientM slidesGet' clientEnv >>= \case
65+
runClientM (slidesGet' b) clientEnv >>= \case
6666
Left err -> error $ "Expected slides, got error: " <> show err
6767
Right slides ->
6868
if slides == [Item slideId someSlide] then pure () else (error $ "Expected slides, got: " <> show slides)
6969

7070
let updatedSlide = Slide "foo" "quux" HMS.empty
7171

72-
runClientM (slidesPut' slideId updatedSlide) clientEnv >>= \case
72+
runClientM (slidesPut' b slideId updatedSlide) clientEnv >>= \case
7373
Left err -> error $ "Expected new slide, got error: " <> show err
7474
Right {} -> pure ()
7575

76-
runClientM slidesGet' clientEnv >>= \case
76+
runClientM (slidesGet' b) clientEnv >>= \case
7777
Left err -> error $ "Expected updated slides, got error: " <> show err
7878
Right slides ->
7979
if slides == [Item slideId updatedSlide] then pure () else (error $ "Expected updated slides, got: " <> show slides)
8080

81-
runClientM (slidesGetSlideId' slideId) clientEnv >>= \case
81+
runClientM (slidesGetSlideId' b slideId) clientEnv >>= \case
8282
Left err -> error $ "Expected updated slide, got error: " <> show err
8383
Right slide ->
8484
if slide == (Item slideId updatedSlide) then pure () else (error $ "Expected updated slide, got: " <> show slide)
8585

86-
runClientM (slidesDelete' slideId) clientEnv >>= \case
86+
runClientM (slidesDelete' b slideId) clientEnv >>= \case
8787
Left err -> error $ "Expected slide delete, got error: " <> show err
8888
Right {} -> pure ()
8989

90-
runClientM slidesGet' clientEnv >>= \case
90+
runClientM (slidesGet' b) clientEnv >>= \case
9191
Left err -> error $ "Expected no slides, got error: " <> show err
9292
Right slides ->
9393
if slides == [] then pure () else (error $ "Expected no slides, got: " <> show slides)
@@ -135,11 +135,11 @@ decksPost' :: T.Text -> Deck -> ClientM (Item DeckId Deck)
135135
decksPut' :: T.Text -> DeckId -> Deck -> ClientM (Item DeckId Deck)
136136
decksDelete' :: T.Text -> DeckId -> ClientM ()
137137

138-
slidesGet' :: ClientM [Item SlideId Slide]
139-
slidesGetSlideId' :: SlideId -> ClientM (Item SlideId Slide)
140-
slidesPost' :: Slide -> ClientM (Item SlideId Slide)
141-
slidesPut' :: SlideId -> Slide -> ClientM (Item SlideId Slide)
142-
slidesDelete' :: SlideId -> ClientM ()
138+
slidesGet' :: T.Text -> ClientM [Item SlideId Slide]
139+
slidesGetSlideId' :: T.Text -> SlideId -> ClientM (Item SlideId Slide)
140+
slidesPost' :: T.Text -> Slide -> ClientM (Item SlideId Slide)
141+
slidesPut' :: T.Text -> SlideId -> Slide -> ClientM (Item SlideId Slide)
142+
slidesDelete' :: T.Text -> SlideId -> ClientM ()
143143
((
144144
usersGet' :<|>
145145
_usersGetUserId' :<|>

infra/handler/src/DeckGo/Handler.hs

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ instance FromJSONObject Deck where
185185
<$> obj .: "slides"
186186
<*> obj .: "name"
187187
<*> obj .: "owner_id"
188-
<*> obj .: "attributes"
188+
<*> obj .:? "attributes" .!= HMS.empty
189189

190190
instance ToJSONObject Deck where
191191
toJSONObject deck = HMS.fromList
@@ -215,11 +215,16 @@ instance ToParamSchema DeckId where
215215
-- SLIDES
216216

217217
type SlidesAPI =
218-
Get '[JSON] [Item SlideId Slide] :<|>
219-
Capture "slide_id" SlideId :> Get '[JSON] (Item SlideId Slide) :<|>
220-
ReqBody '[JSON] Slide :> Post '[JSON] (Item SlideId Slide) :<|>
221-
Capture "slide_id" SlideId :> ReqBody '[JSON] Slide :> Put '[JSON] (Item SlideId Slide) :<|>
222-
Capture "slide_id" SlideId :> Delete '[JSON] ()
218+
Protected :> Get '[JSON] [Item SlideId Slide] :<|>
219+
Protected :>
220+
Capture "slide_id" SlideId :> Get '[JSON] (Item SlideId Slide) :<|>
221+
Protected :>
222+
ReqBody '[JSON] Slide :> Post '[JSON] (Item SlideId Slide) :<|>
223+
Protected :>
224+
Capture "slide_id" SlideId :>
225+
ReqBody '[JSON] Slide :>
226+
Put '[JSON] (Item SlideId Slide) :<|>
227+
Protected :> Capture "slide_id" SlideId :> Delete '[JSON] ()
223228

224229
instance ToSchema (Item SlideId Slide) where
225230
declareNamedSchema _ = pure $ NamedSchema (Just "SlideWithId") mempty
@@ -253,7 +258,7 @@ data Slide = Slide
253258
instance FromJSONObject Slide where
254259
parseJSONObject = \obj ->
255260
Slide <$>
256-
obj .: "content" <*>
261+
obj .:? "content" .!= "" <*>
257262
obj .: "template" <*>
258263
obj .:? "attributes" .!= HMS.empty
259264

@@ -506,8 +511,8 @@ decksDelete env _ deckId = do
506511

507512
-- SLIDES
508513

509-
slidesGet :: Aws.Env -> Servant.Handler [Item SlideId Slide]
510-
slidesGet env = do
514+
slidesGet :: Aws.Env -> Firebase.UserId -> Servant.Handler [Item SlideId Slide]
515+
slidesGet env _ = do
511516
res <- runAWS env $ Aws.send $ DynamoDB.scan "Slides"
512517
case res of
513518
Right scanResponse ->
@@ -521,8 +526,8 @@ slidesGet env = do
521526
liftIO $ print e
522527
Servant.throwError Servant.err500
523528

524-
slidesGetSlideId :: Aws.Env -> SlideId -> Servant.Handler (Item SlideId Slide)
525-
slidesGetSlideId env slideId = do
529+
slidesGetSlideId :: Aws.Env -> Firebase.UserId -> SlideId -> Servant.Handler (Item SlideId Slide)
530+
slidesGetSlideId env _ slideId = do
526531
res <- runAWS env $ Aws.send $ DynamoDB.getItem "Slides" &
527532
DynamoDB.giKey .~ HMS.singleton "SlideId" (slideIdToAttributeValue slideId)
528533
case res of
@@ -547,8 +552,8 @@ slidesGetSlideId env slideId = do
547552
liftIO $ print e
548553
Servant.throwError Servant.err500
549554

550-
slidesPost :: Aws.Env -> Slide -> Servant.Handler (Item SlideId Slide)
551-
slidesPost env slide = do
555+
slidesPost :: Aws.Env -> Firebase.UserId -> Slide -> Servant.Handler (Item SlideId Slide)
556+
slidesPost env _ slide = do
552557
slideId <- liftIO $ SlideId <$> newId
553558

554559
res <- runAWS env $
@@ -563,8 +568,8 @@ slidesPost env slide = do
563568

564569
pure $ Item slideId slide
565570

566-
slidesPut :: Aws.Env -> SlideId -> Slide -> Servant.Handler (Item SlideId Slide)
567-
slidesPut env slideId slide = do
571+
slidesPut :: Aws.Env -> Firebase.UserId -> SlideId -> Slide -> Servant.Handler (Item SlideId Slide)
572+
slidesPut env _ slideId slide = do
568573

569574
res <- runAWS env $ Aws.send $ DynamoDB.updateItem "Slides" &
570575
DynamoDB.uiUpdateExpression .~ Just
@@ -582,8 +587,8 @@ slidesPut env slideId slide = do
582587

583588
pure $ Item slideId slide
584589

585-
slidesDelete :: Aws.Env -> SlideId -> Servant.Handler ()
586-
slidesDelete env slideId = do
590+
slidesDelete :: Aws.Env -> Firebase.UserId -> SlideId -> Servant.Handler ()
591+
slidesDelete env _ slideId = do
587592

588593
res <- runAWS env $ Aws.send $ DynamoDB.deleteItem "Slides" &
589594
DynamoDB.diKey .~ HMS.singleton "SlideId"

0 commit comments

Comments
 (0)