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