private void deleteDatabase()

in service/src/main/java/org/apache/fineract/cn/provisioner/internal/service/TenantService.java [279:301]


  private void deleteDatabase(final String identifier) {
    final DataStoreOption dataStoreOption = provisionerProperties.getDataStoreOption();
    if (dataStoreOption.isEnabled(DataStoreOption.RDBMS)) {
      try (final Connection provisionerConnection = DataSourceUtils.createProvisionerConnection(this.environment, META_KEYSPACE)) {
        final Optional<TenantDAO> optionalTenantDAO = TenantDAO.find(provisionerConnection, identifier);
        if (optionalTenantDAO.isPresent()) {
          final DatabaseConnectionInfo databaseConnectionInfo = optionalTenantDAO.get().map();
          try (
              final Connection connection = DataSourceUtils.create(databaseConnectionInfo);
              final Statement dropStatement = connection.createStatement()
          ) {
            dropStatement.execute("DROP DATABASE " + databaseConnectionInfo.getDatabaseName());
          }
          TenantDAO.delete(provisionerConnection, identifier);
        }
      } catch (final SQLException sqlex) {
        this.logger.error(sqlex.getMessage(), sqlex);
        throw new IllegalStateException("Could not delete database {}!" + identifier);
      }
    } else {
      this.logger.warn("Datastore option not chosen, Tenant in PostgreSQL RDBMS not created");
    }
  }