libpiggy
Version:
Use a PostgreSQL database like a JSON document store.
73 lines (53 loc) • 1.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var _createTable = require('./create-table');
var _createTable2 = _interopRequireDefault(_createTable);
var _createNotifyFunction = require('./create-notify-function');
var _createNotifyFunction2 = _interopRequireDefault(_createNotifyFunction);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const createWatchedTable = (() => {
var _ref = (0, _asyncToGenerator3.default)(function* ({ client, table, columns, when, key }) {
try {
yield (0, _createNotifyFunction2.default)({ client, table, key });
yield (0, _createTable2.default)({ client, table, columns });
const textBefore = `
CREATE TRIGGER "watched_table_trigger_before__${table}"
BEFORE INSERT OR UPDATE OR DELETE ON "${table}"
FOR EACH ROW EXECUTE PROCEDURE notify_trigger();
`;
const textAfter = `
CREATE TRIGGER "watched_table_trigger_after__${table}"
AFTER INSERT OR UPDATE OR DELETE ON "${table}"
FOR EACH ROW EXECUTE PROCEDURE notify_trigger();
`;
let text;
if (when && when === 'BEFORE') {
text = textBefore;
}
if (when && when === 'AFTER') {
text = textAfter;
}
if (!when) {
text = `
${textBefore}
${textAfter}
`;
}
const results = yield client.query({ text });
return {
client,
results
};
} catch (error) {
throw error;
}
});
return function createWatchedTable(_x) {
return _ref.apply(this, arguments);
};
})();
exports.default = createWatchedTable;