libpiggy
Version:
Use a PostgreSQL database like a JSON document store.
53 lines (44 loc) • 1.52 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _asyncToGenerator2 = require("babel-runtime/helpers/asyncToGenerator");
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const createNotifyFunction = (() => {
var _ref = (0, _asyncToGenerator3.default)(function* ({ client, key }) {
try {
const text = `
CREATE OR REPLACE FUNCTION notify_trigger()
RETURNS TRIGGER AS
$body$
DECLARE
BEGIN
IF (TG_OP = 'INSERT') THEN
PERFORM pg_notify('watchers', 'table=' || TG_TABLE_NAME || '&when=' || TG_WHEN || '&newkey=' || NEW.${key});
RETURN NEW;
ELSIF (TG_OP = 'DELETE') THEN
PERFORM pg_notify('watchers', 'table=' || TG_TABLE_NAME || '&when=' || TG_WHEN || '&oldkey=' || OLD.${key});
RETURN OLD;
ELSIF (TG_OP = 'UPDATE') THEN
PERFORM pg_notify('watchers', 'table=' || TG_TABLE_NAME || '&when=' || TG_WHEN || '&newkey=' || NEW.${key} || '&oldkey=' || OLD.${key});
RETURN NEW;
END IF;
END;
$body$
LANGUAGE plpgsql;
`;
const results = yield client.query({ text });
return {
client,
results
};
} catch (error) {
throw error;
}
});
return function createNotifyFunction(_x) {
return _ref.apply(this, arguments);
};
})();
exports.default = createNotifyFunction;