From b84993d23ce99bed7faab006ac35139fedc8ce69 Mon Sep 17 00:00:00 2001 From: Jiayu Liu Date: Sun, 5 Jun 2016 17:15:47 +0800 Subject: [PATCH] 0.0.4 - adding alternative schema name --- lib/index.js | 9 ++++++--- package.json | 2 +- src/index.js | 9 ++++++--- test/alternative_schema.spec.js | 31 +++++++++++++++++++++++++++++++ test/index.spec.js | 4 +--- 5 files changed, 45 insertions(+), 10 deletions(-) create mode 100644 test/alternative_schema.spec.js diff --git a/lib/index.js b/lib/index.js index 8aafd8e..fcaafa6 100644 --- a/lib/index.js +++ b/lib/index.js @@ -36,13 +36,15 @@ var PgLogger = function (_winston$Transport) { var opts = _extends({ name: 'PgLogger', - level: 'info' + level: 'info', + schemaName: 'public' }, options); var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(PgLogger).call(this, opts)); var connString = opts.connString; var tableName = opts.tableName; + var schemaName = opts.schemaName; var initTable = opts.initTable; if (!connString) { @@ -51,6 +53,7 @@ var PgLogger = function (_winston$Transport) { if (!tableName) { throw new Error('empty table name'); } + _this.schemaName = schemaName; _this.tableName = tableName; _this.connString = connString; if (initTable) { @@ -68,7 +71,7 @@ var PgLogger = function (_winston$Transport) { if (err) { callback(err); } else { - client.query('CREATE TABLE IF NOT EXISTS "' + _this2.tableName + '" (\n id serial primary key,\n ts timestamp default current_timestamp,\n level varchar(10) not null,\n message varchar(1024) not null,\n meta json\n )', [], function (err, result) { + client.query('CREATE TABLE IF NOT EXISTS "' + _this2.schemaName + '"."' + _this2.tableName + '" (\n id serial primary key,\n ts timestamp default current_timestamp,\n level varchar(10) not null,\n message varchar(1024) not null,\n meta json\n )', [], function (err, result) { pgDone(); if (err) { callback(err); @@ -91,7 +94,7 @@ var PgLogger = function (_winston$Transport) { logger.emit('error', err); callback(err); } else { - client.query('INSERT INTO "' + _this3.tableName + '" (level, message, meta) VALUES ($1, $2, $3)', [level, msg, meta instanceof Array ? JSON.stringify(meta) : meta], function (err, result) { + client.query('INSERT INTO "' + _this3.schemaName + '"."' + _this3.tableName + '" (level, message, meta) ' + 'VALUES ($1, $2, $3)', [level, msg, meta instanceof Array ? JSON.stringify(meta) : meta], function (err, result) { pgDone(); if (err) { logger.emit('error', err); diff --git a/package.json b/package.json index a5ddc3e..56650d3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "winston-pg", - "version": "0.0.3", + "version": "0.0.4", "description": "winston postgres transport", "main": "lib/index.js", "scripts": { diff --git a/src/index.js b/src/index.js index e52ddb6..1332ff1 100644 --- a/src/index.js +++ b/src/index.js @@ -8,16 +8,18 @@ export default class PgLogger extends winston.Transport { let opts = { name: 'PgLogger', level: 'info', + schemaName: 'public', ...options }; super(opts); - const { connString, tableName, initTable } = opts; + const { connString, tableName, schemaName, initTable } = opts; if (!connString) { throw new Error('empty connString'); } if (!tableName) { throw new Error('empty table name'); } + this.schemaName = schemaName; this.tableName = tableName; this.connString = connString; if (initTable) { @@ -30,7 +32,7 @@ export default class PgLogger extends winston.Transport { if (err) { callback(err); } else { - client.query(`CREATE TABLE IF NOT EXISTS "${this.tableName}" ( + client.query(`CREATE TABLE IF NOT EXISTS "${this.schemaName}"."${this.tableName}" ( id serial primary key, ts timestamp default current_timestamp, level varchar(10) not null, @@ -56,7 +58,8 @@ export default class PgLogger extends winston.Transport { logger.emit('error', err); callback(err); } else { - client.query(`INSERT INTO "${this.tableName}" (level, message, meta) VALUES ($1, $2, $3)`, + client.query(`INSERT INTO "${this.schemaName}"."${this.tableName}" (level, message, meta) ` + + `VALUES ($1, $2, $3)`, [level, msg, meta instanceof Array ? JSON.stringify(meta) : meta], (err, result) => { pgDone(); diff --git a/test/alternative_schema.spec.js b/test/alternative_schema.spec.js new file mode 100644 index 0000000..41dd31a --- /dev/null +++ b/test/alternative_schema.spec.js @@ -0,0 +1,31 @@ +import PgLogger from '../src'; +import winston from 'winston'; + +describe('logging with alternative schema', () => { + let logger; + before(done => { + const pgLogger = new PgLogger({ + name: 'test-logger', + level: 'debug', + schemaName: 'winston', + connString: 'postgres://ubuntu@localhost:5432/circle_test', // this is setup by circle ci + tableName: 'winston_logs', + }); + logger = new winston.Logger({ + transports: [ + new winston.transports.Console({ + color: true, + timestamp: true, + }), + pgLogger, + ] + }); + pgLogger.initTable(done); + }); + + it('works', done => { + logger.on('logged', () => done()); + logger.on('error', done); + logger.log('info', 'it works', { funniness: "👌" }); + }); +}); diff --git a/test/index.spec.js b/test/index.spec.js index 75dce49..d73a8e7 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -2,14 +2,12 @@ import PgLogger from '../src'; import winston from 'winston'; describe('logging', () => { - let logger; - before(done => { const pgLogger = new PgLogger({ name: 'test-logger', level: 'debug', - connString: 'postgres://ubuntu@localhost:5432/circle_test', + connString: 'postgres://ubuntu@localhost:5432/circle_test', // this is setup by circle ci tableName: 'winston_logs', }); logger = new winston.Logger({