{-# 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.CodeCommit.Types.Comment -- 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.CodeCommit.Types.Comment 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 -- | Returns information about a specific comment. -- -- /See:/ 'newComment' smart constructor. data Comment = Comment' { -- | The Amazon Resource Name (ARN) of the person who posted the comment. authorArn :: Prelude.Maybe Prelude.Text, -- | The emoji reactions to a comment, if any, submitted by the user whose -- credentials are associated with the call to the API. callerReactions :: Prelude.Maybe [Prelude.Text], -- | A unique, client-generated idempotency token that, when provided in a -- request, ensures the request cannot be repeated with a changed -- parameter. If a request is received with the same parameters and a token -- is included, the request returns information about the initial request -- that used that token. clientRequestToken :: Prelude.Maybe Prelude.Text, -- | The system-generated comment ID. commentId :: Prelude.Maybe Prelude.Text, -- | The content of the comment. content :: Prelude.Maybe Prelude.Text, -- | The date and time the comment was created, in timestamp format. creationDate :: Prelude.Maybe Data.POSIX, -- | A Boolean value indicating whether the comment has been deleted. deleted :: Prelude.Maybe Prelude.Bool, -- | The ID of the comment for which this comment is a reply, if any. inReplyTo :: Prelude.Maybe Prelude.Text, -- | The date and time the comment was most recently modified, in timestamp -- format. lastModifiedDate :: Prelude.Maybe Data.POSIX, -- | A string to integer map that represents the number of individual users -- who have responded to a comment with the specified reactions. reactionCounts :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Int) } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'Comment' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'authorArn', 'comment_authorArn' - The Amazon Resource Name (ARN) of the person who posted the comment. -- -- 'callerReactions', 'comment_callerReactions' - The emoji reactions to a comment, if any, submitted by the user whose -- credentials are associated with the call to the API. -- -- 'clientRequestToken', 'comment_clientRequestToken' - A unique, client-generated idempotency token that, when provided in a -- request, ensures the request cannot be repeated with a changed -- parameter. If a request is received with the same parameters and a token -- is included, the request returns information about the initial request -- that used that token. -- -- 'commentId', 'comment_commentId' - The system-generated comment ID. -- -- 'content', 'comment_content' - The content of the comment. -- -- 'creationDate', 'comment_creationDate' - The date and time the comment was created, in timestamp format. -- -- 'deleted', 'comment_deleted' - A Boolean value indicating whether the comment has been deleted. -- -- 'inReplyTo', 'comment_inReplyTo' - The ID of the comment for which this comment is a reply, if any. -- -- 'lastModifiedDate', 'comment_lastModifiedDate' - The date and time the comment was most recently modified, in timestamp -- format. -- -- 'reactionCounts', 'comment_reactionCounts' - A string to integer map that represents the number of individual users -- who have responded to a comment with the specified reactions. newComment :: Comment newComment = Comment' { authorArn = Prelude.Nothing, callerReactions = Prelude.Nothing, clientRequestToken = Prelude.Nothing, commentId = Prelude.Nothing, content = Prelude.Nothing, creationDate = Prelude.Nothing, deleted = Prelude.Nothing, inReplyTo = Prelude.Nothing, lastModifiedDate = Prelude.Nothing, reactionCounts = Prelude.Nothing } -- | The Amazon Resource Name (ARN) of the person who posted the comment. comment_authorArn :: Lens.Lens' Comment (Prelude.Maybe Prelude.Text) comment_authorArn = Lens.lens (\Comment' {authorArn} -> authorArn) (\s@Comment' {} a -> s {authorArn = a} :: Comment) -- | The emoji reactions to a comment, if any, submitted by the user whose -- credentials are associated with the call to the API. comment_callerReactions :: Lens.Lens' Comment (Prelude.Maybe [Prelude.Text]) comment_callerReactions = Lens.lens (\Comment' {callerReactions} -> callerReactions) (\s@Comment' {} a -> s {callerReactions = a} :: Comment) Prelude.. Lens.mapping Lens.coerced -- | A unique, client-generated idempotency token that, when provided in a -- request, ensures the request cannot be repeated with a changed -- parameter. If a request is received with the same parameters and a token -- is included, the request returns information about the initial request -- that used that token. comment_clientRequestToken :: Lens.Lens' Comment (Prelude.Maybe Prelude.Text) comment_clientRequestToken = Lens.lens (\Comment' {clientRequestToken} -> clientRequestToken) (\s@Comment' {} a -> s {clientRequestToken = a} :: Comment) -- | The system-generated comment ID. comment_commentId :: Lens.Lens' Comment (Prelude.Maybe Prelude.Text) comment_commentId = Lens.lens (\Comment' {commentId} -> commentId) (\s@Comment' {} a -> s {commentId = a} :: Comment) -- | The content of the comment. comment_content :: Lens.Lens' Comment (Prelude.Maybe Prelude.Text) comment_content = Lens.lens (\Comment' {content} -> content) (\s@Comment' {} a -> s {content = a} :: Comment) -- | The date and time the comment was created, in timestamp format. comment_creationDate :: Lens.Lens' Comment (Prelude.Maybe Prelude.UTCTime) comment_creationDate = Lens.lens (\Comment' {creationDate} -> creationDate) (\s@Comment' {} a -> s {creationDate = a} :: Comment) Prelude.. Lens.mapping Data._Time -- | A Boolean value indicating whether the comment has been deleted. comment_deleted :: Lens.Lens' Comment (Prelude.Maybe Prelude.Bool) comment_deleted = Lens.lens (\Comment' {deleted} -> deleted) (\s@Comment' {} a -> s {deleted = a} :: Comment) -- | The ID of the comment for which this comment is a reply, if any. comment_inReplyTo :: Lens.Lens' Comment (Prelude.Maybe Prelude.Text) comment_inReplyTo = Lens.lens (\Comment' {inReplyTo} -> inReplyTo) (\s@Comment' {} a -> s {inReplyTo = a} :: Comment) -- | The date and time the comment was most recently modified, in timestamp -- format. comment_lastModifiedDate :: Lens.Lens' Comment (Prelude.Maybe Prelude.UTCTime) comment_lastModifiedDate = Lens.lens (\Comment' {lastModifiedDate} -> lastModifiedDate) (\s@Comment' {} a -> s {lastModifiedDate = a} :: Comment) Prelude.. Lens.mapping Data._Time -- | A string to integer map that represents the number of individual users -- who have responded to a comment with the specified reactions. comment_reactionCounts :: Lens.Lens' Comment (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Int)) comment_reactionCounts = Lens.lens (\Comment' {reactionCounts} -> reactionCounts) (\s@Comment' {} a -> s {reactionCounts = a} :: Comment) Prelude.. Lens.mapping Lens.coerced instance Data.FromJSON Comment where parseJSON = Data.withObject "Comment" ( \x -> Comment' Prelude.<$> (x Data..:? "authorArn") Prelude.<*> ( x Data..:? "callerReactions" Data..!= Prelude.mempty ) Prelude.<*> (x Data..:? "clientRequestToken") Prelude.<*> (x Data..:? "commentId") Prelude.<*> (x Data..:? "content") Prelude.<*> (x Data..:? "creationDate") Prelude.<*> (x Data..:? "deleted") Prelude.<*> (x Data..:? "inReplyTo") Prelude.<*> (x Data..:? "lastModifiedDate") Prelude.<*> ( x Data..:? "reactionCounts" Data..!= Prelude.mempty ) ) instance Prelude.Hashable Comment where hashWithSalt _salt Comment' {..} = _salt `Prelude.hashWithSalt` authorArn `Prelude.hashWithSalt` callerReactions `Prelude.hashWithSalt` clientRequestToken `Prelude.hashWithSalt` commentId `Prelude.hashWithSalt` content `Prelude.hashWithSalt` creationDate `Prelude.hashWithSalt` deleted `Prelude.hashWithSalt` inReplyTo `Prelude.hashWithSalt` lastModifiedDate `Prelude.hashWithSalt` reactionCounts instance Prelude.NFData Comment where rnf Comment' {..} = Prelude.rnf authorArn `Prelude.seq` Prelude.rnf callerReactions `Prelude.seq` Prelude.rnf clientRequestToken `Prelude.seq` Prelude.rnf commentId `Prelude.seq` Prelude.rnf content `Prelude.seq` Prelude.rnf creationDate `Prelude.seq` Prelude.rnf deleted `Prelude.seq` Prelude.rnf inReplyTo `Prelude.seq` Prelude.rnf lastModifiedDate `Prelude.seq` Prelude.rnf reactionCounts