Generator based swiss knife for consuming apis, accessing postgres, and managing filesystem
npm install rain-util
![npm]()
![npm]()
![npm]()
generator based toolkit for consuming apis, accessing postgres, and managing filesystem
```
npm i rain-util
const $util = require('rain-util');
const api = new $util.http('https://maps.googleapis.com/');
const api2 = new $util.http('https://my.api.com/',
{ 'x-default-header':'its value'},
{httpSignature:{keyId:'rsa-key-1',algorithm='rsa-sha256',signature:'Base64(RSA-SHA256(signing string))'}
);const req = new $util.http();
const apiResponse = yield mapsApi.get('maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA');
console.log('apiResponse',apiResponse);
req.get('full url');
const api2Response = yield api2.post('another url', requestBody);
`$3
queries, data access objects, transactions, schema data
`
const conn = { host: 'localhost', db: 'postgres', user: 'postgres', password: 'postgres' };
const $postgres = new $util.postgres(conn); // connection string also acceptableif($postgres) {
postgres.db.query('SELECT test');
// create a test table
const tableName = 'testers';
const testTable =
DROP TABLE IF EXISTS ${tableName}; CREATE TABLE ${tableName}(id CHARACTER constYING(40))WITH(OIDS=FALSE);ALTER TABLE ${tableName} OWNER TO postgres;;
yield $postgres.db.query(testTable);// load created table into $postgres object
$postgres.table(tableName);
// add a record
const recordId = '4a2b';
yield $postgres.tables[
${tableName}].upsert({id: recordId});// find created record using dao
const daoRecord = yield $postgres.tables[
${tableName}].findOne('id = ?', recordId);// find created record using sql
const findRecordSQL =
SELECT * FROM ${tableName} WHERE id = '${recordId}';
const sqlRecord = (yield $postgres.db.query(findRecordSQL)).rows[0];// add new record
$postgres.tables.books.upsert({id:'4324'})
//within transaction, find new record and then delete it
$postgres.db.transaction(function*() {
let record = yield $postgres.tables[
${tableName}].findOne('id = ?', '4324');
yield $postgres.dao.delete(record); // delete by model throws if more than one row is affected
yield $postgres.dao.delete('id = 4324'); // delete by query, returns count
});
}
// get schema information
const schema = yield $postgres.schema();
`
$3
`
util.genify - (function) convert regular functions into generator functions
yield util.array.(forEach|map|filter|forEachSeries)
`$3
extends co-fs - all core node fs methods available as generators
`
$util.fs.download - (file or file array) downloads url(s) to file(s)
$util.fs.upsert - (dir or dir array) creates dir if non-existent (uses mkdirp)
$util.fs.fetch - (file or dir) read file or directory contents
$util.fs.rimraf - (path) yieldable rm -rf
$util.fs.json.(read|write) - (file, obj, options)
``
requires node 4.2 or higher
- https://github.com/request/request
- https://github.com/jprichardson/node-jsonfile
- https://github.com/substack/node-mkdirp
- https://github.com/evs-chris/node-postgres-gen
- https://www.npmjs.com/package/array-generators