{-# 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)
$(deriveFromJSON ''List)
$(makeLenses ''List)
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))