list collections

This commit is contained in:
Alexander Foremny
2024-06-06 22:52:33 +02:00
parent b1a4822d59
commit 3add980b73
3 changed files with 32 additions and 12 deletions

View File

@@ -221,6 +221,11 @@ main = do
respond $
W.responseLBS W.status200 [] $
J.encode (last repo.commits).schemaVersion
Right ListCollections -> do
repo <- atomically (readTMVar repoT)
respond $
W.responseLBS W.status200 [] $
J.encode (map (.path) (last repo.commits).collections)
(traceShowId -> !_) ->
respond $ W.responseLBS W.status200 [] "not implemented"
@@ -228,13 +233,15 @@ data Route
= SchemaJson String
| Query
| SchemaVersion
| ListCollections
deriving (Show)
routeP :: P.Parser Route
routeP =
( P.choice
[ SchemaJson <$> (P.string "/" *> P.manyTill P.anyChar (P.string ".schema.json")),
[ pure ListCollections <* P.string "/collections",
pure SchemaVersion <* P.string "/schemaVersion",
SchemaJson <$> (P.string "/" *> P.manyTill P.anyChar (P.string ".schema.json")),
pure Query <* P.string "/"
]
)

View File

@@ -1,7 +1,8 @@
{-# OPTIONS_GHC -fno-warn-incomplete-patterns #-}
module Api
( fetchSchema,
( fetchCollections,
fetchSchema,
fetchSchemaVersion,
fetchPosts,
fetchPost,
@@ -28,14 +29,18 @@ import Safe
import Schema
import Version
fetchSchema :: JSM (Either String Schema)
fetchSchema =
A.eitherDecode <$> fetch (fromString "http://localhost:8081/posts.schema.json")
fetchCollections :: JSM (Either String [String])
fetchCollections =
A.eitherDecode <$> fetch (fromString "http://localhost:8081/collections")
fetchSchemaVersion :: JSM (Either String Version)
fetchSchemaVersion =
A.eitherDecode <$> fetch (fromString "http://localhost:8081/schemaVersion")
fetchSchema :: JSM (Either String Schema)
fetchSchema =
A.eitherDecode <$> fetch (fromString "http://localhost:8081/posts.schema.json")
fetchPosts :: JSM (Either String [A.Value])
fetchPosts =
A.eitherDecode

View File

@@ -23,8 +23,9 @@ data Model
deriving (Show, Eq)
data LoadedState = LoadedState
{ page :: Maybe (Either String Page),
schemaVersion :: Version
{ collections :: [String],
schemaVersion :: Version,
page :: Maybe (Either String Page)
}
deriving (Show, Eq)
@@ -69,8 +70,10 @@ updateModel (Init uri) Loading =
Loading <# do
page <- Just <$> initialPage (parseURI uri)
schemaVersion' <- fetchSchemaVersion
collections' <- fetchCollections
pure $ SetLoaded do
schemaVersion <- schemaVersion'
collections <- collections'
pure LoadedState {..}
updateModel (Init _) m = noEff m
updateModel (SetLoaded (Left err)) Loading = noEff (Failed err)
@@ -98,7 +101,7 @@ viewModel (Loaded s) =
div_ [] $
[ viewCss,
viewHeader s,
nav_ [] [viewCollections],
nav_ [] [viewCollections s],
main_ [] $
[ HandlePage <$> maybe (text "..") (either err viewPage) s.page
]
@@ -208,12 +211,17 @@ viewBranch s =
select_ [] [option_ [] [text "main"]]
]
viewCollections :: View Action
viewCollections =
viewCollections :: LoadedState -> View Action
viewCollections s =
section_ [] $
[ span_ [] [text "collections"],
ol_ [] $
[ li_ [] [a_ [href_ "#collection/posts"] [text "posts"]],
li_ [] [a_ [href_ "#collection/posts1"] [text "posts1"]]
[ li_
[]
[ a_
[href_ (toMisoString ("#collection/" <> collection))]
[text (toMisoString collection)]
]
| collection <- s.collections
]
]