UNPKG

@clickup/pg-microsharding

Version:
35 lines 2.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.cleanUpPubSub = cleanUpPubSub; const names_1 = require("./names"); const quote_1 = require("./quote"); const runSql_1 = require("./runSql"); /** * Removes all traces of logical replication from the schema. */ async function cleanUpPubSub({ fromDsn, toDsn, schema, }) { const subExists = await runSql_1.runSql.one(toDsn, (0, quote_1.sql) ` SELECT 1 FROM pg_subscription JOIN pg_database ON pg_database.oid = subdbid AND datname = current_database() WHERE subname = ${(0, names_1.subName)(schema)} `); if (subExists) { await (0, runSql_1.runSql)(toDsn, (0, quote_1.sql) `ALTER SUBSCRIPTION ${(0, quote_1.ident)((0, names_1.subName)(schema))} DISABLE`, "Disabling the destination subscription"); await (0, runSql_1.runSql)(toDsn, (0, quote_1.sql) `ALTER SUBSCRIPTION ${(0, quote_1.ident)((0, names_1.subName)(schema))} SET (slot_name = NONE)`, "Disjoining destination subscription from the replication slot"); await (0, runSql_1.runSql)(toDsn, (0, quote_1.sql) `DROP SUBSCRIPTION ${(0, quote_1.ident)((0, names_1.subName)(schema))} CASCADE`, "Dropping destination subscription"); } await (0, runSql_1.runSql)(fromDsn, (0, quote_1.sql) ` SELECT pg_terminate_backend(active_pid) FROM pg_replication_slots WHERE database = current_database() AND slot_name = ${(0, names_1.subName)(schema)} AND active_pid IS NOT NULL; SELECT pg_drop_replication_slot(slot_name) FROM pg_replication_slots WHERE database = current_database() AND slot_name = ${(0, names_1.subName)(schema)} `); const pubExists = await runSql_1.runSql.one(fromDsn, (0, quote_1.sql) `SELECT 1 FROM pg_publication WHERE pubname = ${(0, names_1.pubName)(schema)}`); if (pubExists) { await (0, runSql_1.runSql)(fromDsn, (0, quote_1.sql) `DROP PUBLICATION ${(0, quote_1.ident)((0, names_1.pubName)(schema))}`, "Dropping source publication"); } } //# sourceMappingURL=cleanUpPubSub.js.map