{-# LANGUAGE TemplateHaskell #-}

module Taskell.IO.HTTP.GitHub.Project
    ( Project
    , columnsURL
    , name
    ) where

import ClassyPrelude

import Control.Lens (Lens', makeLenses)

import Taskell.IO.HTTP.Aeson (deriveFromJSON)

data Project = Project
    { Project -> Text
_name        :: Text
    , Project -> Text
_columns_url :: Text
    } deriving (Project -> Project -> Bool
(Project -> Project -> Bool)
-> (Project -> Project -> Bool) -> Eq Project
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Project -> Project -> Bool
$c/= :: Project -> Project -> Bool
== :: Project -> Project -> Bool
$c== :: Project -> Project -> Bool
Eq, Int -> Project -> ShowS
[Project] -> ShowS
Project -> String
(Int -> Project -> ShowS)
-> (Project -> String) -> ([Project] -> ShowS) -> Show Project
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Project] -> ShowS
$cshowList :: [Project] -> ShowS
show :: Project -> String
$cshow :: Project -> String
showsPrec :: Int -> Project -> ShowS
$cshowsPrec :: Int -> Project -> ShowS
Show)

-- create Aeson code
$(deriveFromJSON ''Project)

-- create lenses
$(makeLenses ''Project)

-- operations
columnsURL :: Lens' Project Text
columnsURL :: (Text -> f Text) -> Project -> f Project
columnsURL = (Text -> f Text) -> Project -> f Project
Lens' Project Text
columns_url