taskell-1.9.3.0: src/Taskell/IO/HTTP/Trello/ChecklistItem.hs
{-# LANGUAGE TemplateHaskell #-}
module Taskell.IO.HTTP.Trello.ChecklistItem
( ChecklistItem
, checklistItemToSubTask
, checkItems
) where
import ClassyPrelude
import Control.Lens (makeLenses, (^.))
import qualified Taskell.Data.Subtask as ST (Subtask, new)
import Taskell.IO.HTTP.Aeson (deriveFromJSON)
data ChecklistItem = ChecklistItem
{ _name :: Text
, _state :: Text
} deriving (Eq, Show)
-- create Aeson code
$(deriveFromJSON ''ChecklistItem)
-- create lenses
$(makeLenses ''ChecklistItem)
-- operations
checklistItemToSubTask :: ChecklistItem -> ST.Subtask
checklistItemToSubTask cl = ST.new (cl ^. name) ((cl ^. state) == "complete")
-- check list wrapper
newtype ChecklistWrapper = ChecklistWrapper
{ _checkItems :: [ChecklistItem]
} deriving (Eq, Show)
-- create Aeson code
$(deriveFromJSON ''ChecklistWrapper)
-- create lenses
$(makeLenses ''ChecklistWrapper)