/** * Prepend a value to a list column. * * <p>This will generate: {@code name = [ value ] + name}. * * @param name the column name (must be of type list). * @param value the value to prepend. Using a BindMarker here is not supported. To use a * BindMarker use {@code QueryBuilder#prependAll} with a singleton list. * @return the correspond assignment (to use in an update query) */ public static Assignment prepend(String name, Object value) { if (value instanceof BindMarker) { throw new InvalidQueryException( "binding a value in prepend() is not supported, use prependAll() and bind a singleton list"); } return prependAll(name, Collections.singletonList(value)); }
@Test(groups = "unit") public void should_handle_nested_collections() { String query; Statement statement; query = "UPDATE foo SET l=[[1],[2]] WHERE k=1;"; ImmutableList<ImmutableList<Integer>> list = ImmutableList.of(ImmutableList.of(1), ImmutableList.of(2)); statement = update("foo").with(set("l", list)).where(eq("k", 1)); assertThat(statement.toString()).isEqualTo(query); query = "UPDATE foo SET m={1:[[1],[2]],2:[[1],[2]]} WHERE k=1;"; statement = update("foo").with(set("m", ImmutableMap.of(1, list, 2, list))).where(eq("k", 1)); assertThat(statement.toString()).isEqualTo(query); query = "UPDATE foo SET m=m+{1:[[1],[2]],2:[[1],[2]]} WHERE k=1;"; statement = update("foo").with(putAll("m", ImmutableMap.of(1, list, 2, list))).where(eq("k", 1)); assertThat(statement.toString()).isEqualTo(query); query = "UPDATE foo SET l=[[1]]+l WHERE k=1;"; statement = update("foo").with(prepend("l", ImmutableList.of(1))).where(eq("k", 1)); assertThat(statement.toString()).isEqualTo(query); query = "UPDATE foo SET l=[[1],[2]]+l WHERE k=1;"; statement = update("foo").with(prependAll("l", list)).where(eq("k", 1)); assertThat(statement.toString()).isEqualTo(query); }
@Test(groups = "unit") public void updateInjectionTest() throws Exception { String query; Statement update; query = "UPDATE foo.bar USING TIMESTAMP 42 SET a=12 WHERE k='2 OR 1=1';"; update = update("foo", "bar").using(timestamp(42)).with(set("a", 12)).where(eq("k", "2 OR 1=1")); assertEquals(update.toString(), query); query = "UPDATE foo SET b='null WHERE k=1; --comment' WHERE k=2;"; update = update("foo").where().and(eq("k", 2)).with(set("b", "null WHERE k=1; --comment")); assertEquals(update.toString(), query); query = "UPDATE foo USING TIMESTAMP 42 SET \"b WHERE k=1; --comment\"=[3,2,1]+\"b WHERE k=1; --comment\" WHERE k=2;"; update = update("foo") .where() .and(eq("k", 2)) .with(prependAll("b WHERE k=1; --comment", Arrays.asList(3, 2, 1))) .using(timestamp(42)); assertEquals(update.toString(), query); }
update("foo") .with(setIdx("a", 2, "foo")) .and(prependAll("b", Arrays.asList(3, 2, 1))) .and(remove("c", "a")) .where(eq("k", 2)) .and(eq("k", 2)) .and(eq("l", "foo")) .with(prependAll("b", Arrays.asList(3, 2, 1))) .using(timestamp(42)); assertEquals(update.toString(), query); .and(eq("l", "foo")) .using(timestamp(42)) .with(prependAll("b", Arrays.asList(3, 2, 1))); assertEquals(update.toString(), query); .where(eq("k", 2)) .and(eq("l", "foo")) .with(prependAll("b", Arrays.asList(3, 2, 1))); assertEquals(update.toString(), query);
/** * Generate an UPDATE FROM ... <strong>SET udtList = [?] + udtList</strong> */ @SuppressWarnings("static-access") public final EntityWithUDTForDynamicKeyspace_Update.Cols PrependTo(final UDTWithNoKeyspace udtList_element) { where.with(QueryBuilder.prependAll("udtlist", QueryBuilder.bindMarker("udtlist"))); boundValues.add(Arrays.asList(udtList_element)); encodedValues.add(meta.udtList.encodeFromJava(Arrays.asList(udtList_element), Optional.of(cassandraOptions))); return EntityWithUDTForDynamicKeyspace_Update.Cols.this; }
/** * Generate an UPDATE FROM ... <strong>SET consistencyList = [?] + consistencyList</strong> */ @SuppressWarnings("static-access") public final SimpleEntity_Update.Cols PrependTo(final ConsistencyLevel consistencyList_element) { where.with(QueryBuilder.prependAll("consistencylist", QueryBuilder.bindMarker("consistencylist"))); boundValues.add(Arrays.asList(consistencyList_element)); encodedValues.add(meta.consistencyList.encodeFromJava(Arrays.asList(consistencyList_element), Optional.of(cassandraOptions))); return SimpleEntity_Update.Cols.this; }
/** * Generate an UPDATE FROM ... <strong>SET listUdt = [?] + listUdt</strong> */ @SuppressWarnings("static-access") public final EntityWithComplexTypes_Update.Cols PrependTo(final TestUDT listUdt_element) { where.with(QueryBuilder.prependAll("list_udt", QueryBuilder.bindMarker("list_udt"))); boundValues.add(Arrays.asList(listUdt_element)); encodedValues.add(meta.listUdt.encodeFromJava(Arrays.asList(listUdt_element), Optional.of(cassandraOptions))); return EntityWithComplexTypes_Update.Cols.this; }
/** * Generate an UPDATE FROM ... <strong>SET listUDT = [?] + listUDT</strong> */ @SuppressWarnings("static-access") public final EntityWithUDTs_Update.Cols PrependTo(final SimpleUDTWithNoKeyspace listUDT_element) { where.with(QueryBuilder.prependAll("listudt", QueryBuilder.bindMarker("listudt"))); boundValues.add(Arrays.asList(listUDT_element)); encodedValues.add(meta.listUDT.encodeFromJava(Arrays.asList(listUDT_element), Optional.of(cassandraOptions))); return EntityWithUDTs_Update.Cols.this; }
update("foo") .with(setIdx("a", 2, "foo")) .and(prependAll("b", Arrays.asList(3, 2, 1))) .and(remove("c", "a")) .where(eq("k", 2)))
/** * Generate an UPDATE FROM ... <strong>SET listUdt = [?] + listUdt</strong> */ @SuppressWarnings("static-access") public final EntityWithComplexTypes_Update.Cols PrependTo(final TestUDT listUdt_element) { where.with(QueryBuilder.prependAll("list_udt", QueryBuilder.bindMarker("list_udt"))); boundValues.add(Arrays.asList(listUdt_element)); encodedValues.add(meta.listUdt.encodeFromJava(Arrays.asList(listUdt_element), Optional.of(cassandraOptions))); return new EntityWithComplexTypes_Update.Cols(where, cassandraOptions); }
/** * Generate an UPDATE FROM ... <strong>SET listUdt = ? + listUdt</strong> */ @SuppressWarnings("static-access") public final EntityWithComplexTypes_Update.Cols PrependAllTo(final List<TestUDT> listUdt_element) { where.with(QueryBuilder.prependAll("list_udt", QueryBuilder.bindMarker("list_udt"))); boundValues.add(listUdt_element); encodedValues.add(meta.listUdt.encodeFromJava(listUdt_element, Optional.of(cassandraOptions))); return EntityWithComplexTypes_Update.Cols.this; }
/** * Generate an UPDATE FROM ... <strong>SET listUDT = ? + listUDT</strong> */ @SuppressWarnings("static-access") public final EntityWithUDTs_Update.Cols PrependAllTo(final List<SimpleUDTWithNoKeyspace> listUDT_element) { where.with(QueryBuilder.prependAll("listudt", QueryBuilder.bindMarker("listudt"))); boundValues.add(listUDT_element); encodedValues.add(meta.listUDT.encodeFromJava(listUDT_element, Optional.of(cassandraOptions))); return EntityWithUDTs_Update.Cols.this; }
/** * Generate an UPDATE FROM ... <strong>SET list = [?] + list</strong> */ @SuppressWarnings("static-access") public final EntityWithBeanValidation_Update.Cols PrependTo(final String list_element) { where.with(QueryBuilder.prependAll("list", QueryBuilder.bindMarker("list"))); boundValues.add(Arrays.asList(list_element)); encodedValues.add(meta.list.encodeFromJava(Arrays.asList(list_element), Optional.of(cassandraOptions))); return new EntityWithBeanValidation_Update.Cols(where, cassandraOptions); }
/** * Generate an UPDATE FROM ... <strong>SET listString = [?] + listString</strong> */ @SuppressWarnings("static-access") public final EntityForJSONCall_Update.Cols PrependTo(final String listString_element) { where.with(QueryBuilder.prependAll("liststring", QueryBuilder.bindMarker("liststring"))); boundValues.add(Arrays.asList(listString_element)); encodedValues.add(meta.listString.encodeFromJava(Arrays.asList(listString_element), Optional.of(cassandraOptions))); return new EntityForJSONCall_Update.Cols(where, cassandraOptions); }
/** * Generate an UPDATE FROM ... <strong>SET list = ? + list</strong> */ @SuppressWarnings("static-access") public final EntityWithBeanValidation_Update.Cols PrependAllTo(final java.util.List<String> list_element) { where.with(QueryBuilder.prependAll("list", QueryBuilder.bindMarker("list"))); boundValues.add(list_element); encodedValues.add(meta.list.encodeFromJava(list_element, Optional.of(cassandraOptions))); return EntityWithBeanValidation_Update.Cols.this; }
/** * Generate an UPDATE FROM ... <strong>SET listNesting = ? + listNesting</strong> */ @SuppressWarnings("static-access") public final EntityWithComplexTypes_Update.Cols PrependAllTo(final List<Map<java.lang.Integer, String>> listNesting_element) { where.with(QueryBuilder.prependAll("list_nesting", QueryBuilder.bindMarker("list_nesting"))); boundValues.add(listNesting_element); encodedValues.add(meta.listNesting.encodeFromJava(listNesting_element, Optional.of(cassandraOptions))); return EntityWithComplexTypes_Update.Cols.this; }
/** * Generate an UPDATE FROM ... <strong>SET doubleList = ? + doubleList</strong> */ @SuppressWarnings("static-access") public final EntityWithNativeCollections_Update.Cols PrependAllTo(final List<Double> doubleList_element) { where.with(QueryBuilder.prependAll("doublelist", QueryBuilder.bindMarker("doublelist"))); boundValues.add(doubleList_element); encodedValues.add(meta.doubleList.encodeFromJava(doubleList_element, Optional.of(cassandraOptions))); return EntityWithNativeCollections_Update.Cols.this; }
/** * Generate an UPDATE FROM ... <strong>SET udtList = ? + udtList</strong> */ @SuppressWarnings("static-access") public final EntityWithUDTForDynamicKeyspace_Update.Cols PrependAllTo(final List<UDTWithNoKeyspace> udtList_element) { where.with(QueryBuilder.prependAll("udtlist", QueryBuilder.bindMarker("udtlist"))); boundValues.add(udtList_element); encodedValues.add(meta.udtList.encodeFromJava(udtList_element, Optional.of(cassandraOptions))); return new EntityWithUDTForDynamicKeyspace_Update.Cols(where, cassandraOptions); }
/** * Generate an UPDATE FROM ... <strong>SET list = ? + list</strong> */ @SuppressWarnings("static-access") public final EntityWithBeanValidation_Update.Cols PrependAllTo(final java.util.List<String> list_element) { where.with(QueryBuilder.prependAll("list", QueryBuilder.bindMarker("list"))); boundValues.add(list_element); encodedValues.add(meta.list.encodeFromJava(list_element, Optional.of(cassandraOptions))); return new EntityWithBeanValidation_Update.Cols(where, cassandraOptions); }
/** * Generate an UPDATE FROM ... <strong>SET list = ? + list</strong> */ @SuppressWarnings("static-access") public final EntityWithCaseSensitivePK_Update.Cols PrependAllTo(final java.util.List<String> list_element) { where.with(QueryBuilder.prependAll("\"listString\"", QueryBuilder.bindMarker("\"listString\""))); boundValues.add(list_element); encodedValues.add(meta.list.encodeFromJava(list_element, Optional.of(cassandraOptions))); return new EntityWithCaseSensitivePK_Update.Cols(where, cassandraOptions); }