UNPKG

libpiggy

Version:

Use a PostgreSQL database like a JSON document store.

73 lines (53 loc) 1.83 kB
'use strict'; 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;