packages feed

amazonka-kendra-2.0: gen/Amazonka/Kendra/Types/GitHubDocumentCrawlProperties.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Kendra.Types.GitHubDocumentCrawlProperties
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Kendra.Types.GitHubDocumentCrawlProperties where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude

-- | Provides the configuration information to include certain types of
-- GitHub content. You can configure to index repository files only, or
-- also include issues and pull requests, comments, and comment
-- attachments.
--
-- /See:/ 'newGitHubDocumentCrawlProperties' smart constructor.
data GitHubDocumentCrawlProperties = GitHubDocumentCrawlProperties'
  { -- | @TRUE@ to index all issues within a repository.
    crawlIssue :: Prelude.Maybe Prelude.Bool,
    -- | @TRUE@ to index all comments on issues.
    crawlIssueComment :: Prelude.Maybe Prelude.Bool,
    -- | @TRUE@ to include all comment attachments for issues.
    crawlIssueCommentAttachment :: Prelude.Maybe Prelude.Bool,
    -- | @TRUE@ to index all pull requests within a repository.
    crawlPullRequest :: Prelude.Maybe Prelude.Bool,
    -- | @TRUE@ to index all comments on pull requests.
    crawlPullRequestComment :: Prelude.Maybe Prelude.Bool,
    -- | @TRUE@ to include all comment attachments for pull requests.
    crawlPullRequestCommentAttachment :: Prelude.Maybe Prelude.Bool,
    -- | @TRUE@ to index all files with a repository.
    crawlRepositoryDocuments :: Prelude.Maybe Prelude.Bool
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'GitHubDocumentCrawlProperties' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'crawlIssue', 'gitHubDocumentCrawlProperties_crawlIssue' - @TRUE@ to index all issues within a repository.
--
-- 'crawlIssueComment', 'gitHubDocumentCrawlProperties_crawlIssueComment' - @TRUE@ to index all comments on issues.
--
-- 'crawlIssueCommentAttachment', 'gitHubDocumentCrawlProperties_crawlIssueCommentAttachment' - @TRUE@ to include all comment attachments for issues.
--
-- 'crawlPullRequest', 'gitHubDocumentCrawlProperties_crawlPullRequest' - @TRUE@ to index all pull requests within a repository.
--
-- 'crawlPullRequestComment', 'gitHubDocumentCrawlProperties_crawlPullRequestComment' - @TRUE@ to index all comments on pull requests.
--
-- 'crawlPullRequestCommentAttachment', 'gitHubDocumentCrawlProperties_crawlPullRequestCommentAttachment' - @TRUE@ to include all comment attachments for pull requests.
--
-- 'crawlRepositoryDocuments', 'gitHubDocumentCrawlProperties_crawlRepositoryDocuments' - @TRUE@ to index all files with a repository.
newGitHubDocumentCrawlProperties ::
  GitHubDocumentCrawlProperties
newGitHubDocumentCrawlProperties =
  GitHubDocumentCrawlProperties'
    { crawlIssue =
        Prelude.Nothing,
      crawlIssueComment = Prelude.Nothing,
      crawlIssueCommentAttachment =
        Prelude.Nothing,
      crawlPullRequest = Prelude.Nothing,
      crawlPullRequestComment = Prelude.Nothing,
      crawlPullRequestCommentAttachment =
        Prelude.Nothing,
      crawlRepositoryDocuments = Prelude.Nothing
    }

-- | @TRUE@ to index all issues within a repository.
gitHubDocumentCrawlProperties_crawlIssue :: Lens.Lens' GitHubDocumentCrawlProperties (Prelude.Maybe Prelude.Bool)
gitHubDocumentCrawlProperties_crawlIssue = Lens.lens (\GitHubDocumentCrawlProperties' {crawlIssue} -> crawlIssue) (\s@GitHubDocumentCrawlProperties' {} a -> s {crawlIssue = a} :: GitHubDocumentCrawlProperties)

-- | @TRUE@ to index all comments on issues.
gitHubDocumentCrawlProperties_crawlIssueComment :: Lens.Lens' GitHubDocumentCrawlProperties (Prelude.Maybe Prelude.Bool)
gitHubDocumentCrawlProperties_crawlIssueComment = Lens.lens (\GitHubDocumentCrawlProperties' {crawlIssueComment} -> crawlIssueComment) (\s@GitHubDocumentCrawlProperties' {} a -> s {crawlIssueComment = a} :: GitHubDocumentCrawlProperties)

-- | @TRUE@ to include all comment attachments for issues.
gitHubDocumentCrawlProperties_crawlIssueCommentAttachment :: Lens.Lens' GitHubDocumentCrawlProperties (Prelude.Maybe Prelude.Bool)
gitHubDocumentCrawlProperties_crawlIssueCommentAttachment = Lens.lens (\GitHubDocumentCrawlProperties' {crawlIssueCommentAttachment} -> crawlIssueCommentAttachment) (\s@GitHubDocumentCrawlProperties' {} a -> s {crawlIssueCommentAttachment = a} :: GitHubDocumentCrawlProperties)

-- | @TRUE@ to index all pull requests within a repository.
gitHubDocumentCrawlProperties_crawlPullRequest :: Lens.Lens' GitHubDocumentCrawlProperties (Prelude.Maybe Prelude.Bool)
gitHubDocumentCrawlProperties_crawlPullRequest = Lens.lens (\GitHubDocumentCrawlProperties' {crawlPullRequest} -> crawlPullRequest) (\s@GitHubDocumentCrawlProperties' {} a -> s {crawlPullRequest = a} :: GitHubDocumentCrawlProperties)

-- | @TRUE@ to index all comments on pull requests.
gitHubDocumentCrawlProperties_crawlPullRequestComment :: Lens.Lens' GitHubDocumentCrawlProperties (Prelude.Maybe Prelude.Bool)
gitHubDocumentCrawlProperties_crawlPullRequestComment = Lens.lens (\GitHubDocumentCrawlProperties' {crawlPullRequestComment} -> crawlPullRequestComment) (\s@GitHubDocumentCrawlProperties' {} a -> s {crawlPullRequestComment = a} :: GitHubDocumentCrawlProperties)

-- | @TRUE@ to include all comment attachments for pull requests.
gitHubDocumentCrawlProperties_crawlPullRequestCommentAttachment :: Lens.Lens' GitHubDocumentCrawlProperties (Prelude.Maybe Prelude.Bool)
gitHubDocumentCrawlProperties_crawlPullRequestCommentAttachment = Lens.lens (\GitHubDocumentCrawlProperties' {crawlPullRequestCommentAttachment} -> crawlPullRequestCommentAttachment) (\s@GitHubDocumentCrawlProperties' {} a -> s {crawlPullRequestCommentAttachment = a} :: GitHubDocumentCrawlProperties)

-- | @TRUE@ to index all files with a repository.
gitHubDocumentCrawlProperties_crawlRepositoryDocuments :: Lens.Lens' GitHubDocumentCrawlProperties (Prelude.Maybe Prelude.Bool)
gitHubDocumentCrawlProperties_crawlRepositoryDocuments = Lens.lens (\GitHubDocumentCrawlProperties' {crawlRepositoryDocuments} -> crawlRepositoryDocuments) (\s@GitHubDocumentCrawlProperties' {} a -> s {crawlRepositoryDocuments = a} :: GitHubDocumentCrawlProperties)

instance Data.FromJSON GitHubDocumentCrawlProperties where
  parseJSON =
    Data.withObject
      "GitHubDocumentCrawlProperties"
      ( \x ->
          GitHubDocumentCrawlProperties'
            Prelude.<$> (x Data..:? "CrawlIssue")
            Prelude.<*> (x Data..:? "CrawlIssueComment")
            Prelude.<*> (x Data..:? "CrawlIssueCommentAttachment")
            Prelude.<*> (x Data..:? "CrawlPullRequest")
            Prelude.<*> (x Data..:? "CrawlPullRequestComment")
            Prelude.<*> (x Data..:? "CrawlPullRequestCommentAttachment")
            Prelude.<*> (x Data..:? "CrawlRepositoryDocuments")
      )

instance
  Prelude.Hashable
    GitHubDocumentCrawlProperties
  where
  hashWithSalt _salt GitHubDocumentCrawlProperties' {..} =
    _salt
      `Prelude.hashWithSalt` crawlIssue
      `Prelude.hashWithSalt` crawlIssueComment
      `Prelude.hashWithSalt` crawlIssueCommentAttachment
      `Prelude.hashWithSalt` crawlPullRequest
      `Prelude.hashWithSalt` crawlPullRequestComment
      `Prelude.hashWithSalt` crawlPullRequestCommentAttachment
      `Prelude.hashWithSalt` crawlRepositoryDocuments

instance Prelude.NFData GitHubDocumentCrawlProperties where
  rnf GitHubDocumentCrawlProperties' {..} =
    Prelude.rnf crawlIssue
      `Prelude.seq` Prelude.rnf crawlIssueComment
      `Prelude.seq` Prelude.rnf crawlIssueCommentAttachment
      `Prelude.seq` Prelude.rnf crawlPullRequest
      `Prelude.seq` Prelude.rnf crawlPullRequestComment
      `Prelude.seq` Prelude.rnf crawlPullRequestCommentAttachment
      `Prelude.seq` Prelude.rnf crawlRepositoryDocuments

instance Data.ToJSON GitHubDocumentCrawlProperties where
  toJSON GitHubDocumentCrawlProperties' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("CrawlIssue" Data..=) Prelude.<$> crawlIssue,
            ("CrawlIssueComment" Data..=)
              Prelude.<$> crawlIssueComment,
            ("CrawlIssueCommentAttachment" Data..=)
              Prelude.<$> crawlIssueCommentAttachment,
            ("CrawlPullRequest" Data..=)
              Prelude.<$> crawlPullRequest,
            ("CrawlPullRequestComment" Data..=)
              Prelude.<$> crawlPullRequestComment,
            ("CrawlPullRequestCommentAttachment" Data..=)
              Prelude.<$> crawlPullRequestCommentAttachment,
            ("CrawlRepositoryDocuments" Data..=)
              Prelude.<$> crawlRepositoryDocuments
          ]
      )