@@ -42,13 +42,15 @@ instance ToJSON DraftUpdate where
42type DraftApi = "create" :> ReqBody '[JSON] [P.PostElement P.Draft] :> Post '[JSON] P.DraftId :<|>
42type DraftApi = "create" :> ReqBody '[JSON] [P.PostElement P.Draft] :> Post '[JSON] P.DraftId :<|>
43 "update" :> ReqBody '[JSON] DraftUpdate :> PostNoContent '[JSON, PlainText, FormUrlEncoded] NoContent :<|>
43 "update" :> ReqBody '[JSON] DraftUpdate :> PostNoContent '[JSON, PlainText, FormUrlEncoded] NoContent :<|>
44 "publish" :> ReqBody '[JSON] P.DraftId :> PostNoContent '[JSON, PlainText, FormUrlEncoded] NoContent :<|>
44 "publish" :> ReqBody '[JSON] P.DraftId :> PostNoContent '[JSON, PlainText, FormUrlEncoded] NoContent :<|>
45− "all" :> Post '[JSON] [DraftUpdate]
45+ "all" :> Post '[JSON] [DraftUpdate] :<|>
46+ "createAndPublish" :> ReqBody '[JSON] [P.PostElement P.Draft] :> PostNoContent '[JSON, PlainText, FormUrlEncoded] NoContent
47draftApi :: UserId -> ServerT DraftApi App
48draftApi :: UserId -> ServerT DraftApi App
48draftApi uId =
49draftApi uId =
49 (fmap P.postId . runQnotFound . createDraft uId) :<|> updateDraftApi uId :<|>
50 (fmap P.postId . runQnotFound . createDraft uId) :<|> updateDraftApi uId :<|>
50 publishDraftApi uId :<|>
51 publishDraftApi uId :<|>
51− runQnotFound (fmap (map postToDraft) $ getDrafts uId)
52+ runQnotFound (fmap (map postToDraft) $ getDrafts uId) :<|>
53updateDraftApi :: UserId -> DraftUpdate -> App NoContent
55updateDraftApi :: UserId -> DraftUpdate -> App NoContent
54updateDraftApi uId (DraftUpdate dId els) = do
56updateDraftApi uId (DraftUpdate dId els) = do
@@ -61,4 +63,9 @@ publishDraftApi uId dId = do
61 return NoContent
63 return NoContent
63postToDraft :: P.Draft -> DraftUpdate
65postToDraft :: P.Draft -> DraftUpdate
64−postToDraft (P.PostData dId _ body) = DraftUpdate dId body
66+postToDraft (P.PostData dId _ body) = DraftUpdate dId body
68+createAndPublish :: UserId -> [P.PostElement P.Draft] -> App NoContent
69+createAndPublish uId els = do
70+ dId <- fmap P.postId . runQnotFound . createDraft uId $ els
71+ publishDraftApi uId dId