{-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TemplateHaskell #-} module IO.HTTP.Trello.ChecklistItem ( ChecklistItem , checklistItemToSubTask , checkItems ) where import ClassyPrelude import Control.Lens (makeLenses, (^.)) import qualified Data.Taskell.Subtask as ST (Subtask, new) import 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)