in app/services/DynamoBannerDesigns.scala [174:201]
def lockBannerDesign(designName: String,
email: String,
force: Boolean): ZIO[ZEnv, DynamoError, Unit] = {
val lockStatus = LockStatus(
locked = true,
email = Some(email),
timestamp = Some(OffsetDateTime.now())
)
val request = {
val builder = UpdateItemRequest.builder
.tableName(tableName)
.key(buildKey(designName))
.updateExpression("set lockStatus = :lockStatus")
.expressionAttributeValues(
Map(
":lockStatus" -> jsonToDynamo(lockStatus.asJson)
).asJava)
if (!force) {
// Check it isn't already locked
builder.conditionExpression("attribute_not_exists(lockStatus.email)")
}
builder.build()
}
update(request)
}