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

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

package io.github.vigoo.zioaws
import io.github.vigoo.zioaws.core._
import io.github.vigoo.zioaws.core.aspects._
import io.github.vigoo.zioaws.core.config.AwsConfig
import software.amazon.awssdk.services.dynamodb.streams.{ DynamoDbStreamsAsyncClient, DynamoDbStreamsAsyncClientBuilder }
import zio.{ Chunk, Has, IO, ZIO, ZLayer, ZManaged }
import zio.stream.ZStream
import org.reactivestreams.Publisher
import scala.jdk.CollectionConverters._
package object dynamodbstreams {
  import model._
  type DynamoDbStreams = Has[DynamoDbStreams.Service]
  object DynamoDbStreams {
    trait Service extends AspectSupport[Service] {
      val api: DynamoDbStreamsAsyncClient
      def describeStream(request: DescribeStreamRequest): IO[AwsError, DescribeStreamResponse.ReadOnly]
      def getRecords(request: GetRecordsRequest): IO[AwsError, GetRecordsResponse.ReadOnly]
      def getShardIterator(request: GetShardIteratorRequest): IO[AwsError, GetShardIteratorResponse.ReadOnly]
      def listStreams(request: ListStreamsRequest): IO[AwsError, ListStreamsResponse.ReadOnly]
    }
  }
  val live: ZLayer[AwsConfig, Throwable, DynamoDbStreams] = customized(identity)
  def customized(customization: DynamoDbStreamsAsyncClientBuilder => DynamoDbStreamsAsyncClientBuilder): ZLayer[AwsConfig, Throwable, DynamoDbStreams] = managed(customization).toLayer
  def managed(customization: DynamoDbStreamsAsyncClientBuilder => DynamoDbStreamsAsyncClientBuilder): ZManaged[AwsConfig, Throwable, DynamoDbStreams.Service] = for (awsConfig <- ZManaged.service[AwsConfig.Service]; b0 <- awsConfig.configure[DynamoDbStreamsAsyncClient, DynamoDbStreamsAsyncClientBuilder](DynamoDbStreamsAsyncClient.builder()).toManaged_; b1 <- awsConfig.configureHttpClient[DynamoDbStreamsAsyncClient, DynamoDbStreamsAsyncClientBuilder](b0).toManaged_; client <- ZIO(customization(b1).build()).toManaged_) yield new DynamoDbStreamsImpl(client, AwsCallAspect.identity, ().asInstanceOf[Any])
  private class DynamoDbStreamsImpl[R](override val api: DynamoDbStreamsAsyncClient, override val aspect: AwsCallAspect[R], r: R) extends DynamoDbStreams.Service with AwsServiceBase[R, DynamoDbStreamsImpl] {
    override val serviceName: String = "DynamoDbStreams"
    override def withAspect[R1](newAspect: AwsCallAspect[R1], r: R1): DynamoDbStreamsImpl[R1] = new DynamoDbStreamsImpl(api, newAspect, r)
    def describeStream(request: DescribeStreamRequest): IO[AwsError, DescribeStreamResponse.ReadOnly] = asyncRequestResponse[software.amazon.awssdk.services.dynamodb.model.DescribeStreamRequest, software.amazon.awssdk.services.dynamodb.model.DescribeStreamResponse]("describeStream", api.describeStream)(request.buildAwsValue()).map(DescribeStreamResponse.wrap).provide(r)
    def getRecords(request: GetRecordsRequest): IO[AwsError, GetRecordsResponse.ReadOnly] = asyncRequestResponse[software.amazon.awssdk.services.dynamodb.model.GetRecordsRequest, software.amazon.awssdk.services.dynamodb.model.GetRecordsResponse]("getRecords", api.getRecords)(request.buildAwsValue()).map(GetRecordsResponse.wrap).provide(r)
    def getShardIterator(request: GetShardIteratorRequest): IO[AwsError, GetShardIteratorResponse.ReadOnly] = asyncRequestResponse[software.amazon.awssdk.services.dynamodb.model.GetShardIteratorRequest, software.amazon.awssdk.services.dynamodb.model.GetShardIteratorResponse]("getShardIterator", api.getShardIterator)(request.buildAwsValue()).map(GetShardIteratorResponse.wrap).provide(r)
    def listStreams(request: ListStreamsRequest): IO[AwsError, ListStreamsResponse.ReadOnly] = asyncRequestResponse[software.amazon.awssdk.services.dynamodb.model.ListStreamsRequest, software.amazon.awssdk.services.dynamodb.model.ListStreamsResponse]("listStreams", api.listStreams)(request.buildAwsValue()).map(ListStreamsResponse.wrap).provide(r)
  }
  def describeStream(request: DescribeStreamRequest): ZIO[DynamoDbStreams, AwsError, DescribeStreamResponse.ReadOnly] = ZIO.accessM(_.get.describeStream(request))
  def getRecords(request: GetRecordsRequest): ZIO[DynamoDbStreams, AwsError, GetRecordsResponse.ReadOnly] = ZIO.accessM(_.get.getRecords(request))
  def getShardIterator(request: GetShardIteratorRequest): ZIO[DynamoDbStreams, AwsError, GetShardIteratorResponse.ReadOnly] = ZIO.accessM(_.get.getShardIterator(request))
  def listStreams(request: ListStreamsRequest): ZIO[DynamoDbStreams, AwsError, ListStreamsResponse.ReadOnly] = ZIO.accessM(_.get.listStreams(request))
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy