{-# LANGUAGE TemplateHaskell #-}
module Taskell.IO.HTTP.GitHub.Column
( Column
, columnToList
, cardsURL
) where
import ClassyPrelude
import Control.Lens (Lens', makeLenses, (^.))
import Taskell.IO.HTTP.Aeson (deriveFromJSON)
import qualified Taskell.Data.List as L (List, create)
import qualified Taskell.Data.Task as T (Task)
data Column = Column
{ Column -> Text
_name :: Text
, Column -> Text
_cards_url :: Text
} deriving (Column -> Column -> Bool
(Column -> Column -> Bool)
-> (Column -> Column -> Bool) -> Eq Column
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Column -> Column -> Bool
$c/= :: Column -> Column -> Bool
== :: Column -> Column -> Bool
$c== :: Column -> Column -> Bool
Eq, Int -> Column -> ShowS
[Column] -> ShowS
Column -> String
(Int -> Column -> ShowS)
-> (Column -> String) -> ([Column] -> ShowS) -> Show Column
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Column] -> ShowS
$cshowList :: [Column] -> ShowS
show :: Column -> String
$cshow :: Column -> String
showsPrec :: Int -> Column -> ShowS
$cshowsPrec :: Int -> Column -> ShowS
Show)
$(deriveFromJSON ''Column)
$(makeLenses ''Column)
cardsURL :: Lens' Column Text
cardsURL :: (Text -> f Text) -> Column -> f Column
cardsURL = (Text -> f Text) -> Column -> f Column
Lens' Column Text
cards_url
columnToList :: Column -> [T.Task] -> L.List
columnToList :: Column -> [Task] -> List
columnToList Column
ls [Task]
tasks = Text -> Seq Task -> List
L.create (Column
ls Column -> Getting Text Column Text -> Text
forall s a. s -> Getting a s a -> a
^. Getting Text Column Text
Lens' Column Text
name) ([Element (Seq Task)] -> Seq Task
forall seq. IsSequence seq => [Element seq] -> seq
fromList [Element (Seq Task)]
[Task]
tasks)