packages feed

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)