diff --git a/github-tools.cabal b/github-tools.cabal index 1ba8c31..1aa408c 100644 --- a/github-tools.cabal +++ b/github-tools.cabal @@ -33,6 +33,7 @@ library GitHub.Types.Base.CheckApp GitHub.Types.Base.CheckCommit GitHub.Types.Base.CheckOutput + GitHub.Types.Base.CheckPullRequest GitHub.Types.Base.CheckRun GitHub.Types.Base.CheckSuite GitHub.Types.Base.Commit diff --git a/src/GitHub/Types/Base/CheckPullRequest.hs b/src/GitHub/Types/Base/CheckPullRequest.hs new file mode 100644 index 0000000..3c98fbe --- /dev/null +++ b/src/GitHub/Types/Base/CheckPullRequest.hs @@ -0,0 +1,52 @@ +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE RecordWildCards #-} +{-# LANGUAGE StrictData #-} +module GitHub.Types.Base.CheckPullRequest where + +import Data.Aeson (FromJSON (..), ToJSON (..), object) +import Data.Aeson.Types (Value (..), (.:), (.=)) +import Data.Text (Text) +import Test.QuickCheck.Arbitrary (Arbitrary (..)) + +import GitHub.Types.Base.Commit + +------------------------------------------------------------------------------ +-- CheckPullRequest + +data CheckPullRequest = CheckPullRequest + { checkPullRequestBase :: Commit + , checkPullRequestHead :: Commit + , checkPullRequestId :: Int + , checkPullRequestNumber :: Int + , checkPullRequestUrl :: Text + } deriving (Eq, Show, Read) + + +instance FromJSON CheckPullRequest where + parseJSON (Object x) = CheckPullRequest + <$> x .: "base" + <*> x .: "head" + <*> x .: "id" + <*> x .: "number" + <*> x .: "url" + + parseJSON _ = fail "CheckPullRequest" + + +instance ToJSON CheckPullRequest where + toJSON CheckPullRequest{..} = object + [ "base" .= checkPullRequestBase + , "head" .= checkPullRequestHead + , "id" .= checkPullRequestId + , "number" .= checkPullRequestNumber + , "url" .= checkPullRequestUrl + ] + + +instance Arbitrary CheckPullRequest where + arbitrary = CheckPullRequest + <$> arbitrary + <*> arbitrary + <*> arbitrary + <*> arbitrary + <*> arbitrary diff --git a/src/GitHub/Types/Base/CheckSuite.hs b/src/GitHub/Types/Base/CheckSuite.hs index 6837120..3bb3d46 100644 --- a/src/GitHub/Types/Base/CheckSuite.hs +++ b/src/GitHub/Types/Base/CheckSuite.hs @@ -3,14 +3,16 @@ {-# LANGUAGE StrictData #-} module GitHub.Types.Base.CheckSuite where -import Data.Aeson (FromJSON (..), ToJSON (..), - object) -import Data.Aeson.Types (Value (..), (.:), (.:?), (.=)) -import Data.Text (Text) -import Test.QuickCheck.Arbitrary (Arbitrary (..)) +import Data.Aeson (FromJSON (..), ToJSON (..), + object) +import Data.Aeson.Types (Value (..), (.:), (.:?), + (.=)) +import Data.Text (Text) +import Test.QuickCheck.Arbitrary (Arbitrary (..)) import GitHub.Types.Base.CheckApp import GitHub.Types.Base.CheckCommit +import GitHub.Types.Base.CheckPullRequest ------------------------------------------------------------------------------ -- CheckSuite @@ -27,7 +29,7 @@ data CheckSuite = CheckSuite , checkSuiteId :: Int , checkSuiteLatestCheckRunsCount :: Maybe Int , checkSuiteNodeId :: Text - , checkSuitePullRequests :: [Text] + , checkSuitePullRequests :: [CheckPullRequest] , checkSuiteRerequestable :: Bool , checkSuiteRunsRerequestable :: Bool , checkSuiteStatus :: Text