Refine search
@Override public CassandraTemplate getObject() throws Exception { if (cqlOperations != null) { return new CassandraTemplate(cqlOperations, converter); } return new CassandraTemplate(sessionFactory, converter); }
@Override public void delete(Object entity) { delete(entity, QueryOptions.empty()); }
private void persistBatch(Collection<Event> events) { BatchStatement batch = new BatchStatement(); events.stream().map(this::getBindArguments).map(preparedStatement::bind).forEach(batch::add); cassandraTemplate.execute(batch); }
@Test public void testBasicCassandraInsert() { Book b1 = BookSampler.getBook(); Message<Book> message = MessageBuilder.withPayload(b1).build(); this.cassandraMessageHandler1.send(message); Select select = QueryBuilder.select().all().from("book"); List<Book> books = this.cassandraTemplate.select(select, Book.class); assertThat(books).hasSize(1); this.cassandraTemplate.delete(b1); }
/** * Create a new {@link AggregateCatalogue} that uses Cassandra for persistence. * @param cassandraTemplate The {@link CassandraTemplate} to use to execute Cassandra queries. * @param bucketCount The number of buckets to use to distribute the catalogue data over multiple rows. * @return The constructed {@link AggregateCatalogue}. */ public static AggregateCatalogue create(CassandraTemplate cassandraTemplate, int bucketCount) { PreparedStatement insertStatement = cassandraTemplate.getSession().prepare( "INSERT INTO Catalogue (aggregateType, bucket, aggregateId) VALUES (?, ?, ?)"); PreparedStatement deleteStatement = cassandraTemplate.getSession().prepare( "DELETE FROM Catalogue WHERE aggregateType = ? AND bucket = ? AND aggregateId = ?"); return new CassandraAggregateCatalogue(bucketCount, cassandraTemplate, insertStatement, deleteStatement); }
private void runAndTranslate(EventTypeMatcher matcher, Select select, Consumer<Event> addToResults) { EventTranslator eventTranslator = EventTranslator.using(matcher, deserialiser, addToResults); cassandraTemplate.query(select, eventTranslator); }
@Override public <T> T selectOne(Query query, Class<T> entityClass) throws DataAccessException { List<T> result = select(query, entityClass); return result.isEmpty() ? null : result.get(0); }
@Test public void testCassandraBatchIngest() { List<Book> books = BookSampler.getBookList(5); List<List<?>> ingestBooks = new ArrayList<>(); for (Book b : books) { List<Object> l = new ArrayList<>(); l.add(b.getIsbn()); l.add(b.getTitle()); l.add(b.getAuthor()); l.add(b.getPages()); l.add(b.getSaleDate()); l.add(b.isInStock()); ingestBooks.add(l); } Message<List<List<?>>> message = MessageBuilder.withPayload(ingestBooks).build(); this.cassandraMessageHandler3.send(message); Select select = QueryBuilder.select().all().from("book"); books = this.cassandraTemplate.select(select, Book.class); assertThat(books).hasSize(5); this.cassandraTemplate.batchOps().delete(books); }
/** * Create a new {@link AggregateCatalogue} that uses Cassandra for persistence. * @param cassandraTemplate The {@link CassandraTemplate} to use to execute Cassandra queries. * @param bucketCount The number of buckets to use to distribute the catalogue data over multiple rows. * @return The constructed {@link AggregateCatalogue}. */ public static AggregateCatalogue create(CassandraTemplate cassandraTemplate, int bucketCount) { PreparedStatement insertStatement = cassandraTemplate.getSession().prepare( "INSERT INTO Catalogue (aggregateType, bucket, aggregateId) VALUES (?, ?, ?)"); PreparedStatement deleteStatement = cassandraTemplate.getSession().prepare( "DELETE FROM Catalogue WHERE aggregateType = ? AND bucket = ? AND aggregateId = ?"); return new CassandraAggregateCatalogue(bucketCount, cassandraTemplate, insertStatement, deleteStatement); }
private void runAndTranslate(EventTypeMatcher matcher, Select select, Consumer<Event> addToResults) { EventTranslator eventTranslator = EventTranslator.using(matcher, deserialiser, addToResults); cassandraTemplate.query(select, eventTranslator); }
@Override public <T> T selectOne(Statement statement, Class<T> entityClass) { return select(statement, entityClass).stream().findFirst().orElse(null); }
@Bean public CassandraOperations cassandraTemplate() throws Exception { return new CassandraTemplate(session().getObject()); } }
private void persistBatch(Collection<Event> events) { BatchStatement batch = new BatchStatement(); events.stream().map(this::getBindArguments).map(preparedStatement::bind).forEach(batch::add); cassandraTemplate.execute(batch); }
/** * Create an {@link EventPersister} that writes events into Cassandra using the supplied {@link CassandraTemplate} * and serialisation {@link Function}. * @param cassandraTemplate The {@link CassandraTemplate} to use to execute Cassandra queries. * @param serialiser The serialiser to use to serialise event data. * @return The constructed {@link EventPersister}. */ public static EventPersister create(CassandraTemplate cassandraTemplate, Function<Object, String> serialiser) { return new CassandraEventPersister(cassandraTemplate, prepareInsert(cassandraTemplate.getSession()), serialiser); }
@Override public List<String> getAggregateIds(String aggregateType) { Select select = QueryBuilder.select("aggregateId").from("Catalogue"); select.where(QueryBuilder.eq("aggregateType", aggregateType)); select.where(QueryBuilder.in("bucket", IntStream.range(0, bucketCount).mapToObj(Integer::valueOf).collect(Collectors.toList()))); List<String> result = new ArrayList<>(); cassandraTemplate.query(select, (Row row) -> result.add(row.getString(0))); return result; }
@Test public void testExpressionTruncate() { Message<Book> message = MessageBuilder.withPayload(BookSampler.getBook()).build(); this.cassandraMessageHandler1.send(message); Select select = QueryBuilder.select().all().from("book"); List<Book> books = this.cassandraTemplate.select(select, Book.class); assertThat(books).hasSize(1); this.cassandraMessageHandler4.send(MessageBuilder.withPayload("Empty").build()); books = this.cassandraTemplate.select(select, Book.class); assertThat(books).hasSize(0); }
@Bean @Primary public EventStore eventStore(Cluster cluster, ObjectMapper objectMapper) { return CassandraEventStore.create(new CassandraTemplate(cluster.connect(configuration.getKeyspace())), objectMapper); }
@Override public void add(String aggregateType, UUID aggregateId) { cassandraTemplate.execute(insertStatement.bind(aggregateType, getBucket(aggregateId), aggregateId)); }
/** * Create an {@link EventPersister} that writes events into Cassandra using the supplied {@link CassandraTemplate} * and serialisation {@link Function}. * @param cassandraTemplate The {@link CassandraTemplate} to use to execute Cassandra queries. * @param serialiser The serialiser to use to serialise event data. * @return The constructed {@link EventPersister}. */ public static EventPersister create(CassandraTemplate cassandraTemplate, Function<Object, String> serialiser) { return new CassandraEventPersister(cassandraTemplate, prepareInsert(cassandraTemplate.getSession()), serialiser); }