1
1
mirror of https://github.com/aelve/guide.git synced 2024-11-25 18:56:52 +03:00

fix getItem

This commit is contained in:
willbasky 2019-10-31 19:25:09 +05:00
parent 958afba90b
commit e3a8edbf94
3 changed files with 38 additions and 11 deletions

View File

@ -97,10 +97,21 @@ deleteCategory catId =
----------------------------------------------------------------------------
-- | Get item by item ID.
getItem :: Uid Item -> Guider CItemFull
getItem itemId =
--
-- Pass 'True' to ignore disabled sections and get full item.
getItem :: Bool -> Uid Item -> Guider CItemFull
getItem isIgnored itemId =
logHandler "getItem" [attr "itemId" itemId] $ do
toCItemFull <$> getItemOrFail itemId
item <- getItemOrFail itemId
sections <- categoryEnabledSections <$> dbQuery (GetCategoryByItem itemId)
if isIgnored then pure $ toCItemFull allSections item
else pure $ toCItemFull sections item
where
allSections = S.fromList
[ ItemProsConsSection
, ItemEcosystemSection
, ItemNotesSection
]
-- | Create a new item, given the name.
--

View File

@ -153,6 +153,10 @@ data ItemSite route = ItemSite
{ _getItem :: route :-
Summary "Get item by id"
:> ErrorResponse 404 "Item not found"
:> "ignore selections"
:> QueryParam' '[Required, Strict,
Description "Ignore disabled sections to get full item"]
"bool" Bool
:> "item"
:> Capture "itemId" (Uid Item)
:> Get '[JSON] CItemFull
@ -505,7 +509,7 @@ toCCategoryFull $(fields 'Category) = CCategoryFull
, ccfStatus = categoryStatus
, ccfDescription = toCMarkdown categoryNotes
, ccfSections = categoryEnabledSections
, ccfItems = fmap toCItemFull categoryItems
, ccfItems = fmap (toCItemFull categoryEnabledSections) categoryItems
}
where
-- Ignored fields
@ -674,23 +678,34 @@ instance ToSchema CItemFull where
field "toc" . inlineSchema . description ?= "Table of contents"
-- | Factory to create a 'CItemFull' from an 'Item'
toCItemFull :: Item -> CItemFull
toCItemFull $(fields 'Item) = CItemFull
--
-- Pass to 'Set ItemSection' all kinds of sections
-- to ignore disabled sections and get full item content.
toCItemFull :: Set ItemSection -> Item -> CItemFull
toCItemFull selections $(fields 'Item) = CItemFull
{ cifId = itemUid
, cifName = itemName
, cifCreated = itemCreated
, cifHackage = itemHackage
, cifSummary = toCMarkdown itemSummary
, cifPros = fmap toCTrait itemPros
, cifCons = fmap toCTrait itemCons
, cifEcosystem = toCMarkdown itemEcosystem
, cifNotes = toCMarkdown itemNotes
, cifPros = fmap toCTrait pros
, cifCons = fmap toCTrait cons
, cifEcosystem = toCMarkdown ecosystem
, cifNotes = toCMarkdown notes
, cifLink = itemLink
, cifToc = map toCTocHeading (markdownTreeTOC itemNotes)
}
where
-- Ignored fields
_ = (itemProsDeleted, itemConsDeleted)
ecosystem = if (ItemEcosystemSection `elem` selections)
then itemEcosystem
else toMarkdownBlock ""
notes = if (ItemNotesSection `elem` selections)
then itemNotes
else toMarkdownTree "" ""
(pros, cons) = if (ItemProsConsSection `elem` selections)
then (itemPros, itemCons)
else ([],[])
----------------------------------------------------------------------------
-- CTrait

View File

@ -845,6 +845,7 @@ deriving instance Show GetGlobalState
-- category
deriving instance Show GetCategories
deriving instance Show GetCategoryMaybe
deriving instance Show GetCategoryByItem
deriving instance Show AddCategory
deriving instance Show DeleteCategory
deriving instance Show SetCategoryGroup