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

io.github.vigoo.zioaws.dynamodbstreams.model.package.scala Maven / Gradle / Ivy

package io.github.vigoo.zioaws.dynamodbstreams
import scala.jdk.CollectionConverters._
import java.time.Instant
import zio.{ Chunk, ZIO }
import software.amazon.awssdk.core.SdkBytes
import io.github.vigoo.zioaws.dynamodb.model._
package object model {
  object primitives {
    type AttributeName = String
    type BinaryAttributeValue = Chunk[Byte]
    type BooleanAttributeValue = Boolean
    type Date = Instant
    type KeySchemaAttributeName = String
    type NullAttributeValue = Boolean
    type NumberAttributeValue = String
    type PositiveIntegerObject = Int
    type PositiveLongObject = Long
    type SequenceNumber = String
    type ShardId = String
    type ShardIterator = String
    type StreamArn = String
    type StringAttributeValue = String
    type TableName = String
  }
  type AttributeMap = Map[primitives.AttributeName, AttributeValue]
  case class AttributeValue(s: scala.Option[primitives.StringAttributeValue] = None, n: scala.Option[primitives.NumberAttributeValue] = None, b: scala.Option[primitives.BinaryAttributeValue] = None, ss: scala.Option[Iterable[primitives.StringAttributeValue]] = None, ns: scala.Option[Iterable[primitives.NumberAttributeValue]] = None, bs: scala.Option[Iterable[primitives.BinaryAttributeValue]] = None, m: scala.Option[Map[primitives.AttributeName, AttributeValue]] = None, l: scala.Option[Iterable[AttributeValue]] = None, nul: scala.Option[primitives.NullAttributeValue] = None, bool: scala.Option[primitives.BooleanAttributeValue] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.AttributeValue = {
      import AttributeValue.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.AttributeValue.builder().optionallyWith(s.map(value => value: java.lang.String))(_.s).optionallyWith(n.map(value => value: java.lang.String))(_.n).optionallyWith(b.map(value => SdkBytes.fromByteArray(value.toArray[Byte])))(_.b).optionallyWith(ss.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.ss).optionallyWith(ns.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.ns).optionallyWith(bs.map(value => value.map { item => 
        SdkBytes.fromByteArray(item.toArray[Byte])
      }.asJavaCollection))(_.bs).optionallyWith(m.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.m).optionallyWith(l.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.l).optionallyWith(nul.map(value => value: java.lang.Boolean))(_.nul).optionallyWith(bool.map(value => value: java.lang.Boolean))(_.bool).build()
    }
  }
  object AttributeValue {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.AttributeValue] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AttributeValue = AttributeValue(sValue.map(value => value), nValue.map(value => value), bValue.map(value => value), ssValue.map(value => value), nsValue.map(value => value), bsValue.map(value => value), mValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), lValue.map(value => value.map { item => 
        item.editable
      }), nulValue.map(value => value), boolValue.map(value => value))
      def sValue: scala.Option[primitives.StringAttributeValue]
      def nValue: scala.Option[primitives.NumberAttributeValue]
      def bValue: scala.Option[primitives.BinaryAttributeValue]
      def ssValue: scala.Option[List[primitives.StringAttributeValue]]
      def nsValue: scala.Option[List[primitives.NumberAttributeValue]]
      def bsValue: scala.Option[List[primitives.BinaryAttributeValue]]
      def mValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]]
      def lValue: scala.Option[List[AttributeValue.ReadOnly]]
      def nulValue: scala.Option[primitives.NullAttributeValue]
      def boolValue: scala.Option[primitives.BooleanAttributeValue]
      def s: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.StringAttributeValue] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("s", sValue)
      def n: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NumberAttributeValue] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("n", nValue)
      def b: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BinaryAttributeValue] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("b", bValue)
      def ss: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.StringAttributeValue]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ss", ssValue)
      def ns: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.NumberAttributeValue]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("ns", nsValue)
      def bs: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.BinaryAttributeValue]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bs", bsValue)
      def m: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("m", mValue)
      def l: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("l", lValue)
      def nul: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NullAttributeValue] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nul", nulValue)
      def bool: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BooleanAttributeValue] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bool", boolValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.AttributeValue) extends AttributeValue.ReadOnly {
      override def sValue: scala.Option[primitives.StringAttributeValue] = scala.Option(impl.s()).map(value => value: primitives.StringAttributeValue)
      override def nValue: scala.Option[primitives.NumberAttributeValue] = scala.Option(impl.n()).map(value => value: primitives.NumberAttributeValue)
      override def bValue: scala.Option[primitives.BinaryAttributeValue] = scala.Option(impl.b()).map(value => Chunk.fromByteBuffer(value.asByteBuffer()))
      override def ssValue: scala.Option[List[primitives.StringAttributeValue]] = scala.Option(impl.ss()).map(value => value.asScala.map { item => 
        item: primitives.StringAttributeValue
      }.toList)
      override def nsValue: scala.Option[List[primitives.NumberAttributeValue]] = scala.Option(impl.ns()).map(value => value.asScala.map { item => 
        item: primitives.NumberAttributeValue
      }.toList)
      override def bsValue: scala.Option[List[primitives.BinaryAttributeValue]] = scala.Option(impl.bs()).map(value => value.asScala.map { item => 
        Chunk.fromByteBuffer(item.asByteBuffer())
      }.toList)
      override def mValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]] = scala.Option(impl.m()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap)
      override def lValue: scala.Option[List[AttributeValue.ReadOnly]] = scala.Option(impl.l()).map(value => value.asScala.map { item => 
        AttributeValue.wrap(item)
      }.toList)
      override def nulValue: scala.Option[primitives.NullAttributeValue] = scala.Option(impl.nul()).map(value => value: primitives.NullAttributeValue)
      override def boolValue: scala.Option[primitives.BooleanAttributeValue] = scala.Option(impl.bool()).map(value => value: primitives.BooleanAttributeValue)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.AttributeValue): ReadOnly = new Wrapper(impl)
  }
  type BinarySetAttributeValue = List[primitives.BinaryAttributeValue]
  case class DescribeStreamRequest(streamArn: primitives.StreamArn, limit: scala.Option[primitives.PositiveIntegerObject] = None, exclusiveStartShardId: scala.Option[primitives.ShardId] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeStreamRequest = {
      import DescribeStreamRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeStreamRequest.builder().streamArn(streamArn: java.lang.String).optionallyWith(limit.map(value => value: java.lang.Integer))(_.limit).optionallyWith(exclusiveStartShardId.map(value => value: java.lang.String))(_.exclusiveStartShardId).build()
    }
  }
  object DescribeStreamRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeStreamRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeStreamRequest = DescribeStreamRequest(streamArnValue, limitValue.map(value => value), exclusiveStartShardIdValue.map(value => value))
      def streamArnValue: primitives.StreamArn
      def limitValue: scala.Option[primitives.PositiveIntegerObject]
      def exclusiveStartShardIdValue: scala.Option[primitives.ShardId]
      def streamArn: ZIO[Any, Nothing, primitives.StreamArn] = ZIO.succeed(streamArnValue)
      def limit: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveIntegerObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("limit", limitValue)
      def exclusiveStartShardId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ShardId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exclusiveStartShardId", exclusiveStartShardIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeStreamRequest) extends DescribeStreamRequest.ReadOnly {
      override def streamArnValue: primitives.StreamArn = impl.streamArn(): primitives.StreamArn
      override def limitValue: scala.Option[primitives.PositiveIntegerObject] = scala.Option(impl.limit()).map(value => value: primitives.PositiveIntegerObject)
      override def exclusiveStartShardIdValue: scala.Option[primitives.ShardId] = scala.Option(impl.exclusiveStartShardId()).map(value => value: primitives.ShardId)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeStreamRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeStreamResponse(streamDescription: scala.Option[StreamDescription] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.DescribeStreamResponse = {
      import DescribeStreamResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.DescribeStreamResponse.builder().optionallyWith(streamDescription.map(value => value.buildAwsValue()))(_.streamDescription).build()
    }
  }
  object DescribeStreamResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.DescribeStreamResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeStreamResponse = DescribeStreamResponse(streamDescriptionValue.map(value => value.editable))
      def streamDescriptionValue: scala.Option[StreamDescription.ReadOnly]
      def streamDescription: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, StreamDescription.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("streamDescription", streamDescriptionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.DescribeStreamResponse) extends DescribeStreamResponse.ReadOnly { override def streamDescriptionValue: scala.Option[StreamDescription.ReadOnly] = scala.Option(impl.streamDescription()).map(value => StreamDescription.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.DescribeStreamResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetRecordsRequest(shardIterator: primitives.ShardIterator, limit: scala.Option[primitives.PositiveIntegerObject] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.GetRecordsRequest = {
      import GetRecordsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.GetRecordsRequest.builder().shardIterator(shardIterator: java.lang.String).optionallyWith(limit.map(value => value: java.lang.Integer))(_.limit).build()
    }
  }
  object GetRecordsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.GetRecordsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRecordsRequest = GetRecordsRequest(shardIteratorValue, limitValue.map(value => value))
      def shardIteratorValue: primitives.ShardIterator
      def limitValue: scala.Option[primitives.PositiveIntegerObject]
      def shardIterator: ZIO[Any, Nothing, primitives.ShardIterator] = ZIO.succeed(shardIteratorValue)
      def limit: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveIntegerObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("limit", limitValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.GetRecordsRequest) extends GetRecordsRequest.ReadOnly {
      override def shardIteratorValue: primitives.ShardIterator = impl.shardIterator(): primitives.ShardIterator
      override def limitValue: scala.Option[primitives.PositiveIntegerObject] = scala.Option(impl.limit()).map(value => value: primitives.PositiveIntegerObject)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.GetRecordsRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetRecordsResponse(records: scala.Option[Iterable[Record]] = None, nextShardIterator: scala.Option[primitives.ShardIterator] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.GetRecordsResponse = {
      import GetRecordsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.GetRecordsResponse.builder().optionallyWith(records.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.records).optionallyWith(nextShardIterator.map(value => value: java.lang.String))(_.nextShardIterator).build()
    }
  }
  object GetRecordsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.GetRecordsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetRecordsResponse = GetRecordsResponse(recordsValue.map(value => value.map { item => 
        item.editable
      }), nextShardIteratorValue.map(value => value))
      def recordsValue: scala.Option[List[Record.ReadOnly]]
      def nextShardIteratorValue: scala.Option[primitives.ShardIterator]
      def records: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Record.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("records", recordsValue)
      def nextShardIterator: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ShardIterator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextShardIterator", nextShardIteratorValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.GetRecordsResponse) extends GetRecordsResponse.ReadOnly {
      override def recordsValue: scala.Option[List[Record.ReadOnly]] = scala.Option(impl.records()).map(value => value.asScala.map { item => 
        Record.wrap(item)
      }.toList)
      override def nextShardIteratorValue: scala.Option[primitives.ShardIterator] = scala.Option(impl.nextShardIterator()).map(value => value: primitives.ShardIterator)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.GetRecordsResponse): ReadOnly = new Wrapper(impl)
  }
  case class GetShardIteratorRequest(streamArn: primitives.StreamArn, shardId: primitives.ShardId, shardIteratorType: ShardIteratorType, sequenceNumber: scala.Option[primitives.SequenceNumber] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.GetShardIteratorRequest = {
      import GetShardIteratorRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.GetShardIteratorRequest.builder().streamArn(streamArn: java.lang.String).shardId(shardId: java.lang.String).shardIteratorType(shardIteratorType.unwrap).optionallyWith(sequenceNumber.map(value => value: java.lang.String))(_.sequenceNumber).build()
    }
  }
  object GetShardIteratorRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.GetShardIteratorRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetShardIteratorRequest = GetShardIteratorRequest(streamArnValue, shardIdValue, shardIteratorTypeValue, sequenceNumberValue.map(value => value))
      def streamArnValue: primitives.StreamArn
      def shardIdValue: primitives.ShardId
      def shardIteratorTypeValue: ShardIteratorType
      def sequenceNumberValue: scala.Option[primitives.SequenceNumber]
      def streamArn: ZIO[Any, Nothing, primitives.StreamArn] = ZIO.succeed(streamArnValue)
      def shardId: ZIO[Any, Nothing, primitives.ShardId] = ZIO.succeed(shardIdValue)
      def shardIteratorType: ZIO[Any, Nothing, ShardIteratorType] = ZIO.succeed(shardIteratorTypeValue)
      def sequenceNumber: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.SequenceNumber] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sequenceNumber", sequenceNumberValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.GetShardIteratorRequest) extends GetShardIteratorRequest.ReadOnly {
      override def streamArnValue: primitives.StreamArn = impl.streamArn(): primitives.StreamArn
      override def shardIdValue: primitives.ShardId = impl.shardId(): primitives.ShardId
      override def shardIteratorTypeValue: ShardIteratorType = ShardIteratorType.wrap(impl.shardIteratorType())
      override def sequenceNumberValue: scala.Option[primitives.SequenceNumber] = scala.Option(impl.sequenceNumber()).map(value => value: primitives.SequenceNumber)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.GetShardIteratorRequest): ReadOnly = new Wrapper(impl)
  }
  case class GetShardIteratorResponse(shardIterator: scala.Option[primitives.ShardIterator] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.GetShardIteratorResponse = {
      import GetShardIteratorResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.GetShardIteratorResponse.builder().optionallyWith(shardIterator.map(value => value: java.lang.String))(_.shardIterator).build()
    }
  }
  object GetShardIteratorResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.GetShardIteratorResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GetShardIteratorResponse = GetShardIteratorResponse(shardIteratorValue.map(value => value))
      def shardIteratorValue: scala.Option[primitives.ShardIterator]
      def shardIterator: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ShardIterator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("shardIterator", shardIteratorValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.GetShardIteratorResponse) extends GetShardIteratorResponse.ReadOnly { override def shardIteratorValue: scala.Option[primitives.ShardIterator] = scala.Option(impl.shardIterator()).map(value => value: primitives.ShardIterator) }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.GetShardIteratorResponse): ReadOnly = new Wrapper(impl)
  }
  case class Identity(principalId: scala.Option[String] = None, `type`: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.Identity = {
      import Identity.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.Identity.builder().optionallyWith(principalId.map(value => value: java.lang.String))(_.principalId).optionallyWith(`type`.map(value => value: java.lang.String))(_.`type`).build()
    }
  }
  object Identity {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.Identity] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Identity = Identity(principalIdValue.map(value => value), typeValue.map(value => value))
      def principalIdValue: scala.Option[String]
      def typeValue: scala.Option[String]
      def principalId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("principalId", principalIdValue)
      def `type`: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("type", typeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.Identity) extends Identity.ReadOnly {
      override def principalIdValue: scala.Option[String] = scala.Option(impl.principalId()).map(value => value: String)
      override def typeValue: scala.Option[String] = scala.Option(impl.`type`()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.Identity): ReadOnly = new Wrapper(impl)
  }
  type KeySchema = List[KeySchemaElement]
  case class KeySchemaElement(attributeName: primitives.KeySchemaAttributeName, keyType: KeyType) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.KeySchemaElement = {
      import KeySchemaElement.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.KeySchemaElement.builder().attributeName(attributeName: java.lang.String).keyType(keyType.unwrap).build()
    }
  }
  object KeySchemaElement {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.KeySchemaElement] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: KeySchemaElement = KeySchemaElement(attributeNameValue, keyTypeValue)
      def attributeNameValue: primitives.KeySchemaAttributeName
      def keyTypeValue: KeyType
      def attributeName: ZIO[Any, Nothing, primitives.KeySchemaAttributeName] = ZIO.succeed(attributeNameValue)
      def keyType: ZIO[Any, Nothing, KeyType] = ZIO.succeed(keyTypeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.KeySchemaElement) extends KeySchemaElement.ReadOnly {
      override def attributeNameValue: primitives.KeySchemaAttributeName = impl.attributeName(): primitives.KeySchemaAttributeName
      override def keyTypeValue: KeyType = KeyType.wrap(impl.keyType())
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.KeySchemaElement): ReadOnly = new Wrapper(impl)
  }
  sealed trait KeyType { def unwrap: software.amazon.awssdk.services.dynamodb.model.KeyType }
  object KeyType {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.KeyType): KeyType = value match {
      case software.amazon.awssdk.services.dynamodb.model.KeyType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.KeyType.HASH => HASH
      case software.amazon.awssdk.services.dynamodb.model.KeyType.RANGE => RANGE
    }
    final case object unknownToSdkVersion extends KeyType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.KeyType = software.amazon.awssdk.services.dynamodb.model.KeyType.UNKNOWN_TO_SDK_VERSION }
    final case object HASH extends KeyType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.KeyType = software.amazon.awssdk.services.dynamodb.model.KeyType.HASH }
    final case object RANGE extends KeyType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.KeyType = software.amazon.awssdk.services.dynamodb.model.KeyType.RANGE }
  }
  type ListAttributeValue = List[AttributeValue]
  case class ListStreamsRequest(tableName: scala.Option[primitives.TableName] = None, limit: scala.Option[primitives.PositiveIntegerObject] = None, exclusiveStartStreamArn: scala.Option[primitives.StreamArn] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ListStreamsRequest = {
      import ListStreamsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ListStreamsRequest.builder().optionallyWith(tableName.map(value => value: java.lang.String))(_.tableName).optionallyWith(limit.map(value => value: java.lang.Integer))(_.limit).optionallyWith(exclusiveStartStreamArn.map(value => value: java.lang.String))(_.exclusiveStartStreamArn).build()
    }
  }
  object ListStreamsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ListStreamsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListStreamsRequest = ListStreamsRequest(tableNameValue.map(value => value), limitValue.map(value => value), exclusiveStartStreamArnValue.map(value => value))
      def tableNameValue: scala.Option[primitives.TableName]
      def limitValue: scala.Option[primitives.PositiveIntegerObject]
      def exclusiveStartStreamArnValue: scala.Option[primitives.StreamArn]
      def tableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableName", tableNameValue)
      def limit: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveIntegerObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("limit", limitValue)
      def exclusiveStartStreamArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.StreamArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("exclusiveStartStreamArn", exclusiveStartStreamArnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ListStreamsRequest) extends ListStreamsRequest.ReadOnly {
      override def tableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.tableName()).map(value => value: primitives.TableName)
      override def limitValue: scala.Option[primitives.PositiveIntegerObject] = scala.Option(impl.limit()).map(value => value: primitives.PositiveIntegerObject)
      override def exclusiveStartStreamArnValue: scala.Option[primitives.StreamArn] = scala.Option(impl.exclusiveStartStreamArn()).map(value => value: primitives.StreamArn)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ListStreamsRequest): ReadOnly = new Wrapper(impl)
  }
  case class ListStreamsResponse(streams: scala.Option[Iterable[Stream]] = None, lastEvaluatedStreamArn: scala.Option[primitives.StreamArn] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.ListStreamsResponse = {
      import ListStreamsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.ListStreamsResponse.builder().optionallyWith(streams.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.streams).optionallyWith(lastEvaluatedStreamArn.map(value => value: java.lang.String))(_.lastEvaluatedStreamArn).build()
    }
  }
  object ListStreamsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.ListStreamsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListStreamsResponse = ListStreamsResponse(streamsValue.map(value => value.map { item => 
        item.editable
      }), lastEvaluatedStreamArnValue.map(value => value))
      def streamsValue: scala.Option[List[Stream.ReadOnly]]
      def lastEvaluatedStreamArnValue: scala.Option[primitives.StreamArn]
      def streams: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Stream.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("streams", streamsValue)
      def lastEvaluatedStreamArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.StreamArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lastEvaluatedStreamArn", lastEvaluatedStreamArnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.ListStreamsResponse) extends ListStreamsResponse.ReadOnly {
      override def streamsValue: scala.Option[List[Stream.ReadOnly]] = scala.Option(impl.streams()).map(value => value.asScala.map { item => 
        Stream.wrap(item)
      }.toList)
      override def lastEvaluatedStreamArnValue: scala.Option[primitives.StreamArn] = scala.Option(impl.lastEvaluatedStreamArn()).map(value => value: primitives.StreamArn)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.ListStreamsResponse): ReadOnly = new Wrapper(impl)
  }
  type MapAttributeValue = Map[primitives.AttributeName, AttributeValue]
  type NumberSetAttributeValue = List[primitives.NumberAttributeValue]
  sealed trait OperationType { def unwrap: software.amazon.awssdk.services.dynamodb.model.OperationType }
  object OperationType {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.OperationType): OperationType = value match {
      case software.amazon.awssdk.services.dynamodb.model.OperationType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.OperationType.INSERT => INSERT
      case software.amazon.awssdk.services.dynamodb.model.OperationType.MODIFY => MODIFY
      case software.amazon.awssdk.services.dynamodb.model.OperationType.REMOVE => REMOVE
    }
    final case object unknownToSdkVersion extends OperationType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.OperationType = software.amazon.awssdk.services.dynamodb.model.OperationType.UNKNOWN_TO_SDK_VERSION }
    final case object INSERT extends OperationType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.OperationType = software.amazon.awssdk.services.dynamodb.model.OperationType.INSERT }
    final case object MODIFY extends OperationType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.OperationType = software.amazon.awssdk.services.dynamodb.model.OperationType.MODIFY }
    final case object REMOVE extends OperationType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.OperationType = software.amazon.awssdk.services.dynamodb.model.OperationType.REMOVE }
  }
  case class Record(eventID: scala.Option[String] = None, eventName: scala.Option[OperationType] = None, eventVersion: scala.Option[String] = None, eventSource: scala.Option[String] = None, awsRegion: scala.Option[String] = None, dynamodb: scala.Option[StreamRecord] = None, userIdentity: scala.Option[Identity] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.Record = {
      import Record.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.Record.builder().optionallyWith(eventID.map(value => value: java.lang.String))(_.eventID).optionallyWith(eventName.map(value => value.unwrap))(_.eventName).optionallyWith(eventVersion.map(value => value: java.lang.String))(_.eventVersion).optionallyWith(eventSource.map(value => value: java.lang.String))(_.eventSource).optionallyWith(awsRegion.map(value => value: java.lang.String))(_.awsRegion).optionallyWith(dynamodb.map(value => value.buildAwsValue()))(_.dynamodb).optionallyWith(userIdentity.map(value => value.buildAwsValue()))(_.userIdentity).build()
    }
  }
  object Record {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.Record] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Record = Record(eventIDValue.map(value => value), eventNameValue.map(value => value), eventVersionValue.map(value => value), eventSourceValue.map(value => value), awsRegionValue.map(value => value), dynamodbValue.map(value => value.editable), userIdentityValue.map(value => value.editable))
      def eventIDValue: scala.Option[String]
      def eventNameValue: scala.Option[OperationType]
      def eventVersionValue: scala.Option[String]
      def eventSourceValue: scala.Option[String]
      def awsRegionValue: scala.Option[String]
      def dynamodbValue: scala.Option[StreamRecord.ReadOnly]
      def userIdentityValue: scala.Option[Identity.ReadOnly]
      def eventID: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("eventID", eventIDValue)
      def eventName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, OperationType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("eventName", eventNameValue)
      def eventVersion: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("eventVersion", eventVersionValue)
      def eventSource: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("eventSource", eventSourceValue)
      def awsRegion: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("awsRegion", awsRegionValue)
      def dynamodb: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, StreamRecord.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("dynamodb", dynamodbValue)
      def userIdentity: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Identity.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("userIdentity", userIdentityValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.Record) extends Record.ReadOnly {
      override def eventIDValue: scala.Option[String] = scala.Option(impl.eventID()).map(value => value: String)
      override def eventNameValue: scala.Option[OperationType] = scala.Option(impl.eventName()).map(value => OperationType.wrap(value))
      override def eventVersionValue: scala.Option[String] = scala.Option(impl.eventVersion()).map(value => value: String)
      override def eventSourceValue: scala.Option[String] = scala.Option(impl.eventSource()).map(value => value: String)
      override def awsRegionValue: scala.Option[String] = scala.Option(impl.awsRegion()).map(value => value: String)
      override def dynamodbValue: scala.Option[StreamRecord.ReadOnly] = scala.Option(impl.dynamodb()).map(value => StreamRecord.wrap(value))
      override def userIdentityValue: scala.Option[Identity.ReadOnly] = scala.Option(impl.userIdentity()).map(value => Identity.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.Record): ReadOnly = new Wrapper(impl)
  }
  type RecordList = List[Record]
  case class SequenceNumberRange(startingSequenceNumber: scala.Option[primitives.SequenceNumber] = None, endingSequenceNumber: scala.Option[primitives.SequenceNumber] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.SequenceNumberRange = {
      import SequenceNumberRange.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.SequenceNumberRange.builder().optionallyWith(startingSequenceNumber.map(value => value: java.lang.String))(_.startingSequenceNumber).optionallyWith(endingSequenceNumber.map(value => value: java.lang.String))(_.endingSequenceNumber).build()
    }
  }
  object SequenceNumberRange {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.SequenceNumberRange] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SequenceNumberRange = SequenceNumberRange(startingSequenceNumberValue.map(value => value), endingSequenceNumberValue.map(value => value))
      def startingSequenceNumberValue: scala.Option[primitives.SequenceNumber]
      def endingSequenceNumberValue: scala.Option[primitives.SequenceNumber]
      def startingSequenceNumber: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.SequenceNumber] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("startingSequenceNumber", startingSequenceNumberValue)
      def endingSequenceNumber: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.SequenceNumber] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("endingSequenceNumber", endingSequenceNumberValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.SequenceNumberRange) extends SequenceNumberRange.ReadOnly {
      override def startingSequenceNumberValue: scala.Option[primitives.SequenceNumber] = scala.Option(impl.startingSequenceNumber()).map(value => value: primitives.SequenceNumber)
      override def endingSequenceNumberValue: scala.Option[primitives.SequenceNumber] = scala.Option(impl.endingSequenceNumber()).map(value => value: primitives.SequenceNumber)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.SequenceNumberRange): ReadOnly = new Wrapper(impl)
  }
  case class Shard(shardId: scala.Option[primitives.ShardId] = None, sequenceNumberRange: scala.Option[SequenceNumberRange] = None, parentShardId: scala.Option[primitives.ShardId] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.Shard = {
      import Shard.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.Shard.builder().optionallyWith(shardId.map(value => value: java.lang.String))(_.shardId).optionallyWith(sequenceNumberRange.map(value => value.buildAwsValue()))(_.sequenceNumberRange).optionallyWith(parentShardId.map(value => value: java.lang.String))(_.parentShardId).build()
    }
  }
  object Shard {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.Shard] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Shard = Shard(shardIdValue.map(value => value), sequenceNumberRangeValue.map(value => value.editable), parentShardIdValue.map(value => value))
      def shardIdValue: scala.Option[primitives.ShardId]
      def sequenceNumberRangeValue: scala.Option[SequenceNumberRange.ReadOnly]
      def parentShardIdValue: scala.Option[primitives.ShardId]
      def shardId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ShardId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("shardId", shardIdValue)
      def sequenceNumberRange: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SequenceNumberRange.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sequenceNumberRange", sequenceNumberRangeValue)
      def parentShardId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ShardId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("parentShardId", parentShardIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.Shard) extends Shard.ReadOnly {
      override def shardIdValue: scala.Option[primitives.ShardId] = scala.Option(impl.shardId()).map(value => value: primitives.ShardId)
      override def sequenceNumberRangeValue: scala.Option[SequenceNumberRange.ReadOnly] = scala.Option(impl.sequenceNumberRange()).map(value => SequenceNumberRange.wrap(value))
      override def parentShardIdValue: scala.Option[primitives.ShardId] = scala.Option(impl.parentShardId()).map(value => value: primitives.ShardId)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.Shard): ReadOnly = new Wrapper(impl)
  }
  type ShardDescriptionList = List[Shard]
  sealed trait ShardIteratorType { def unwrap: software.amazon.awssdk.services.dynamodb.model.ShardIteratorType }
  object ShardIteratorType {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.ShardIteratorType): ShardIteratorType = value match {
      case software.amazon.awssdk.services.dynamodb.model.ShardIteratorType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.ShardIteratorType.TRIM_HORIZON => TRIM_HORIZON
      case software.amazon.awssdk.services.dynamodb.model.ShardIteratorType.LATEST => LATEST
      case software.amazon.awssdk.services.dynamodb.model.ShardIteratorType.AT_SEQUENCE_NUMBER => AT_SEQUENCE_NUMBER
      case software.amazon.awssdk.services.dynamodb.model.ShardIteratorType.AFTER_SEQUENCE_NUMBER => AFTER_SEQUENCE_NUMBER
    }
    final case object unknownToSdkVersion extends ShardIteratorType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ShardIteratorType = software.amazon.awssdk.services.dynamodb.model.ShardIteratorType.UNKNOWN_TO_SDK_VERSION }
    final case object TRIM_HORIZON extends ShardIteratorType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ShardIteratorType = software.amazon.awssdk.services.dynamodb.model.ShardIteratorType.TRIM_HORIZON }
    final case object LATEST extends ShardIteratorType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ShardIteratorType = software.amazon.awssdk.services.dynamodb.model.ShardIteratorType.LATEST }
    final case object AT_SEQUENCE_NUMBER extends ShardIteratorType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ShardIteratorType = software.amazon.awssdk.services.dynamodb.model.ShardIteratorType.AT_SEQUENCE_NUMBER }
    final case object AFTER_SEQUENCE_NUMBER extends ShardIteratorType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.ShardIteratorType = software.amazon.awssdk.services.dynamodb.model.ShardIteratorType.AFTER_SEQUENCE_NUMBER }
  }
  case class Stream(streamArn: scala.Option[primitives.StreamArn] = None, tableName: scala.Option[primitives.TableName] = None, streamLabel: scala.Option[String] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.Stream = {
      import Stream.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.Stream.builder().optionallyWith(streamArn.map(value => value: java.lang.String))(_.streamArn).optionallyWith(tableName.map(value => value: java.lang.String))(_.tableName).optionallyWith(streamLabel.map(value => value: java.lang.String))(_.streamLabel).build()
    }
  }
  object Stream {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.Stream] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Stream = Stream(streamArnValue.map(value => value), tableNameValue.map(value => value), streamLabelValue.map(value => value))
      def streamArnValue: scala.Option[primitives.StreamArn]
      def tableNameValue: scala.Option[primitives.TableName]
      def streamLabelValue: scala.Option[String]
      def streamArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.StreamArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("streamArn", streamArnValue)
      def tableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableName", tableNameValue)
      def streamLabel: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("streamLabel", streamLabelValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.Stream) extends Stream.ReadOnly {
      override def streamArnValue: scala.Option[primitives.StreamArn] = scala.Option(impl.streamArn()).map(value => value: primitives.StreamArn)
      override def tableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.tableName()).map(value => value: primitives.TableName)
      override def streamLabelValue: scala.Option[String] = scala.Option(impl.streamLabel()).map(value => value: String)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.Stream): ReadOnly = new Wrapper(impl)
  }
  case class StreamDescription(streamArn: scala.Option[primitives.StreamArn] = None, streamLabel: scala.Option[String] = None, streamStatus: scala.Option[StreamStatus] = None, streamViewType: scala.Option[StreamViewType] = None, creationRequestDateTime: scala.Option[primitives.Date] = None, tableName: scala.Option[primitives.TableName] = None, keySchema: scala.Option[Iterable[KeySchemaElement]] = None, shards: scala.Option[Iterable[Shard]] = None, lastEvaluatedShardId: scala.Option[primitives.ShardId] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.StreamDescription = {
      import StreamDescription.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.StreamDescription.builder().optionallyWith(streamArn.map(value => value: java.lang.String))(_.streamArn).optionallyWith(streamLabel.map(value => value: java.lang.String))(_.streamLabel).optionallyWith(streamStatus.map(value => value.unwrap))(_.streamStatus).optionallyWith(streamViewType.map(value => value.unwrap))(_.streamViewType).optionallyWith(creationRequestDateTime.map(value => value: java.time.Instant))(_.creationRequestDateTime).optionallyWith(tableName.map(value => value: java.lang.String))(_.tableName).optionallyWith(keySchema.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.keySchema).optionallyWith(shards.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.shards).optionallyWith(lastEvaluatedShardId.map(value => value: java.lang.String))(_.lastEvaluatedShardId).build()
    }
  }
  object StreamDescription {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.StreamDescription] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StreamDescription = StreamDescription(streamArnValue.map(value => value), streamLabelValue.map(value => value), streamStatusValue.map(value => value), streamViewTypeValue.map(value => value), creationRequestDateTimeValue.map(value => value), tableNameValue.map(value => value), keySchemaValue.map(value => value.map { item => 
        item.editable
      }), shardsValue.map(value => value.map { item => 
        item.editable
      }), lastEvaluatedShardIdValue.map(value => value))
      def streamArnValue: scala.Option[primitives.StreamArn]
      def streamLabelValue: scala.Option[String]
      def streamStatusValue: scala.Option[StreamStatus]
      def streamViewTypeValue: scala.Option[StreamViewType]
      def creationRequestDateTimeValue: scala.Option[primitives.Date]
      def tableNameValue: scala.Option[primitives.TableName]
      def keySchemaValue: scala.Option[List[KeySchemaElement.ReadOnly]]
      def shardsValue: scala.Option[List[Shard.ReadOnly]]
      def lastEvaluatedShardIdValue: scala.Option[primitives.ShardId]
      def streamArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.StreamArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("streamArn", streamArnValue)
      def streamLabel: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, String] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("streamLabel", streamLabelValue)
      def streamStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, StreamStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("streamStatus", streamStatusValue)
      def streamViewType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, StreamViewType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("streamViewType", streamViewTypeValue)
      def creationRequestDateTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("creationRequestDateTime", creationRequestDateTimeValue)
      def tableName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TableName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tableName", tableNameValue)
      def keySchema: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[KeySchemaElement.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("keySchema", keySchemaValue)
      def shards: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Shard.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("shards", shardsValue)
      def lastEvaluatedShardId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ShardId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lastEvaluatedShardId", lastEvaluatedShardIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.StreamDescription) extends StreamDescription.ReadOnly {
      override def streamArnValue: scala.Option[primitives.StreamArn] = scala.Option(impl.streamArn()).map(value => value: primitives.StreamArn)
      override def streamLabelValue: scala.Option[String] = scala.Option(impl.streamLabel()).map(value => value: String)
      override def streamStatusValue: scala.Option[StreamStatus] = scala.Option(impl.streamStatus()).map(value => StreamStatus.wrap(value))
      override def streamViewTypeValue: scala.Option[StreamViewType] = scala.Option(impl.streamViewType()).map(value => StreamViewType.wrap(value))
      override def creationRequestDateTimeValue: scala.Option[primitives.Date] = scala.Option(impl.creationRequestDateTime()).map(value => value: primitives.Date)
      override def tableNameValue: scala.Option[primitives.TableName] = scala.Option(impl.tableName()).map(value => value: primitives.TableName)
      override def keySchemaValue: scala.Option[List[KeySchemaElement.ReadOnly]] = scala.Option(impl.keySchema()).map(value => value.asScala.map { item => 
        KeySchemaElement.wrap(item)
      }.toList)
      override def shardsValue: scala.Option[List[Shard.ReadOnly]] = scala.Option(impl.shards()).map(value => value.asScala.map { item => 
        Shard.wrap(item)
      }.toList)
      override def lastEvaluatedShardIdValue: scala.Option[primitives.ShardId] = scala.Option(impl.lastEvaluatedShardId()).map(value => value: primitives.ShardId)
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.StreamDescription): ReadOnly = new Wrapper(impl)
  }
  type StreamList = List[Stream]
  case class StreamRecord(approximateCreationDateTime: scala.Option[primitives.Date] = None, keys: scala.Option[Map[primitives.AttributeName, AttributeValue]] = None, newImage: scala.Option[Map[primitives.AttributeName, AttributeValue]] = None, oldImage: scala.Option[Map[primitives.AttributeName, AttributeValue]] = None, sequenceNumber: scala.Option[primitives.SequenceNumber] = None, sizeBytes: scala.Option[primitives.PositiveLongObject] = None, streamViewType: scala.Option[StreamViewType] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.dynamodb.model.StreamRecord = {
      import StreamRecord.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.dynamodb.model.StreamRecord.builder().optionallyWith(approximateCreationDateTime.map(value => value: java.time.Instant))(_.approximateCreationDateTime).optionallyWith(keys.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.keys).optionallyWith(newImage.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.newImage).optionallyWith(oldImage.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> value.buildAwsValue()
      }).asJava))(_.oldImage).optionallyWith(sequenceNumber.map(value => value: java.lang.String))(_.sequenceNumber).optionallyWith(sizeBytes.map(value => value: java.lang.Long))(_.sizeBytes).optionallyWith(streamViewType.map(value => value.unwrap))(_.streamViewType).build()
    }
  }
  object StreamRecord {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.dynamodb.model.StreamRecord] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StreamRecord = StreamRecord(approximateCreationDateTimeValue.map(value => value), keysValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), newImageValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), oldImageValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), sequenceNumberValue.map(value => value), sizeBytesValue.map(value => value), streamViewTypeValue.map(value => value))
      def approximateCreationDateTimeValue: scala.Option[primitives.Date]
      def keysValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]]
      def newImageValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]]
      def oldImageValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]]
      def sequenceNumberValue: scala.Option[primitives.SequenceNumber]
      def sizeBytesValue: scala.Option[primitives.PositiveLongObject]
      def streamViewTypeValue: scala.Option[StreamViewType]
      def approximateCreationDateTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("approximateCreationDateTime", approximateCreationDateTimeValue)
      def keys: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("keys", keysValue)
      def newImage: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("newImage", newImageValue)
      def oldImage: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.AttributeName, AttributeValue.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("oldImage", oldImageValue)
      def sequenceNumber: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.SequenceNumber] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sequenceNumber", sequenceNumberValue)
      def sizeBytes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PositiveLongObject] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sizeBytes", sizeBytesValue)
      def streamViewType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, StreamViewType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("streamViewType", streamViewTypeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.dynamodb.model.StreamRecord) extends StreamRecord.ReadOnly {
      override def approximateCreationDateTimeValue: scala.Option[primitives.Date] = scala.Option(impl.approximateCreationDateTime()).map(value => value: primitives.Date)
      override def keysValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]] = scala.Option(impl.keys()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap)
      override def newImageValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]] = scala.Option(impl.newImage()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap)
      override def oldImageValue: scala.Option[Map[primitives.AttributeName, AttributeValue.ReadOnly]] = scala.Option(impl.oldImage()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.AttributeName) -> AttributeValue.wrap(value)
      }).toMap)
      override def sequenceNumberValue: scala.Option[primitives.SequenceNumber] = scala.Option(impl.sequenceNumber()).map(value => value: primitives.SequenceNumber)
      override def sizeBytesValue: scala.Option[primitives.PositiveLongObject] = scala.Option(impl.sizeBytes()).map(value => value: primitives.PositiveLongObject)
      override def streamViewTypeValue: scala.Option[StreamViewType] = scala.Option(impl.streamViewType()).map(value => StreamViewType.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.dynamodb.model.StreamRecord): ReadOnly = new Wrapper(impl)
  }
  sealed trait StreamStatus { def unwrap: software.amazon.awssdk.services.dynamodb.model.StreamStatus }
  object StreamStatus {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.StreamStatus): StreamStatus = value match {
      case software.amazon.awssdk.services.dynamodb.model.StreamStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.StreamStatus.ENABLING => ENABLING
      case software.amazon.awssdk.services.dynamodb.model.StreamStatus.ENABLED => ENABLED
      case software.amazon.awssdk.services.dynamodb.model.StreamStatus.DISABLING => DISABLING
      case software.amazon.awssdk.services.dynamodb.model.StreamStatus.DISABLED => DISABLED
    }
    final case object unknownToSdkVersion extends StreamStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.StreamStatus = software.amazon.awssdk.services.dynamodb.model.StreamStatus.UNKNOWN_TO_SDK_VERSION }
    final case object ENABLING extends StreamStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.StreamStatus = software.amazon.awssdk.services.dynamodb.model.StreamStatus.ENABLING }
    final case object ENABLED extends StreamStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.StreamStatus = software.amazon.awssdk.services.dynamodb.model.StreamStatus.ENABLED }
    final case object DISABLING extends StreamStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.StreamStatus = software.amazon.awssdk.services.dynamodb.model.StreamStatus.DISABLING }
    final case object DISABLED extends StreamStatus { override def unwrap: software.amazon.awssdk.services.dynamodb.model.StreamStatus = software.amazon.awssdk.services.dynamodb.model.StreamStatus.DISABLED }
  }
  sealed trait StreamViewType { def unwrap: software.amazon.awssdk.services.dynamodb.model.StreamViewType }
  object StreamViewType {
    def wrap(value: software.amazon.awssdk.services.dynamodb.model.StreamViewType): StreamViewType = value match {
      case software.amazon.awssdk.services.dynamodb.model.StreamViewType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.dynamodb.model.StreamViewType.NEW_IMAGE => NEW_IMAGE
      case software.amazon.awssdk.services.dynamodb.model.StreamViewType.OLD_IMAGE => OLD_IMAGE
      case software.amazon.awssdk.services.dynamodb.model.StreamViewType.NEW_AND_OLD_IMAGES => NEW_AND_OLD_IMAGES
      case software.amazon.awssdk.services.dynamodb.model.StreamViewType.KEYS_ONLY => KEYS_ONLY
    }
    final case object unknownToSdkVersion extends StreamViewType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.StreamViewType = software.amazon.awssdk.services.dynamodb.model.StreamViewType.UNKNOWN_TO_SDK_VERSION }
    final case object NEW_IMAGE extends StreamViewType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.StreamViewType = software.amazon.awssdk.services.dynamodb.model.StreamViewType.NEW_IMAGE }
    final case object OLD_IMAGE extends StreamViewType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.StreamViewType = software.amazon.awssdk.services.dynamodb.model.StreamViewType.OLD_IMAGE }
    final case object NEW_AND_OLD_IMAGES extends StreamViewType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.StreamViewType = software.amazon.awssdk.services.dynamodb.model.StreamViewType.NEW_AND_OLD_IMAGES }
    final case object KEYS_ONLY extends StreamViewType { override def unwrap: software.amazon.awssdk.services.dynamodb.model.StreamViewType = software.amazon.awssdk.services.dynamodb.model.StreamViewType.KEYS_ONLY }
  }
  type StringSetAttributeValue = List[primitives.StringAttributeValue]
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy