
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