Search in sources :

Example 51 with Delete

use of com.scalar.db.api.Delete in project scalardb by scalar-labs.

the class MultiStorageTest method whenDeleteDataFromTable1_DataShouldBeDeletedFromStorage1.

@Test
public void whenDeleteDataFromTable1_DataShouldBeDeletedFromStorage1() throws ExecutionException {
    // Arrange
    String namespace = NAMESPACE1;
    String table = TABLE1;
    Key partitionKey = new Key(COL_NAME1, 1);
    Key clusteringKey = new Key(COL_NAME2, 2);
    Delete delete = new Delete(partitionKey, clusteringKey).forNamespace(namespace).forTable(table);
    // Act
    multiStorage.delete(delete);
    // Assert
    verify(storage1).delete(any(Delete.class));
}
Also used : Delete(com.scalar.db.api.Delete) Key(com.scalar.db.io.Key) Test(org.junit.jupiter.api.Test)

Example 52 with Delete

use of com.scalar.db.api.Delete in project scalardb by scalar-labs.

the class MultiStorageTest method whenDeleteDataFromTable3_DataShouldBeDeletedFromDefaultStorage.

@Test
public void whenDeleteDataFromTable3_DataShouldBeDeletedFromDefaultStorage() throws ExecutionException {
    // Arrange
    String namespace = NAMESPACE1;
    String table = TABLE3;
    Key partitionKey = new Key(COL_NAME1, 1);
    Key clusteringKey = new Key(COL_NAME2, 2);
    Delete delete = new Delete(partitionKey, clusteringKey).forNamespace(namespace).forTable(table);
    // Act
    multiStorage.delete(delete);
    // Assert
    verify(storage3).delete(any(Delete.class));
}
Also used : Delete(com.scalar.db.api.Delete) Key(com.scalar.db.io.Key) Test(org.junit.jupiter.api.Test)

Example 53 with Delete

use of com.scalar.db.api.Delete in project scalardb by scalar-labs.

the class DeleteStatementHandlerTest method handle_DeleteWithoutClusteringKeyGiven_ShouldCallDeleteItem.

@Test
public void handle_DeleteWithoutClusteringKeyGiven_ShouldCallDeleteItem() {
    // Arrange
    when(metadata.getClusteringKeyNames()).thenReturn(new LinkedHashSet<>(Collections.singletonList(ANY_NAME_2)));
    when(client.deleteItem(any(DeleteItemRequest.class))).thenReturn(response);
    Key partitionKey = new Key(ANY_NAME_1, ANY_TEXT_1);
    Delete delete = new Delete(partitionKey).forNamespace(ANY_NAMESPACE_NAME).forTable(ANY_TABLE_NAME);
    DynamoMutation dynamoMutation = new DynamoMutation(delete, metadata);
    // Act Assert
    assertThatCode(() -> handler.handle(delete)).doesNotThrowAnyException();
    // Assert
    ArgumentCaptor<DeleteItemRequest> captor = ArgumentCaptor.forClass(DeleteItemRequest.class);
    verify(client).deleteItem(captor.capture());
    DeleteItemRequest actualRequest = captor.getValue();
    assertThat(actualRequest.key()).isEqualTo(dynamoMutation.getKeyMap());
    assertThat(actualRequest.conditionExpression()).isNull();
}
Also used : Delete(com.scalar.db.api.Delete) DeleteItemRequest(software.amazon.awssdk.services.dynamodb.model.DeleteItemRequest) Key(com.scalar.db.io.Key) Test(org.junit.jupiter.api.Test)

Example 54 with Delete

use of com.scalar.db.api.Delete in project scalardb by scalar-labs.

the class DeleteStatementHandlerTest method prepareDelete.

private Delete prepareDelete() {
    Key partitionKey = new Key(ANY_NAME_1, ANY_TEXT_1);
    Key clusteringKey = new Key(ANY_NAME_2, ANY_TEXT_2);
    return new Delete(partitionKey, clusteringKey).forNamespace(ANY_NAMESPACE_NAME).forTable(ANY_TABLE_NAME);
}
Also used : Delete(com.scalar.db.api.Delete) Key(com.scalar.db.io.Key)

Example 55 with Delete

use of com.scalar.db.api.Delete in project scalardb by scalar-labs.

the class DeleteStatementHandlerTest method handle_DeleteWithConditionsGiven_ShouldCallDeleteItem.

@Test
public void handle_DeleteWithConditionsGiven_ShouldCallDeleteItem() {
    // Arrange
    when(metadata.getClusteringKeyNames()).thenReturn(new LinkedHashSet<>(Collections.singletonList(ANY_NAME_2)));
    when(client.deleteItem(any(DeleteItemRequest.class))).thenReturn(response);
    Delete delete = prepareDelete().withCondition(new DeleteIfExists());
    DynamoMutation dynamoMutation = new DynamoMutation(delete, metadata);
    // Act Assert
    assertThatCode(() -> handler.handle(delete)).doesNotThrowAnyException();
    // Assert
    ArgumentCaptor<DeleteItemRequest> captor = ArgumentCaptor.forClass(DeleteItemRequest.class);
    verify(client).deleteItem(captor.capture());
    DeleteItemRequest actualRequest = captor.getValue();
    assertThat(actualRequest.key()).isEqualTo(dynamoMutation.getKeyMap());
    assertThat(actualRequest.conditionExpression()).isEqualTo(dynamoMutation.getIfExistsCondition());
}
Also used : Delete(com.scalar.db.api.Delete) DeleteItemRequest(software.amazon.awssdk.services.dynamodb.model.DeleteItemRequest) DeleteIfExists(com.scalar.db.api.DeleteIfExists) Test(org.junit.jupiter.api.Test)

Aggregations

Delete (com.scalar.db.api.Delete)174 Key (com.scalar.db.io.Key)112 Test (org.junit.jupiter.api.Test)111 Put (com.scalar.db.api.Put)59 Get (com.scalar.db.api.Get)29 Result (com.scalar.db.api.Result)29 Test (org.junit.Test)25 DeleteIfExists (com.scalar.db.api.DeleteIfExists)24 ConditionalExpression (com.scalar.db.api.ConditionalExpression)16 DeleteIf (com.scalar.db.api.DeleteIf)15 Mutation (com.scalar.db.api.Mutation)14 MutationCondition (com.scalar.db.api.MutationCondition)11 Scan (com.scalar.db.api.Scan)11 PutIfNotExists (com.scalar.db.api.PutIfNotExists)10 TextValue (com.scalar.db.io.TextValue)10 ExecutionException (com.scalar.db.exception.storage.ExecutionException)8 CosmosStoredProcedureRequestOptions (com.azure.cosmos.models.CosmosStoredProcedureRequestOptions)6 GrpcTransaction (com.scalar.db.transaction.rpc.GrpcTransaction)6 DeleteItemRequest (software.amazon.awssdk.services.dynamodb.model.DeleteItemRequest)6 PartitionKey (com.azure.cosmos.models.PartitionKey)5