diff --git a/index.js b/index.js index 32f70fa..c137168 100644 --- a/index.js +++ b/index.js @@ -574,8 +574,12 @@ class ClickHouse { } - query(sql, params) { - return new QueryCursor(sql, this._getReqParams(sql, params), this.opts); + query(...args) { + if (args.length === 2 && typeof args[args.length - 1] === 'function') { + return new QueryCursor(args[0], this._getReqParams(args[0], null), this.opts).exec(args[args.length - 1]); + } else { + return new QueryCursor(args[0], this._getReqParams(args[0], args[1]), this.opts); + } } diff --git a/package.json b/package.json index 651ba45..32e5bfc 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,9 @@ }, "dependencies": { "JSONStream": "1.3.4", - "lodash": "^4.17.11", + "lodash": "4.17.11", "querystring": "0.2.0", - "request": "^2.88.0" + "request": "2.88.0" }, "description": "Client for ClickHouse", "devDependencies": { @@ -30,7 +30,7 @@ } ], "name": "clickhouse", - "version": "1.2.7", + "version": "1.2.9", "repository": { "type": "git", "url": "https://github.com/TimonKK/clickhouse.git" diff --git a/test/test.js b/test/test.js index 06d54a7..76aa827 100644 --- a/test/test.js +++ b/test/test.js @@ -57,6 +57,18 @@ describe('Select', () => { }); + it('use callback #2', callback => { + clickhouse.query(sql, (err, rows) => { + expect(err).to.not.be.ok(); + + expect(rows).to.have.length(rowCount); + expect(rows[0]).to.eql({ number: 0, str: '0', date: '1970-01-02' }); + + callback(); + }); + }); + + it('use stream', function(callback) { this.timeout(10000); @@ -279,7 +291,7 @@ describe('queries', () => { const result9 = await clickhouse.query('SELECT count(*) AS count FROM session_temp').toPromise(); const result10 = await clickhouse.query('SELECT count(*) AS count FROM session_temp2').toPromise(); expect(result9).to.eql(result10); - + const result11 = await clickhouse.query('SELECT date FROM test.test_array GROUP BY date WITH TOTALS').withTotals().toPromise(); expect(result11).to.have.key('meta'); expect(result11).to.have.key('data'); @@ -287,16 +299,16 @@ describe('queries', () => { expect(result11).to.have.key('rows'); expect(result11).to.have.key('statistics'); - const result11 = await clickhouse.query('DROP TABLE IF EXISTS test_int_temp').toPromise(); - expect(result11).to.be.ok(); - + const result111 = await clickhouse.query('DROP TABLE IF EXISTS test_int_temp').toPromise(); + expect(result111).to.be.ok(); + const result12 = await clickhouse.query('CREATE TABLE test_int_temp (int_value Int8 ) ENGINE=Memory').toPromise(); expect(result12).to.be.ok(); - + const int_value_data = [{int_value: 0}] const result13 = await clickhouse.insert('INSERT INTO test_int_temp (int_value)', int_value_data).toPromise(); expect(result13).to.be.ok(); - + const result14 = await clickhouse.query('SELECT int_value FROM test_int_temp').toPromise(); expect(result14).to.eql(int_value_data); });