libpiggy
Version:
Use a PostgreSQL database like a JSON document store.
74 lines (51 loc) • 1.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var _shortid = require('shortid');
var _shortid2 = _interopRequireDefault(_shortid);
var _isUndefined = require('lodash/isUndefined');
var _isUndefined2 = _interopRequireDefault(_isUndefined);
var _createClient = require('./create-client');
var _createClient2 = _interopRequireDefault(_createClient);
var _get = require('./get');
var _get2 = _interopRequireDefault(_get);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const set = (() => {
var _ref = (0, _asyncToGenerator3.default)(function* ({ store, client, table, key, not, val, options, generateKeyFn }, globals) {
generateKeyFn = generateKeyFn || _shortid2.default.generate;
let clientCreated = false;
try {
if (!client) {
client = yield (0, _createClient2.default)(options, globals);
clientCreated = true;
}
const { columnNames } = store.settings;
key = (0, _isUndefined2.default)(key) ? generateKeyFn() : key;
const text = `
INSERT INTO "${table}" ("${columnNames.key}", "${columnNames.val}", "${columnNames.createdAt}", "${columnNames.updatedAt}")
VALUES ('${key}', $1, current_timestamp, current_timestamp);`;
const values = [val];
yield client.query({ text, values });
return (0, _get2.default)({
store,
client,
table,
key,
not
});
} catch (error) {
throw error;
} finally {
if (clientCreated) {
client.close();
}
}
});
return function set(_x, _x2) {
return _ref.apply(this, arguments);
};
})();
exports.default = set;