diff --git a/lib/data-managers/postgres-manager.js b/lib/data-managers/postgres-manager.js index 8ffe0f3..97cd7c7 100644 --- a/lib/data-managers/postgres-manager.js +++ b/lib/data-managers/postgres-manager.js @@ -18,6 +18,33 @@ export default class PostgresManager extends DataManager { execute(database, query, onQueryToken) { return new Promise((resolve, reject) => { var url = database !== '' ? this.dbConfig.getUrlWithDb(database) : this.dbConfig.getUrl(); + + var errorfunc = function (err, client) { + var notification = { + buttons: [ + { + className: "btn-details", + onDidClick: function() { + var editor = atom.workspace.getActiveTextEditor(); + editor.setCursorBufferPosition(0,0); + editor.moveRight(err.position); + }, + text: "=>" + } + ], + dismissable: true, + detail: JSON.stringify(err) + }; + if (err.severity == 'INFO' || err.severity == 'NOTICE') { + atom.notifications.addInfo(err.message, notification); + } else if (err.severity == 'WARNING') { + atom.notifications.addWarning(err.message, notification); + } else { + atom.notifications.addError(err.message, notification); + } + console.log(err.message, JSON.stringify(err)) + }; + pg.connect(url, (err, client, done) => { if (err) { // call `done()` to release the client back to the pool @@ -25,6 +52,8 @@ export default class PostgresManager extends DataManager { reject(this.buildErrorMessage(err)); } else { + client.on('notice', errorfunc); + client.on('error', errorfunc); var pgQuery = client.query({text: query, rowMode: 'array', multiResult: true}, (err, results) => { if (err) { done(); @@ -32,6 +61,7 @@ export default class PostgresManager extends DataManager { } else { done(); + errorfunc(err, client); resolve(this.translateResults(results)); } }); diff --git a/lib/views/data-details-view.js b/lib/views/data-details-view.js index 6f69751..02a5ec9 100644 --- a/lib/views/data-details-view.js +++ b/lib/views/data-details-view.js @@ -73,6 +73,10 @@ export default class DataDetailsView { } buildTableList(element, database) { + var addToEditor = function (item) { + atom.workspace.getActiveTextEditor().insertText(item.srcElement.innerText + ' '); + }; + var tableList = document.createElement('ol'); tableList.className = 'table-list list-tree'; this.DbManager.getTables(database).then(tables => { @@ -83,6 +87,7 @@ export default class DataDetailsView { tbl.addEventListener('click', e => this.toggleCollapsed(e)); var div = document.createElement('div'); div.classList.add('table-name'); + div.ondblclick = addToEditor; div.innerText = tables[i].name; tbl.appendChild(div); tableList.appendChild(tbl); @@ -92,6 +97,10 @@ export default class DataDetailsView { } buildTableDetails(element, table, database) { + var addToEditor = function (item) { + atom.workspace.getActiveTextEditor().insertText(item.srcElement.innerText + ' '); + }; + var columnList = document.createElement('ol'); columnList.className = 'column-list list-tree'; this.DbManager.getTableDetails(database, [{name: table}]).then(columns => { @@ -100,6 +109,7 @@ export default class DataDetailsView { col.className = 'col list-nested-item'; var div = document.createElement('div'); div.classList.add('column-name'); + div.ondblclick = addToEditor; /*var text = columns[i].name + ' ' + columns[i].udt; if (columns[i].size !== '') text += '(' + columns[i].size + ')';*/