All Downloads are FREE. Search and download functionalities are using the official Maven repository.

zio.aws.qbusiness.model.MessageUsefulnessFeedback.scala Maven / Gradle / Ivy

package zio.aws.qbusiness.model
import zio.aws.qbusiness.model.primitives.{Timestamp, MessageUsefulnessComment}
import java.time.Instant
import zio.prelude.data.Optional
import zio.aws.core.{AwsError, BuilderHelper}
import zio.ZIO
import scala.jdk.CollectionConverters._
final case class MessageUsefulnessFeedback(
    usefulness: zio.aws.qbusiness.model.MessageUsefulness,
    reason: Optional[zio.aws.qbusiness.model.MessageUsefulnessReason] =
      Optional.Absent,
    comment: Optional[MessageUsefulnessComment] = Optional.Absent,
    submittedAt: Timestamp
) {
  def buildAwsValue()
      : software.amazon.awssdk.services.qbusiness.model.MessageUsefulnessFeedback = {
    import MessageUsefulnessFeedback.zioAwsBuilderHelper.BuilderOps
    software.amazon.awssdk.services.qbusiness.model.MessageUsefulnessFeedback
      .builder()
      .usefulness(usefulness.unwrap)
      .optionallyWith(reason.map(value => value.unwrap))(_.reason)
      .optionallyWith(
        comment.map(value =>
          MessageUsefulnessComment.unwrap(value): java.lang.String
        )
      )(_.comment)
      .submittedAt(Timestamp.unwrap(submittedAt): Instant)
      .build()
  }
  def asReadOnly: zio.aws.qbusiness.model.MessageUsefulnessFeedback.ReadOnly =
    zio.aws.qbusiness.model.MessageUsefulnessFeedback.wrap(buildAwsValue())
}
object MessageUsefulnessFeedback {
  private lazy val zioAwsBuilderHelper: BuilderHelper[
    software.amazon.awssdk.services.qbusiness.model.MessageUsefulnessFeedback
  ] = BuilderHelper.apply
  trait ReadOnly {
    def asEditable: zio.aws.qbusiness.model.MessageUsefulnessFeedback =
      zio.aws.qbusiness.model.MessageUsefulnessFeedback(
        usefulness,
        reason.map(value => value),
        comment.map(value => value),
        submittedAt
      )
    def usefulness: zio.aws.qbusiness.model.MessageUsefulness
    def reason: Optional[zio.aws.qbusiness.model.MessageUsefulnessReason]
    def comment: Optional[MessageUsefulnessComment]
    def submittedAt: Timestamp
    def getUsefulness
        : ZIO[Any, Nothing, zio.aws.qbusiness.model.MessageUsefulness] =
      ZIO.succeed(usefulness)
    def getReason
        : ZIO[Any, AwsError, zio.aws.qbusiness.model.MessageUsefulnessReason] =
      AwsError.unwrapOptionField("reason", reason)
    def getComment: ZIO[Any, AwsError, MessageUsefulnessComment] =
      AwsError.unwrapOptionField("comment", comment)
    def getSubmittedAt: ZIO[Any, Nothing, Timestamp] = ZIO.succeed(submittedAt)
  }
  private final class Wrapper(
      impl: software.amazon.awssdk.services.qbusiness.model.MessageUsefulnessFeedback
  ) extends zio.aws.qbusiness.model.MessageUsefulnessFeedback.ReadOnly {
    override val usefulness: zio.aws.qbusiness.model.MessageUsefulness =
      zio.aws.qbusiness.model.MessageUsefulness.wrap(impl.usefulness())
    override val reason
        : Optional[zio.aws.qbusiness.model.MessageUsefulnessReason] =
      zio.aws.core.internal
        .optionalFromNullable(impl.reason())
        .map(value =>
          zio.aws.qbusiness.model.MessageUsefulnessReason.wrap(value)
        )
    override val comment: Optional[MessageUsefulnessComment] =
      zio.aws.core.internal
        .optionalFromNullable(impl.comment())
        .map(value =>
          zio.aws.qbusiness.model.primitives.MessageUsefulnessComment(value)
        )
    override val submittedAt: Timestamp =
      zio.aws.qbusiness.model.primitives.Timestamp(impl.submittedAt())
  }
  def wrap(
      impl: software.amazon.awssdk.services.qbusiness.model.MessageUsefulnessFeedback
  ): zio.aws.qbusiness.model.MessageUsefulnessFeedback.ReadOnly = new Wrapper(
    impl
  )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy