Include ATTR_MIGRATION_VERSION in update()
This commit is contained in:
parent
53e6f419b6
commit
abafa2ccac
|
@ -177,11 +177,13 @@ public class AccountsDynamoDb extends AbstractDynamoDbStore implements AccountSt
|
||||||
updateItemRequest = new UpdateItemRequest()
|
updateItemRequest = new UpdateItemRequest()
|
||||||
.withTableName(accountsTable.getTableName())
|
.withTableName(accountsTable.getTableName())
|
||||||
.withKey(Map.of(KEY_ACCOUNT_UUID, new AttributeValue().withB(UUIDUtil.toByteBuffer(account.getUuid()))))
|
.withKey(Map.of(KEY_ACCOUNT_UUID, new AttributeValue().withB(UUIDUtil.toByteBuffer(account.getUuid()))))
|
||||||
.withUpdateExpression("SET #data=:data")
|
.withUpdateExpression("SET #data = :data, #version = :version")
|
||||||
.withConditionExpression("attribute_exists(#number)")
|
.withConditionExpression("attribute_exists(#number)")
|
||||||
.withExpressionAttributeNames(Map.of("#number", ATTR_ACCOUNT_E164,
|
.withExpressionAttributeNames(Map.of("#number", ATTR_ACCOUNT_E164,
|
||||||
"#data", ATTR_ACCOUNT_DATA))
|
"#data", ATTR_ACCOUNT_DATA,
|
||||||
.withExpressionAttributeValues(Map.of(":data", new AttributeValue().withB(ByteBuffer.wrap(SystemMapper.getMapper().writeValueAsBytes(account)))));
|
"#version", ATTR_MIGRATION_VERSION))
|
||||||
|
.withExpressionAttributeValues(Map.of(":data", new AttributeValue().withB(ByteBuffer.wrap(SystemMapper.getMapper().writeValueAsBytes(account))),
|
||||||
|
":version", new AttributeValue().withN(String.valueOf(account.getDynamoDbMigrationVersion()))));
|
||||||
|
|
||||||
} catch (JsonProcessingException e) {
|
} catch (JsonProcessingException e) {
|
||||||
throw new IllegalArgumentException(e);
|
throw new IllegalArgumentException(e);
|
||||||
|
|
|
@ -208,12 +208,18 @@ class AccountsDynamoDbTest {
|
||||||
retrieved = accountsDynamoDb.get(account.getUuid());
|
retrieved = accountsDynamoDb.get(account.getUuid());
|
||||||
|
|
||||||
assertThat(retrieved.isPresent()).isTrue();
|
assertThat(retrieved.isPresent()).isTrue();
|
||||||
verifyStoredState("+14151112222", account.getUuid(), retrieved.get(), account);
|
verifyStoredState("+14151112222", account.getUuid(), account);
|
||||||
|
|
||||||
device = generateDevice(1);
|
device = generateDevice(1);
|
||||||
Account unknownAccount = generateAccount("+14151113333", UUID.randomUUID(), Collections.singleton(device));
|
Account unknownAccount = generateAccount("+14151113333", UUID.randomUUID(), Collections.singleton(device));
|
||||||
|
|
||||||
assertThatThrownBy(() -> accountsDynamoDb.update(unknownAccount)).isInstanceOfAny(ConditionalCheckFailedException.class);
|
assertThatThrownBy(() -> accountsDynamoDb.update(unknownAccount)).isInstanceOfAny(ConditionalCheckFailedException.class);
|
||||||
|
|
||||||
|
account.setDynamoDbMigrationVersion(5);
|
||||||
|
|
||||||
|
accountsDynamoDb.update(account);
|
||||||
|
|
||||||
|
verifyStoredState("+14151112222", account.getUuid(), account);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -403,6 +409,9 @@ class AccountsDynamoDbTest {
|
||||||
String data = new String(item.getBinary(AccountsDynamoDb.ATTR_ACCOUNT_DATA), StandardCharsets.UTF_8);
|
String data = new String(item.getBinary(AccountsDynamoDb.ATTR_ACCOUNT_DATA), StandardCharsets.UTF_8);
|
||||||
assertThat(data).isNotEmpty();
|
assertThat(data).isNotEmpty();
|
||||||
|
|
||||||
|
assertThat(item.getNumber(AccountsDynamoDb.ATTR_MIGRATION_VERSION).intValue())
|
||||||
|
.isEqualTo(expecting.getDynamoDbMigrationVersion());
|
||||||
|
|
||||||
Account result = AccountsDynamoDb.fromItem(item);
|
Account result = AccountsDynamoDb.fromItem(item);
|
||||||
verifyStoredState(number, uuid, result, expecting);
|
verifyStoredState(number, uuid, result, expecting);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue