feat(listeners): added in a new feature to auto add new listeners
This commit is contained in:
51
app/src/internal/system/utlis/addListeners.ts
Normal file
51
app/src/internal/system/utlis/addListeners.ts
Normal 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");
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user