public CassandraTableManager ensureAllTables() { KeyspaceMetadata keyspaceMetadata = session.getCluster() .getMetadata() .getKeyspace(session.getLoggedKeyspace()); module.moduleTables() .stream() .filter(table -> keyspaceMetadata.getTable(table.getName()) == null) .forEach(table -> session.execute(table.getCreateStatement())); return this; }
public Builder statement(Function<Create, Create> toCreateStatement) { Preconditions.checkState(comment.isPresent(), "`comment` is compulsory"); Create createStatement = toCreateStatement.apply( SchemaBuilder.createTable(tableName) .ifNotExists()); return originalBuilderReference.addTable( new CassandraTable(tableName, options.orElse(Function.identity()) .apply(createStatement.withOptions().comment(comment.get())))); } }
public InitializationStatus initializeTables() { KeyspaceMetadata keyspaceMetadata = session.getCluster() .getMetadata() .getKeyspace(session.getLoggedKeyspace()); return module.moduleTables() .stream() .map(table -> table.initialize(keyspaceMetadata, session)) .reduce((left, right) -> left.reduce(right)) .orElse(InitializationStatus.ALREADY_DONE); }
private static void cleanCassandra(Session session) { MODULE.moduleTables().forEach(table -> session.execute(SchemaBuilder.dropTable(table.getName()))); MODULE.moduleTypes().forEach(type -> session.execute(SchemaBuilder.dropType(type.getName()))); }
@Test void initializeShouldExecuteReturnAlreadyDoneWhenTableExists() { KeyspaceMetadata keyspace = mock(KeyspaceMetadata.class); when(keyspace.getTable(NAME)).thenReturn(mock(TableMetadata.class)); Session session = mock(Session.class); assertThat(TABLE.initialize(keyspace, session)) .isEqualByComparingTo(ALREADY_DONE); verify(keyspace).getTable(NAME); verify(session, never()).execute(STATEMENT); }
@Test void initializeShouldExecuteCreateStatementAndReturnFullWhenTableDoesNotExist() { KeyspaceMetadata keyspace = mock(KeyspaceMetadata.class); when(keyspace.getTable(NAME)).thenReturn(null); Session session = mock(Session.class); assertThat(TABLE.initialize(keyspace, session)) .isEqualByComparingTo(FULL); verify(keyspace).getTable(NAME); verify(session).execute(STATEMENT); }
public Builder statement(Function<Create, Create> toCreateStatement) { Preconditions.checkState(comment.isPresent(), "`comment` is compulsory"); Create createStatement = toCreateStatement.apply( SchemaBuilder.createTable(tableName) .ifNotExists()); return originalBuilderReference.addTable( new CassandraTable(tableName, options.orElse(Function.identity()) .apply(createStatement.withOptions().comment(comment.get())))); } }