/*
* Copyright (c) 2016, PostgreSQL Global Development Group
* See the LICENSE file in the project root for more information.
*/
package org.postgresql.replication;
import org.postgresql.core.BaseConnection;
import org.postgresql.replication.fluent.ChainedCreateReplicationSlotBuilder;
import org.postgresql.replication.fluent.ChainedStreamBuilder;
import org.postgresql.replication.fluent.ReplicationCreateSlotBuilder;
import org.postgresql.replication.fluent.ReplicationStreamBuilder;
import java.sql.SQLException;
import java.sql.Statement;
public class PGReplicationConnectionImpl implements PGReplicationConnection {
private BaseConnection connection;
public PGReplicationConnectionImpl(BaseConnection connection) {
this.connection = connection;
}
@Override
public ChainedStreamBuilder replicationStream() {
return new ReplicationStreamBuilder(connection);
}
@Override
public ChainedCreateReplicationSlotBuilder createReplicationSlot() {
return new ReplicationCreateSlotBuilder(connection);
}
@Override
public void dropReplicationSlot(String slotName) throws SQLException {
if (slotName == null || slotName.isEmpty()) {
throw new IllegalArgumentException("Replication slot name can't be null or empty");
}
Statement statement = connection.createStatement();
try {
statement.execute("DROP_REPLICATION_SLOT " + slotName);
} finally {
statement.close();
}
}
}