commonMain.aws.sdk.kotlin.hll.dynamodbmapper.operations.PutItem.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dynamodb-mapper-jvm Show documentation
Show all versions of dynamodb-mapper-jvm Show documentation
High level DynamoDbMapper client
// Code generated by dynamodb-mapper-ops-codegen. DO NOT EDIT!
package aws.sdk.kotlin.hll.dynamodbmapper.operations
import aws.sdk.kotlin.hll.dynamodbmapper.expressions.internal.ParameterizingExpressionVisitor
import aws.sdk.kotlin.hll.dynamodbmapper.internal.withWrappedClient
import aws.sdk.kotlin.hll.dynamodbmapper.items.ItemSchema
import aws.sdk.kotlin.hll.dynamodbmapper.model.TableSpec
import aws.sdk.kotlin.hll.dynamodbmapper.model.toItem
import aws.sdk.kotlin.hll.dynamodbmapper.pipeline.internal.HReqContextImpl
import aws.sdk.kotlin.hll.dynamodbmapper.pipeline.internal.MapperContextImpl
import aws.sdk.kotlin.hll.dynamodbmapper.pipeline.internal.Operation
import aws.sdk.kotlin.services.dynamodb.model.ConsumedCapacity
import aws.sdk.kotlin.services.dynamodb.model.ItemCollectionMetrics
import aws.sdk.kotlin.services.dynamodb.model.ReturnConsumedCapacity
import aws.sdk.kotlin.services.dynamodb.model.ReturnItemCollectionMetrics
import aws.sdk.kotlin.services.dynamodb.model.ReturnValue
import aws.sdk.kotlin.services.dynamodb.model.ReturnValuesOnConditionCheckFailure
import aws.smithy.kotlin.runtime.ExperimentalApi
import aws.sdk.kotlin.services.dynamodb.model.PutItemRequest as LowLevelPutItemRequest
import aws.sdk.kotlin.services.dynamodb.model.PutItemResponse as LowLevelPutItemResponse
@ExperimentalApi
public interface PutItemRequest {
@ExperimentalApi
public companion object { }
public val item: T?
public val returnConsumedCapacity: ReturnConsumedCapacity?
public val returnItemCollectionMetrics: ReturnItemCollectionMetrics?
public val returnValues: ReturnValue?
public val returnValuesOnConditionCheckFailure: ReturnValuesOnConditionCheckFailure?
}
private data class PutItemRequestImpl(
override val item: T?,
override val returnConsumedCapacity: ReturnConsumedCapacity?,
override val returnItemCollectionMetrics: ReturnItemCollectionMetrics?,
override val returnValues: ReturnValue?,
override val returnValuesOnConditionCheckFailure: ReturnValuesOnConditionCheckFailure?,
): PutItemRequest
/**
* A DSL-style builder for instances of [PutItemRequest]
*/
@ExperimentalApi
public class PutItemRequestBuilder {
public var item: T? = null
public var returnConsumedCapacity: ReturnConsumedCapacity? = null
public var returnItemCollectionMetrics: ReturnItemCollectionMetrics? = null
public var returnValues: ReturnValue? = null
public var returnValuesOnConditionCheckFailure: ReturnValuesOnConditionCheckFailure? = null
public fun build(): PutItemRequest {
val item = item
val returnConsumedCapacity = returnConsumedCapacity
val returnItemCollectionMetrics = returnItemCollectionMetrics
val returnValues = returnValues
val returnValuesOnConditionCheckFailure = returnValuesOnConditionCheckFailure
return PutItemRequestImpl(
item,
returnConsumedCapacity,
returnItemCollectionMetrics,
returnValues,
returnValuesOnConditionCheckFailure,
)
}
}
@ExperimentalApi
public fun PutItemRequest.toBuilder(): PutItemRequestBuilder = PutItemRequestBuilder().apply {
item = [email protected]
returnConsumedCapacity = [email protected]
returnItemCollectionMetrics = [email protected]
returnValues = [email protected]
returnValuesOnConditionCheckFailure = [email protected]
}
@ExperimentalApi
public fun PutItemRequest.copy(block: PutItemRequestBuilder.() -> Unit): PutItemRequest =
toBuilder().apply(block).build()
@ExperimentalApi
public fun PutItemRequest(block: PutItemRequestBuilder.() -> Unit): PutItemRequest =
PutItemRequestBuilder().apply(block).build()
private fun PutItemRequest.convert(
tableName: String?,
schema: ItemSchema,
) = LowLevelPutItemRequest {
returnConsumedCapacity = [email protected]
returnItemCollectionMetrics = [email protected]
returnValues = [email protected]
returnValuesOnConditionCheckFailure = [email protected]
[email protected]?.let { item = schema.converter.convertTo(it) }
this.tableName = tableName
val expressionVisitor = ParameterizingExpressionVisitor()
expressionAttributeNames = expressionVisitor.expressionAttributeNames()
expressionAttributeValues = expressionVisitor.expressionAttributeValues()
}
@ExperimentalApi
public interface PutItemResponse {
@ExperimentalApi
public companion object { }
public val attributes: T?
public val consumedCapacity: ConsumedCapacity?
public val itemCollectionMetrics: ItemCollectionMetrics?
}
private data class PutItemResponseImpl(
override val attributes: T?,
override val consumedCapacity: ConsumedCapacity?,
override val itemCollectionMetrics: ItemCollectionMetrics?,
): PutItemResponse
/**
* A DSL-style builder for instances of [PutItemResponse]
*/
@ExperimentalApi
public class PutItemResponseBuilder {
public var attributes: T? = null
public var consumedCapacity: ConsumedCapacity? = null
public var itemCollectionMetrics: ItemCollectionMetrics? = null
public fun build(): PutItemResponse {
val attributes = attributes
val consumedCapacity = consumedCapacity
val itemCollectionMetrics = itemCollectionMetrics
return PutItemResponseImpl(
attributes,
consumedCapacity,
itemCollectionMetrics,
)
}
}
@ExperimentalApi
public fun PutItemResponse.toBuilder(): PutItemResponseBuilder = PutItemResponseBuilder().apply {
attributes = [email protected]
consumedCapacity = [email protected]
itemCollectionMetrics = [email protected]
}
@ExperimentalApi
public fun PutItemResponse.copy(block: PutItemResponseBuilder.() -> Unit): PutItemResponse =
toBuilder().apply(block).build()
@ExperimentalApi
public fun PutItemResponse(block: PutItemResponseBuilder.() -> Unit): PutItemResponse =
PutItemResponseBuilder().apply(block).build()
private fun LowLevelPutItemResponse.convert(schema: ItemSchema) = PutItemResponse {
consumedCapacity = [email protected]
itemCollectionMetrics = [email protected]
attributes = [email protected]?.toItem()?.let(schema.converter::convertFrom)
}
internal fun putItemOperation(spec: TableSpec) = Operation(
initialize = { highLevelReq: PutItemRequest -> HReqContextImpl(highLevelReq, spec.schema, MapperContextImpl(spec, "PutItem")) },
serialize = { highLevelReq, schema -> highLevelReq.convert(spec.tableName, schema) },
lowLevelInvoke = { lowLevelReq ->
spec.mapper.client.withWrappedClient { client ->
client.putItem(lowLevelReq)
}
},
deserialize = LowLevelPutItemResponse::convert,
interceptors = spec.mapper.config.interceptors,
)