feat(listeners): added in a new feature to auto add new listeners

This commit is contained in:
2025-11-01 00:05:25 -05:00
parent c2ae445ea4
commit f9cfada840

View File

@@ -0,0 +1,51 @@
import { Client } from "pg";
import { createLogger } from "../../../pkg/logger/logger.js";
export const addListeners = async () => {
const log = createLogger({ module: "utils", subModule: "listeners" });
const client = new Client({
connectionString: process.env.DATABASE_URL_V1,
});
await client.connect();
try {
log.info({}, "Running the new log listener");
await client.query(`
CREATE OR REPLACE FUNCTION notify_new_log()
RETURNS trigger AS $$
BEGIN
PERFORM pg_notify('logs_channel', row_to_json(NEW)::text);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER logs_notify_trigger
AFTER INSERT ON logs
FOR EACH ROW
EXECUTE FUNCTION notify_new_log();
`);
} catch (e) {
log.info({}, "log listener exist");
}
try {
log.info({}, "Running the new label listener");
await client.query(`
CREATE OR REPLACE FUNCTION notify_new_label()
RETURNS trigger AS $$
BEGIN
PERFORM pg_notify('label_channel', row_to_json(NEW)::text);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER label_notify_trigger
AFTER INSERT ON prodlabels
FOR EACH ROW
EXECUTE FUNCTION notify_new_label();
`);
} catch (e) {
log.info({}, "label listener exists");
}
};