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

io.github.vigoo.zioaws.swf.model.WorkflowExecutionInfo.scala Maven / Gradle / Ivy

package io.github.vigoo.zioaws.swf.model
import zio.ZIO
import io.github.vigoo.zioaws.swf.model.primitives.{Canceled, Tag, Timestamp}
import java.time.Instant
import io.github.vigoo.zioaws.core.{AwsError, BuilderHelper}
import scala.jdk.CollectionConverters._
final case class WorkflowExecutionInfo(
    execution: io.github.vigoo.zioaws.swf.model.WorkflowExecution,
    workflowType: io.github.vigoo.zioaws.swf.model.WorkflowType,
    startTimestamp: Timestamp,
    closeTimestamp: Option[Timestamp] = None,
    executionStatus: io.github.vigoo.zioaws.swf.model.ExecutionStatus,
    closeStatus: Option[io.github.vigoo.zioaws.swf.model.CloseStatus] = None,
    parent: Option[io.github.vigoo.zioaws.swf.model.WorkflowExecution] = None,
    tagList: Option[Iterable[Tag]] = None,
    cancelRequested: Option[Canceled] = None
) {
  def buildAwsValue()
      : software.amazon.awssdk.services.swf.model.WorkflowExecutionInfo = {
    import WorkflowExecutionInfo.zioAwsBuilderHelper.BuilderOps
    software.amazon.awssdk.services.swf.model.WorkflowExecutionInfo
      .builder()
      .execution(execution.buildAwsValue())
      .workflowType(workflowType.buildAwsValue())
      .startTimestamp(startTimestamp: Instant)
      .optionallyWith(closeTimestamp.map(value => value: Instant))(
        _.closeTimestamp
      )
      .executionStatus(executionStatus.unwrap)
      .optionallyWith(closeStatus.map(value => value.unwrap))(_.closeStatus)
      .optionallyWith(parent.map(value => value.buildAwsValue()))(_.parent)
      .optionallyWith(
        tagList.map(value =>
          value.map { item =>
            item: java.lang.String
          }.asJavaCollection
        )
      )(_.tagList)
      .optionallyWith(cancelRequested.map(value => value: java.lang.Boolean))(
        _.cancelRequested
      )
      .build()
  }
  def asReadOnly
      : io.github.vigoo.zioaws.swf.model.WorkflowExecutionInfo.ReadOnly =
    io.github.vigoo.zioaws.swf.model.WorkflowExecutionInfo.wrap(buildAwsValue())
}
object WorkflowExecutionInfo {
  private lazy val zioAwsBuilderHelper: BuilderHelper[
    software.amazon.awssdk.services.swf.model.WorkflowExecutionInfo
  ] = BuilderHelper.apply
  trait ReadOnly {
    def editable: io.github.vigoo.zioaws.swf.model.WorkflowExecutionInfo =
      io.github.vigoo.zioaws.swf.model.WorkflowExecutionInfo(
        executionValue.editable,
        workflowTypeValue.editable,
        startTimestampValue,
        closeTimestampValue.map(value => value),
        executionStatusValue,
        closeStatusValue.map(value => value),
        parentValue.map(value => value.editable),
        tagListValue.map(value => value),
        cancelRequestedValue.map(value => value)
      )
    def executionValue
        : io.github.vigoo.zioaws.swf.model.WorkflowExecution.ReadOnly
    def workflowTypeValue
        : io.github.vigoo.zioaws.swf.model.WorkflowType.ReadOnly
    def startTimestampValue: Timestamp
    def closeTimestampValue: Option[Timestamp]
    def executionStatusValue: io.github.vigoo.zioaws.swf.model.ExecutionStatus
    def closeStatusValue: Option[io.github.vigoo.zioaws.swf.model.CloseStatus]
    def parentValue
        : Option[io.github.vigoo.zioaws.swf.model.WorkflowExecution.ReadOnly]
    def tagListValue: Option[List[Tag]]
    def cancelRequestedValue: Option[Canceled]
    def execution: ZIO[
      Any,
      Nothing,
      io.github.vigoo.zioaws.swf.model.WorkflowExecution.ReadOnly
    ] = ZIO.succeed(executionValue)
    def workflowType: ZIO[
      Any,
      Nothing,
      io.github.vigoo.zioaws.swf.model.WorkflowType.ReadOnly
    ] = ZIO.succeed(workflowTypeValue)
    def startTimestamp: ZIO[Any, Nothing, Timestamp] =
      ZIO.succeed(startTimestampValue)
    def closeTimestamp: ZIO[Any, AwsError, Timestamp] =
      AwsError.unwrapOptionField("closeTimestamp", closeTimestampValue)
    def executionStatus
        : ZIO[Any, Nothing, io.github.vigoo.zioaws.swf.model.ExecutionStatus] =
      ZIO.succeed(executionStatusValue)
    def closeStatus
        : ZIO[Any, AwsError, io.github.vigoo.zioaws.swf.model.CloseStatus] =
      AwsError.unwrapOptionField("closeStatus", closeStatusValue)
    def parent: ZIO[
      Any,
      AwsError,
      io.github.vigoo.zioaws.swf.model.WorkflowExecution.ReadOnly
    ] = AwsError.unwrapOptionField("parent", parentValue)
    def tagList: ZIO[Any, AwsError, List[Tag]] =
      AwsError.unwrapOptionField("tagList", tagListValue)
    def cancelRequested: ZIO[Any, AwsError, Canceled] =
      AwsError.unwrapOptionField("cancelRequested", cancelRequestedValue)
  }
  private class Wrapper(
      impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionInfo
  ) extends io.github.vigoo.zioaws.swf.model.WorkflowExecutionInfo.ReadOnly {
    override def executionValue
        : io.github.vigoo.zioaws.swf.model.WorkflowExecution.ReadOnly =
      io.github.vigoo.zioaws.swf.model.WorkflowExecution.wrap(impl.execution())
    override def workflowTypeValue
        : io.github.vigoo.zioaws.swf.model.WorkflowType.ReadOnly =
      io.github.vigoo.zioaws.swf.model.WorkflowType.wrap(impl.workflowType())
    override def startTimestampValue: Timestamp =
      impl.startTimestamp(): Timestamp
    override def closeTimestampValue: Option[Timestamp] =
      scala.Option(impl.closeTimestamp()).map(value => value: Timestamp)
    override def executionStatusValue
        : io.github.vigoo.zioaws.swf.model.ExecutionStatus =
      io.github.vigoo.zioaws.swf.model.ExecutionStatus
        .wrap(impl.executionStatus())
    override def closeStatusValue
        : Option[io.github.vigoo.zioaws.swf.model.CloseStatus] = scala
      .Option(impl.closeStatus())
      .map(value => io.github.vigoo.zioaws.swf.model.CloseStatus.wrap(value))
    override def parentValue
        : Option[io.github.vigoo.zioaws.swf.model.WorkflowExecution.ReadOnly] =
      scala
        .Option(impl.parent())
        .map(value =>
          io.github.vigoo.zioaws.swf.model.WorkflowExecution.wrap(value)
        )
    override def tagListValue: Option[List[Tag]] = scala
      .Option(impl.tagList())
      .map(value =>
        value.asScala.map { item =>
          item: Tag
        }.toList
      )
    override def cancelRequestedValue: Option[Canceled] =
      scala.Option(impl.cancelRequested()).map(value => value: Canceled)
  }
  def wrap(
      impl: software.amazon.awssdk.services.swf.model.WorkflowExecutionInfo
  ): io.github.vigoo.zioaws.swf.model.WorkflowExecutionInfo.ReadOnly =
    new Wrapper(impl)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy