(function () { 'use strict'; var pg = require('pg'); var aa = require('aa'); aa.promisify(pg, 'connect', {suffix: 'A'}); aa.promisify(pg.Client.prototype, 'connect', {suffix: 'A'}); aa.promisify(pg.Client.prototype, 'query', {suffix: 'A'}); // Client instance var host = process.env.PGHOST || 'localhost'; var port = process.env.PGPORT || '5432'; var db = process.env.PGDATABASE || 'postgres'; var user = process.env.PGUSER || 'postgres'; var pw = process.env.PGPASSWORD || 'password'; var conString = 'postgres://' + user + ':' + pw + '@' + host + '/' + db; aa(function *() { var client = new pg.Client(conString); try { var msg = 'could not connect to postgres'; yield client.connectA(); console.log('connected!!!'); //client.queryA('SELECT $1::int AS numbor', ['1']) msg = 'error running query'; var result = yield client.queryA('select * from s_tenant_r', []); //console.log(result.rows[0]); console.log(result); console.log('client.end()++'); client.end(); console.log('client.end()--'); } catch (err) { return console.error(msg, err); } yield aa.wait(100); var client = new pg.Client(conString); console.log('2nd connectA++'); yield client.connectA(); console.log('2nd connectA--'); var result = yield client.queryA('select * from s_tenant_r', []); console.log(result); client.end(); yield aa.wait(100); }); })();
setTimeout(cb, 0, new RangeError('sleep ms must be plus')); } // delay(ms, args,...)(cb) : thunk function delay(ms) { var args = [].slice.call(arguments); return function (cb) { sleep.apply(null, args.concat(cb)); }; } // aa(fn) | aa.wrap(fn) : returns wrapped function a.k.a thunkify and promisefy // wait(ms, args,...) : returns promise & thunk var wait = aa.promisify(sleep); describe('basic', function () { it('sleep 10', function (done) { done = timed(done, 30); sleep(10, done); }); it('sleep -1', function (done) { done = timed(done, 30); sleep(-1, expectError(done)); }); it('delay 10', function (done) {
void function () { 'use strict'; module.exports = searchFiles; const fs = require('fs'); const path = require('path'); const co = require('co'); const aa = require('aa'); const statAsync = aa.promisify(fs, fs.stat); const readdirAsync = aa.promisify(fs, fs.readdir); //const statAsync = aa.thunkify(fs, fs.stat); //const readdirAsync = aa.thunkify(fs, fs.readdir); // メイン if (require.main === module) { co(function *() { const dir = process.argv[2] || '.'; const rex = process.argv[3] || ''; try { const children = yield searchFiles(dir, rex); console.log(dir, inspect(children)); } catch (err) { console.error(inspect(err)); } }); } // searchFiles ファイルを検索 function *searchFiles(dir, rex) { dir = path.resolve(dir); if (typeof rex === 'string') rex = new RegExp(rex, 'i'); return yield search(dir); function *search(dir) { const stat = yield statAsync(dir); if (!stat.isDirectory()) return null; const names = yield readdirAsync(dir); const children = {}; for (let name of names) { const fullPath = path.resolve(dir, name); const child = yield search(fullPath); if (child || rex.test(name)) { children[name] = child; console.log(fullPath); } } return Object.keys(children).length ? children : null; } // search } // searchFiles // util.inspect function inspect(x) { return require('util').inspect(x, {depth:null, colors:true}); } }();