{-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE TemplateHaskell #-} module IO.HTTP.Trello.List ( List , cards , setCards , listToList ) where import ClassyPrelude import Control.Lens (makeLenses, (&), (.~), (^.)) import IO.HTTP.Aeson (deriveFromJSON) import IO.HTTP.Trello.Card (Card, cardToTask) import qualified Data.Taskell.List as L (List, create) import Data.Time.LocalTime (TimeZone) data List = List { _name :: Text , _cards :: [Card] } deriving (Eq, Show) -- create Aeson code $(deriveFromJSON ''List) -- create lenses $(makeLenses ''List) -- operations setCards :: List -> [Card] -> List setCards list cs = list & cards .~ cs listToList :: TimeZone -> List -> L.List listToList tz ls = L.create (ls ^. name) (fromList $ cardToTask tz <$> (ls ^. cards))