libpiggy
Version:
Use a PostgreSQL database like a JSON document store.
46 lines (35 loc) • 1.05 kB
JavaScript
import shortid from 'shortid';
import isUndefined from 'lodash/isUndefined';
import createClient from './create-client';
import get from './get';
const set = async function ({store, client, table, key, not, val, options, generateKeyFn}, globals) {
generateKeyFn = generateKeyFn || shortid.generate;
let clientCreated = false;
try {
if (!client) {
client = await createClient(options, globals);
clientCreated = true;
}
const {columnNames} = store.settings;
key = isUndefined(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];
await client.query({text, values});
return get({
store,
client,
table,
key,
not
});
} catch (error) {
throw error;
} finally {
if (clientCreated) {
client.close();
}
}
};
export default set;