Search in sources :

Example 26 with PutIf

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

the class DynamoMutationTest method getConditionBindMap_PutWithPutIfGiven_ShouldReturnBindMap.

@Test
public void getConditionBindMap_PutWithPutIfGiven_ShouldReturnBindMap() {
    // Arrange
    PutIf conditions = new PutIf(new ConditionalExpression(ANY_NAME_3, ANY_INT_VALUE, Operator.EQ), new ConditionalExpression(ANY_NAME_4, ANY_INT_VALUE, Operator.GT));
    Put put = preparePut().withCondition(conditions);
    Map<String, AttributeValue> expected = new HashMap<>();
    expected.put(DynamoOperation.CONDITION_VALUE_ALIAS + "0", AttributeValue.builder().n(String.valueOf(ANY_INT_3)).build());
    expected.put(DynamoOperation.CONDITION_VALUE_ALIAS + "1", AttributeValue.builder().n(String.valueOf(ANY_INT_3)).build());
    DynamoMutation dynamoMutation = new DynamoMutation(put, metadata);
    // Act
    Map<String, AttributeValue> actual = dynamoMutation.getConditionBindMap();
    // Assert
    assertThat(actual).isEqualTo(expected);
}
Also used : PutIf(com.scalar.db.api.PutIf) AttributeValue(software.amazon.awssdk.services.dynamodb.model.AttributeValue) HashMap(java.util.HashMap) ConditionalExpression(com.scalar.db.api.ConditionalExpression) Put(com.scalar.db.api.Put) Test(org.junit.jupiter.api.Test)

Example 27 with PutIf

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

the class ConditionalQueryBuilderTest method visit_PutIfAcceptCalled_ShouldCallWhere.

@Test
public void visit_PutIfAcceptCalled_ShouldCallWhere() {
    // Arrange
    PutIf condition = new PutIf(new ConditionalExpression(ANY_NAME_1, ANY_INT_VALUE, Operator.EQ), new ConditionalExpression(ANY_NAME_2, ANY_INT_VALUE, Operator.GT));
    ConditionalQueryBuilder builder = new ConditionalQueryBuilder(select);
    // Act
    condition.accept(builder);
    // Assert
    verify(select).and(DSL.field("r.values[\"" + ANY_NAME_1 + "\"]").equal(ANY_INT));
    verify(select).and(DSL.field("r.values[\"" + ANY_NAME_2 + "\"]").greaterThan(ANY_INT));
}
Also used : PutIf(com.scalar.db.api.PutIf) ConditionalExpression(com.scalar.db.api.ConditionalExpression) Test(org.junit.jupiter.api.Test)

Example 28 with PutIf

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

the class ConditionalQueryBuilderTest method getQuery_PutIfAcceptCalled_ShouldReturnQuery.

@Test
public void getQuery_PutIfAcceptCalled_ShouldReturnQuery() {
    // Arrange
    SelectConditionStep<org.jooq.Record> testSelect = DSL.using(SQLDialect.DEFAULT).selectFrom("Record r").where(DSL.field("r.id").eq(ANY_ID));
    PutIf condition = ConditionBuilder.putIf(ConditionBuilder.column(ANY_NAME_1).isEqualToInt(ANY_INT_VALUE.getAsInt())).and(ConditionBuilder.column(ANY_NAME_2).isGreaterThanInt(ANY_INT_VALUE.getAsInt())).and(ConditionBuilder.column(ANY_NAME_3).isNullInt()).and(ConditionBuilder.column(ANY_NAME_4).isNotNullInt()).build();
    ConditionalQueryBuilder builder = new ConditionalQueryBuilder(testSelect);
    // Act
    condition.accept(builder);
    String actual = builder.getQuery();
    // Assert
    assertThat(actual).isEqualTo("select * from Record r where (r.id = '" + ANY_ID + "' and r.values[\"" + ANY_NAME_1 + "\"]" + " = " + ANY_INT + " and r.values[\"" + ANY_NAME_2 + "\"]" + " > " + ANY_INT + " and (NOT IS_DEFINED(r.values[\"" + ANY_NAME_3 + "\"])) and (IS_DEFINED(r.values[\"" + ANY_NAME_4 + "\"])))");
}
Also used : PutIf(com.scalar.db.api.PutIf) Test(org.junit.jupiter.api.Test)

Example 29 with PutIf

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

the class CosmosMutationTest method makeConditionalQuery_MutationWithConditionsGiven_ShouldReturnQuery.

@Test
public void makeConditionalQuery_MutationWithConditionsGiven_ShouldReturnQuery() {
    // Arrange
    PutIf conditions = new PutIf(new ConditionalExpression(ANY_NAME_3, ANY_INT_VALUE, Operator.EQ), new ConditionalExpression(ANY_NAME_4, ANY_INT_VALUE, Operator.GT));
    Put put = preparePut().withCondition(conditions);
    CosmosMutation cosmosMutation = new CosmosMutation(put, metadata);
    String id = cosmosMutation.getId();
    // Act
    String actual = cosmosMutation.makeConditionalQuery();
    // Assert
    assertThat(actual).isEqualTo("select * from Record r where (r.id = '" + id + "' and r.values[\"" + ANY_NAME_3 + "\"]" + " = " + ANY_INT_3 + " and r.values[\"" + ANY_NAME_4 + "\"]" + " > " + ANY_INT_3 + ")");
}
Also used : PutIf(com.scalar.db.api.PutIf) ConditionalExpression(com.scalar.db.api.ConditionalExpression) Put(com.scalar.db.api.Put) Test(org.junit.jupiter.api.Test)

Example 30 with PutIf

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

the class UpdateStatementHandlerTest method prepare_PutOperationWithIfGiven_ShouldCallAccept.

@Test
public void prepare_PutOperationWithIfGiven_ShouldCallAccept() {
    // Arrange
    configureBehavior(null);
    put = preparePutWithClusteringKey();
    PutIf putIf = Mockito.spy(new PutIf(new ConditionalExpression(ANY_NAME_4, new IntValue(ANY_INT_2), Operator.EQ)));
    put.withCondition(putIf);
    // Act
    handler.prepare(put);
    // Assert
    verify(putIf).accept(any(ConditionSetter.class));
}
Also used : PutIf(com.scalar.db.api.PutIf) ConditionalExpression(com.scalar.db.api.ConditionalExpression) IntValue(com.scalar.db.io.IntValue) Test(org.junit.jupiter.api.Test)

Aggregations

PutIf (com.scalar.db.api.PutIf)34 ConditionalExpression (com.scalar.db.api.ConditionalExpression)30 Put (com.scalar.db.api.Put)26 Test (org.junit.jupiter.api.Test)25 Get (com.scalar.db.api.Get)8 IntValue (com.scalar.db.io.IntValue)8 TextValue (com.scalar.db.io.TextValue)7 Key (com.scalar.db.io.Key)6 PutIfNotExists (com.scalar.db.api.PutIfNotExists)5 Result (com.scalar.db.api.Result)5 Test (org.junit.Test)5 Scan (com.scalar.db.api.Scan)4 MutationCondition (com.scalar.db.api.MutationCondition)3 Value (com.scalar.db.io.Value)3 HashMap (java.util.HashMap)3 Delete (com.scalar.db.api.Delete)2 Attribute.toIdValue (com.scalar.db.transaction.consensuscommit.Attribute.toIdValue)2 Mutation (com.scalar.db.api.Mutation)1 PutIfExists (com.scalar.db.api.PutIfExists)1 BooleanValue (com.scalar.db.io.BooleanValue)1