From d6aa73d82c3061e8887d1cf5a8dd366617591ab4 Mon Sep 17 00:00:00 2001 From: "stamen.peev" Date: Wed, 13 Feb 2019 14:06:39 +0200 Subject: [PATCH 01/30] fix: interpolate falsy values correctly --- index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index 5141fd6..f1e3e54 100644 --- a/index.js +++ b/index.js @@ -67,7 +67,9 @@ function changeRowVersionType(field) { } function interpolate(txt, params = {}) { - return txt.replace(VAR_RE, (placeHolder, label) => (params[label] || placeHolder)); + return txt.replace(VAR_RE, (placeHolder, label) => { + return typeof params[label] === 'undefined' ? placeHolder : params[label]; + }); }; module.exports = function({utPort}) { From 85fc21ae161573733eff47bee2a7d9752f99313a Mon Sep 17 00:00:00 2001 From: Jenkins CI Date: Thu, 14 Feb 2019 00:16:47 +0000 Subject: [PATCH 02/30] [ci-skip][ci skip] version incremented to 7.7.1 --- CHANGELOG.md | 9 +++++++++ package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6750d05..5d35180 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +## [7.7.1](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.7.0...v7.7.1) (2019-02-14) + + +### Bug Fixes + +* interpolate falsy values correctly ([d6aa73d](https://github.com/softwaregroup-bg/ut-port-sql/commit/d6aa73d)) + + + # [7.7.0](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.6.0...v7.7.0) (2019-02-08) diff --git a/package.json b/package.json index 8b4aac6..e96059d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ut-port-sql", - "version": "7.7.0", + "version": "7.7.1", "main": "./index.js", "dependencies": { "fs-plus": "3.0.2", From 982e6c0b62d08e80559f0f6199a894203fa03a4d Mon Sep 17 00:00:00 2001 From: Kalin Krustev Date: Thu, 14 Feb 2019 14:07:33 +1000 Subject: [PATCH 03/30] fix: update mssql --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e96059d..5e107e9 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "fs-plus": "3.0.2", "json-stringify-deterministic": "1.0.1", "through2": "2.0.3", - "mssql": "4.3.0", + "mssql": "4.3.1", "uuid": "3.3.2", "xml2js": "0.4.19" }, From ecd8bda07adc7f9f24d8a05c249445b15f56f5d1 Mon Sep 17 00:00:00 2001 From: Jenkins CI Date: Thu, 14 Feb 2019 04:16:31 +0000 Subject: [PATCH 04/30] [ci-skip][ci skip] version incremented to 7.7.2 --- CHANGELOG.md | 9 +++++++++ package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d35180..6bbc920 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +## [7.7.2](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.7.1...v7.7.2) (2019-02-14) + + +### Bug Fixes + +* update mssql ([982e6c0](https://github.com/softwaregroup-bg/ut-port-sql/commit/982e6c0)) + + + ## [7.7.1](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.7.0...v7.7.1) (2019-02-14) diff --git a/package.json b/package.json index 5e107e9..efea29a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ut-port-sql", - "version": "7.7.1", + "version": "7.7.2", "main": "./index.js", "dependencies": { "fs-plus": "3.0.2", From 37b81ab86a95626aadb596650accec23d24889d7 Mon Sep 17 00:00:00 2001 From: Kalin Krustev Date: Tue, 19 Feb 2019 11:55:55 +1000 Subject: [PATCH 05/30] feat: access whole config subtrees as JSON when interpolating --- index.js | 32 ++++++++------------------------ package.json | 1 + 2 files changed, 9 insertions(+), 24 deletions(-) diff --git a/index.js b/index.js index f1e3e54..332463e 100644 --- a/index.js +++ b/index.js @@ -18,6 +18,7 @@ const VAR_RE = /\$\{([^}]*)\}/g; const ENCRYPT_RE = /(?:NULL|0x.*)\/\*encrypt (.*)\*\//gi; const ROW_VERSION_INNER_TYPE = 'BINARY'; const serverRequire = require; +const dotprop = require('dot-prop'); // patch for https://github.com/tediousjs/tedious/pull/710 require('tedious').TYPES.Time.writeParameterData = function writeParameterData(buffer, parameter, options) { @@ -68,7 +69,12 @@ function changeRowVersionType(field) { function interpolate(txt, params = {}) { return txt.replace(VAR_RE, (placeHolder, label) => { - return typeof params[label] === 'undefined' ? placeHolder : params[label]; + let value = dotprop.get(params, label); + switch (typeof value) { + case 'undefined': return placeHolder; + case 'object': return JSON.stringify(value); + default: return value; + } }); }; @@ -332,7 +338,7 @@ module.exports = function({utPort}) { } updateSchema(schema) { this.checkConnection(); - let busConfig = flatten(this.bus.config); + let busConfig = this.bus.config; function replaceAuditLog(statement) { let parserSP = require('./parsers/mssqlSP'); @@ -1454,26 +1460,4 @@ module.exports = function({utPort}) { }); object[fieldName] = fieldValue; } - - function flatten(data) { - let result = {}; - function recurse(cur, prop) { - if (Object(cur) !== cur) { - result[prop] = cur; - } else if (Array.isArray(cur) || typeof cur === 'function') { - result[prop] = cur; - } else { - let isEmpty = true; - Object.keys(cur).forEach(function(p) { - isEmpty = false; - recurse(cur[p], prop ? prop + '.' + p : p); - }); - if (isEmpty && prop) { - result[prop] = {}; - } - } - } - recurse(data, ''); - return result; - } }; diff --git a/package.json b/package.json index efea29a..d2f415b 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "7.7.2", "main": "./index.js", "dependencies": { + "dot-prop": "4.2.0", "fs-plus": "3.0.2", "json-stringify-deterministic": "1.0.1", "through2": "2.0.3", From caecdabd9b183989ab2bb0db83c9247f536ce85c Mon Sep 17 00:00:00 2001 From: Jenkins CI Date: Tue, 19 Feb 2019 02:06:43 +0000 Subject: [PATCH 06/30] [ci-skip][ci skip] version incremented to 7.8.0 --- CHANGELOG.md | 9 +++++++++ package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6bbc920..7887ba0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +# [7.8.0](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.7.2...v7.8.0) (2019-02-19) + + +### Features + +* access whole config subtrees as JSON when interpolating ([37b81ab](https://github.com/softwaregroup-bg/ut-port-sql/commit/37b81ab)) + + + ## [7.7.2](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.7.1...v7.7.2) (2019-02-14) diff --git a/package.json b/package.json index d2f415b..73b0ffa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ut-port-sql", - "version": "7.7.2", + "version": "7.8.0", "main": "./index.js", "dependencies": { "dot-prop": "4.2.0", From 7763192b0148c07986301ed9b31516d740255132 Mon Sep 17 00:00:00 2001 From: Kalin Krustev Date: Tue, 19 Feb 2019 15:57:40 +1000 Subject: [PATCH 07/30] fix: handle schemas in import order --- index.js | 4 ++-- package.json | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 332463e..173f09f 100644 --- a/index.js +++ b/index.js @@ -157,7 +157,7 @@ module.exports = function({utPort}) { start() { this.cbc = this.config.cbc && crypto.cbc(this.config.cbc); this.bus && this.bus.attachHandlers(this.methods, this.config.imports); - this.methods.imported && Object.values(this.methods.imported).forEach(value => { + this.methods.importedMap && Array.from(this.methods.importedMap.values()).forEach(value => { if (Array.isArray(value.skipTableType)) { this.config.skipTableType = this.config.skipTableType.concat(value.skipTableType); }; @@ -325,7 +325,7 @@ module.exports = function({utPort}) { result.push({path: schema}); } } - this.methods.imported && Object.entries(this.methods.imported).forEach(function([name, value]) { + this.methods.importedMap && Array.from(this.methods.importedMap.entries()).forEach(function([name, value]) { if (this.includesConfig('updates', name, true)) { value.schema && Array.prototype.push.apply(result, value.schema); } diff --git a/package.json b/package.json index 73b0ffa..38d54fb 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "pegjs": "0.10.0" }, "peerDependencies": { + "ut-bus": "^7.1.1", "tedious": "^2.7.1" }, "scripts": { From 197c46b0524c55d590558c6b22eff79cf48d577a Mon Sep 17 00:00:00 2001 From: Jenkins CI Date: Tue, 19 Feb 2019 06:06:48 +0000 Subject: [PATCH 08/30] [ci-skip][ci skip] version incremented to 7.8.1 --- CHANGELOG.md | 9 +++++++++ package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7887ba0..f016f0b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +## [7.8.1](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.8.0...v7.8.1) (2019-02-19) + + +### Bug Fixes + +* handle schemas in import order ([7763192](https://github.com/softwaregroup-bg/ut-port-sql/commit/7763192)) + + + # [7.8.0](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.7.2...v7.8.0) (2019-02-19) diff --git a/package.json b/package.json index 38d54fb..1b2dc7d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ut-port-sql", - "version": "7.8.0", + "version": "7.8.1", "main": "./index.js", "dependencies": { "dot-prop": "4.2.0", From 4d52389a007ac4c18517026a83a6564f9db71d8a Mon Sep 17 00:00:00 2001 From: Kalin Krustev Date: Mon, 25 Feb 2019 17:35:05 +1000 Subject: [PATCH 09/30] fix: only create when create.user is configured --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index 173f09f..4ea7921 100644 --- a/index.js +++ b/index.js @@ -1404,7 +1404,7 @@ module.exports = function({utPort}) { }); this.connection = new mssql.ConnectionPool(sanitize(this.config.connection)); - if (this.config.create) { + if (this.config.create && this.config.create.user) { let conCreate = new mssql.ConnectionPool( sanitize({...this.config.connection, ...{user: '', password: '', database: ''}, ...this.config.create}) // expect explicit user/pass ); From baf9020ac0790d04a2c8bd5d67aa429e5acb94a5 Mon Sep 17 00:00:00 2001 From: Jenkins CI Date: Mon, 25 Feb 2019 07:36:46 +0000 Subject: [PATCH 10/30] [ci-skip][ci skip] version incremented to 7.8.2 --- CHANGELOG.md | 9 +++++++++ package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f016f0b..e643a20 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +## [7.8.2](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.8.1...v7.8.2) (2019-02-25) + + +### Bug Fixes + +* only create when create.user is configured ([4d52389](https://github.com/softwaregroup-bg/ut-port-sql/commit/4d52389)) + + + ## [7.8.1](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.8.0...v7.8.1) (2019-02-19) diff --git a/package.json b/package.json index 1b2dc7d..83e503d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ut-port-sql", - "version": "7.8.1", + "version": "7.8.2", "main": "./index.js", "dependencies": { "dot-prop": "4.2.0", From a2b473a9bdba60ba7bd6156585c498e655d297b0 Mon Sep 17 00:00:00 2001 From: Kalin Krustev Date: Wed, 13 Mar 2019 11:26:54 +0200 Subject: [PATCH 11/30] feat: crypto activated by field/param prefix --- index.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/index.js b/index.js index 4ea7921..e496fc9 100644 --- a/index.js +++ b/index.js @@ -19,6 +19,7 @@ const ENCRYPT_RE = /(?:NULL|0x.*)\/\*encrypt (.*)\*\//gi; const ROW_VERSION_INNER_TYPE = 'BINARY'; const serverRequire = require; const dotprop = require('dot-prop'); +const isEncrypted = item => item && ((item.def && item.def.size % 16 === 0) || (item.length % 16 === 0) || /^encrypted/.test(item.name)); // patch for https://github.com/tediousjs/tedious/pull/710 require('tedious').TYPES.Time.writeParameterData = function writeParameterData(buffer, parameter, options) { @@ -803,8 +804,8 @@ module.exports = function({utPort}) { } else { value = data[param.name]; } - if (param.encrypt) { - value = self.cbc.encrypt(value); + if (param.encrypt && value != null) { + value = self.cbc.encrypt(Buffer.from(value)); } let hasValue = value !== void 0; let type = sqlType(param.def); @@ -902,7 +903,7 @@ module.exports = function({utPort}) { Object.keys(resultset.columns).forEach(column => { switch (resultset.columns[column].type.declaration) { case 'varbinary': - if (self.cbc && resultset.columns[column].length % 16 === 0) { + if (self.cbc && isEncrypted(resultset.columns[column])) { encryptedColumns.push(column); } break; @@ -1073,9 +1074,9 @@ module.exports = function({utPort}) { flatten = '_'; } }); - binding.params && binding.params.forEach(function(param) { + binding.params && binding.params.forEach(param => { (update.indexOf(param.name) >= 0) && (param.update = param.name.replace(/\$update$/i, '')); - if (param.def && param.def.type === 'varbinary' && param.def.size % 16 === 0 && this.cbc) { + if (isEncrypted(param)) { param.encrypt = true; }; if (param.def && param.def.type === 'table') { @@ -1111,7 +1112,7 @@ module.exports = function({utPort}) { return table; }; } - }.bind(this)); + }); this.methods[flatName] = this.callSP(binding.name, binding.params, flatten, procedure.fileName); } }.bind(this)); From 36c8c819fb140bce898d1510b43c4d2b64773622 Mon Sep 17 00:00:00 2001 From: Kalin Krustev Date: Wed, 13 Mar 2019 11:28:10 +0200 Subject: [PATCH 12/30] feat: support ?# before the modifiers --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index e496fc9..0d46a6a 100644 --- a/index.js +++ b/index.js @@ -211,7 +211,7 @@ module.exports = function({utPort}) { $meta.debug = !!this.bus.config.debug; let methodName = ($meta && $meta.method); if (methodName) { - let parts = methodName.match(/^([^[]*)(\[[0+?^]?])?$/); + let parts = methodName.match(/^([^[#?]*)[^[]*(\[[0+?^]?])?$/); let modifier; if (parts) { methodName = parts[1]; From c87762d220d319fccc0923446ad6e51bd338e024 Mon Sep 17 00:00:00 2001 From: Kalin Krustev Date: Wed, 13 Mar 2019 11:49:55 +0200 Subject: [PATCH 13/30] fix: check this.cbc --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index 0d46a6a..cc14d28 100644 --- a/index.js +++ b/index.js @@ -1076,7 +1076,7 @@ module.exports = function({utPort}) { }); binding.params && binding.params.forEach(param => { (update.indexOf(param.name) >= 0) && (param.update = param.name.replace(/\$update$/i, '')); - if (isEncrypted(param)) { + if (isEncrypted(param) && this.cbc) { param.encrypt = true; }; if (param.def && param.def.type === 'table') { From 70a6f4a9b6da45dc9f9176489f26ffb932447a34 Mon Sep 17 00:00:00 2001 From: Kalin Krustev Date: Wed, 13 Mar 2019 11:52:38 +0200 Subject: [PATCH 14/30] fix: check for varbinary --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index cc14d28..af1882e 100644 --- a/index.js +++ b/index.js @@ -19,7 +19,7 @@ const ENCRYPT_RE = /(?:NULL|0x.*)\/\*encrypt (.*)\*\//gi; const ROW_VERSION_INNER_TYPE = 'BINARY'; const serverRequire = require; const dotprop = require('dot-prop'); -const isEncrypted = item => item && ((item.def && item.def.size % 16 === 0) || (item.length % 16 === 0) || /^encrypted/.test(item.name)); +const isEncrypted = item => item && ((item.def && item.def.type === 'varbinary' && item.def.size % 16 === 0) || (item.length % 16 === 0) || /^encrypted/.test(item.name)); // patch for https://github.com/tediousjs/tedious/pull/710 require('tedious').TYPES.Time.writeParameterData = function writeParameterData(buffer, parameter, options) { From cdea149e6158e79a652d75d681789d36effe3a2e Mon Sep 17 00:00:00 2001 From: Jenkins CI Date: Wed, 13 Mar 2019 12:08:07 +0000 Subject: [PATCH 15/30] [ci-skip][ci skip] version incremented to 7.9.0 --- CHANGELOG.md | 16 ++++++++++++++++ package.json | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e643a20..6df2f63 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,19 @@ +# [7.9.0](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.8.2...v7.9.0) (2019-03-13) + + +### Bug Fixes + +* check for varbinary ([70a6f4a](https://github.com/softwaregroup-bg/ut-port-sql/commit/70a6f4a)) +* check this.cbc ([c87762d](https://github.com/softwaregroup-bg/ut-port-sql/commit/c87762d)) + + +### Features + +* crypto activated by field/param prefix ([a2b473a](https://github.com/softwaregroup-bg/ut-port-sql/commit/a2b473a)) +* support ?# before the modifiers ([36c8c81](https://github.com/softwaregroup-bg/ut-port-sql/commit/36c8c81)) + + + ## [7.8.2](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.8.1...v7.8.2) (2019-02-25) diff --git a/package.json b/package.json index 83e503d..764a10e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ut-port-sql", - "version": "7.8.2", + "version": "7.9.0", "main": "./index.js", "dependencies": { "dot-prop": "4.2.0", From b9977050cde1dfd1804b352d2c110b716aa41952 Mon Sep 17 00:00:00 2001 From: Kalin Krustev Date: Thu, 14 Mar 2019 08:58:06 +0200 Subject: [PATCH 16/30] fix: recursion safeguard --- index.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index af1882e..8830c1b 100644 --- a/index.js +++ b/index.js @@ -103,6 +103,7 @@ module.exports = function({utPort}) { skipTableType: [], paramsOutName: 'out', doc: false, + maxNesting: 5, connection: { options: { debug: { @@ -711,6 +712,7 @@ module.exports = function({utPort}) { } callSP(name, params, flatten, fileName) { let self = this; + let nesting = this.config.maxNesting; let outParams = []; params && params.forEach(function(param) { param.out && outParams.push(param.name); @@ -740,8 +742,10 @@ module.exports = function({utPort}) { return data; } let result = {}; - function recurse(cur, prop) { - if (Object(cur) !== cur) { + function recurse(cur, prop, depth) { + if (depth > nesting) throw new Error('Unsupported deep nesting for property ' + prop); + if (typeof cur === 'function') { + } else if (Object(cur) !== cur) { result[prop] = cur; } else if (Array.isArray(cur)) { // for (let i = 0, l = cur.length; i < l; i += 1) { @@ -755,14 +759,14 @@ module.exports = function({utPort}) { let isEmpty = true; for (let p in cur) { isEmpty = false; - recurse(cur[p], prop ? prop + delimiter + p : p); + recurse(cur[p], prop ? prop + delimiter + p : p, depth + 1); } if (isEmpty && prop) { result[prop] = {}; } } } - recurse(data, ''); + recurse(data, '', 1); return result; } function getValue(column, value, def, updated) { From 390be229d5189e2359c9c80ba70dd314c34f449a Mon Sep 17 00:00:00 2001 From: Jenkins CI Date: Thu, 14 Mar 2019 06:59:49 +0000 Subject: [PATCH 17/30] [ci-skip][ci skip] version incremented to 7.9.1 --- CHANGELOG.md | 9 +++++++++ package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6df2f63..7ad0bd8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +## [7.9.1](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.9.0...v7.9.1) (2019-03-14) + + +### Bug Fixes + +* recursion safeguard ([b997705](https://github.com/softwaregroup-bg/ut-port-sql/commit/b997705)) + + + # [7.9.0](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.8.2...v7.9.0) (2019-03-13) diff --git a/package.json b/package.json index 764a10e..b890d6f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ut-port-sql", - "version": "7.9.0", + "version": "7.9.1", "main": "./index.js", "dependencies": { "dot-prop": "4.2.0", From c39bceb0e394fda14403ed5f9e308051f94ec75b Mon Sep 17 00:00:00 2001 From: Kalin Krustev Date: Fri, 22 Mar 2019 09:14:43 +0200 Subject: [PATCH 18/30] chore: expired certificate --- .gitlab-ci.yml | 2 +- CHANGELOG.md | 132 ++++++++++++++++++++++++------------------------- 2 files changed, 67 insertions(+), 67 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fe8dbef..edba37f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,5 +1,5 @@ test: script: - - wget https://git.softwaregroup-bg.com/ut5/ut-tools/raw/master/gitlab/gitlab-ci.sh -O gitlab-ci.sh + - wget https://raw.githubusercontent.com/softwaregroup-bg/ut-tools/master/gitlab/gitlab-ci.sh -O gitlab-ci.sh - chmod +x gitlab-ci.sh - ./gitlab-ci.sh \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ad0bd8..453e4f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -757,304 +757,304 @@ -## [5.4.4](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.4.3...v5.4.4) (2016-08-02) +## [5.4.4](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.4.3...v5.4.4) (2016-08-02) -## [5.4.3](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.4.2...v5.4.3) (2016-07-26) +## [5.4.3](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.4.2...v5.4.3) (2016-07-26) ### Bug Fixes -* let, const (#2) ([f678e6c](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/f678e6c)) +* let, const (#2) ([f678e6c](https://git.softwaregroup.com/ut5/ut-port-sql/commit/f678e6c)) -## [5.4.2](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.4.1...v5.4.2) (2016-07-26) +## [5.4.2](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.4.1...v5.4.2) (2016-07-26) -## [5.4.1](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.65...v5.4.1) (2016-07-11) +## [5.4.1](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.65...v5.4.1) (2016-07-11) ### Features -* upgrade dependencies ([2826f09](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/2826f09)) +* upgrade dependencies ([2826f09](https://git.softwaregroup.com/ut5/ut-port-sql/commit/2826f09)) -## [5.3.65](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.64...v5.3.65) (2016-06-23) +## [5.3.65](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.64...v5.3.65) (2016-06-23) ### Features -* add support for saving documentation when doc=true in the config ([0f090fa](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/0f090fa)) +* add support for saving documentation when doc=true in the config ([0f090fa](https://git.softwaregroup.com/ut5/ut-port-sql/commit/0f090fa)) -## [5.3.64](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.63...v5.3.64) (2016-06-20) +## [5.3.64](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.63...v5.3.64) (2016-06-20) ### Features -* add support for time type ([6800701](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/6800701)) +* add support for time type ([6800701](https://git.softwaregroup.com/ut5/ut-port-sql/commit/6800701)) -## [5.3.63](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.62...v5.3.63) (2016-06-20) +## [5.3.63](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.62...v5.3.63) (2016-06-20) ### Features -* add support for time columns in a table type ([9652a77](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/9652a77)) +* add support for time columns in a table type ([9652a77](https://git.softwaregroup.com/ut5/ut-port-sql/commit/9652a77)) -## [5.3.62](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.61...v5.3.62) (2016-06-16) +## [5.3.62](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.61...v5.3.62) (2016-06-16) -## [5.3.61](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.60...v5.3.61) (2016-06-15) +## [5.3.61](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.60...v5.3.61) (2016-06-15) ### Features -* upgrade mssql ([7990d16](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/7990d16)) +* upgrade mssql ([7990d16](https://git.softwaregroup.com/ut5/ut-port-sql/commit/7990d16)) -## [5.3.60](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.59...v5.3.60) (2016-06-03) +## [5.3.60](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.59...v5.3.60) (2016-06-03) ### Features -* add parser for default expression ([a6d5450](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/a6d5450)) -* add support for default values and datetime2 precision in TVP ([5475910](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/5475910)) -* support parsing default values for table columns ([abdaa51](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/abdaa51)) -* support sending default values in TVP and fix datetime2 handling ([83a407b](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/83a407b)) +* add parser for default expression ([a6d5450](https://git.softwaregroup.com/ut5/ut-port-sql/commit/a6d5450)) +* add support for default values and datetime2 precision in TVP ([5475910](https://git.softwaregroup.com/ut5/ut-port-sql/commit/5475910)) +* support parsing default values for table columns ([abdaa51](https://git.softwaregroup.com/ut5/ut-port-sql/commit/abdaa51)) +* support sending default values in TVP and fix datetime2 handling ([83a407b](https://git.softwaregroup.com/ut5/ut-port-sql/commit/83a407b)) -## [5.3.59](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.58...v5.3.59) (2016-06-02) +## [5.3.59](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.58...v5.3.59) (2016-06-02) ### Features -* pass @[@procid](https://github.com/procid) instead of procedure name ([619cc1b](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/619cc1b)) +* pass @[@procid](https://github.com/procid) instead of procedure name ([619cc1b](https://git.softwaregroup.com/ut5/ut-port-sql/commit/619cc1b)) -## [5.3.58](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.57...v5.3.58) (2016-06-01) +## [5.3.58](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.57...v5.3.58) (2016-06-01) -## [5.3.57](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.56...v5.3.57) (2016-06-01) +## [5.3.57](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.56...v5.3.57) (2016-06-01) ### Features -* add support capturing parameters in [@callParams](https://github.com/callParams) ([d116c43](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/d116c43)) +* add support capturing parameters in [@callParams](https://github.com/callParams) ([d116c43](https://git.softwaregroup.com/ut5/ut-port-sql/commit/d116c43)) -## [5.3.56](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.55...v5.3.56) (2016-05-30) +## [5.3.56](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.55...v5.3.56) (2016-05-30) ### Features -* add support for endpoint/method syntax ([4a5d41f](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/4a5d41f)) +* add support for endpoint/method syntax ([4a5d41f](https://git.softwaregroup.com/ut5/ut-port-sql/commit/4a5d41f)) -## [5.3.55](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.54...v5.3.55) (2016-05-26) +## [5.3.55](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.54...v5.3.55) (2016-05-26) ### Bug Fixes -* remove comment ([f47d03d](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/f47d03d)) -* remove fields filtration by default and handle in implementation ([1fc3223](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/1fc3223)) +* remove comment ([f47d03d](https://git.softwaregroup.com/ut5/ut-port-sql/commit/f47d03d)) +* remove fields filtration by default and handle in implementation ([1fc3223](https://git.softwaregroup.com/ut5/ut-port-sql/commit/1fc3223)) ### Features -* add automatig XML building from JSON ([744f517](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/744f517)) +* add automatig XML building from JSON ([744f517](https://git.softwaregroup.com/ut5/ut-port-sql/commit/744f517)) -## [5.3.54](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.53...v5.3.54) (2016-05-25) +## [5.3.54](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.53...v5.3.54) (2016-05-25) ### Bug Fixes -* improve itteration algorithm ([74e04bb](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/74e04bb)) +* improve itteration algorithm ([74e04bb](https://git.softwaregroup.com/ut5/ut-port-sql/commit/74e04bb)) ### Features -* XML parsing functionality ([76b4630](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/76b4630)) +* XML parsing functionality ([76b4630](https://git.softwaregroup.com/ut5/ut-port-sql/commit/76b4630)) -## [5.3.53](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.52...v5.3.53) (2016-05-17) +## [5.3.53](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.52...v5.3.53) (2016-05-17) ### Bug Fixes -* improve error handling ([02a9e49](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/02a9e49)) +* improve error handling ([02a9e49](https://git.softwaregroup.com/ut5/ut-port-sql/commit/02a9e49)) -## [5.3.52](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.51...v5.3.52) (2016-05-17) +## [5.3.52](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.51...v5.3.52) (2016-05-17) ### Features -* improve error logging ([6e7e6ee](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/6e7e6ee)) +* improve error logging ([6e7e6ee](https://git.softwaregroup.com/ut5/ut-port-sql/commit/6e7e6ee)) -## [5.3.51](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.50...v5.3.51) (2016-05-10) +## [5.3.51](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.50...v5.3.51) (2016-05-10) ### Features -* support passing $meta and using . in parameter/column names([706fe1f](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/706fe1f)) +* support passing $meta and using . in parameter/column names([706fe1f](https://git.softwaregroup.com/ut5/ut-port-sql/commit/706fe1f)) -## [5.3.50](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.49...v5.3.50) (2016-05-06) +## [5.3.50](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.49...v5.3.50) (2016-05-06) ### Features -* generate TTU automatically for all tables based on their structure([0c769cb](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/0c769cb)) +* generate TTU automatically for all tables based on their structure([0c769cb](https://git.softwaregroup.com/ut5/ut-port-sql/commit/0c769cb)) -## [5.3.49](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.48...v5.3.49) (2016-04-28) +## [5.3.49](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.48...v5.3.49) (2016-04-28) ### Bug Fixes -* **call-sp:** Default parameters should not be overridden with NULL when properties not specified.([55c7ef9](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/55c7ef9)) +* **call-sp:** Default parameters should not be overridden with NULL when properties not specified.([55c7ef9](https://git.softwaregroup.com/ut5/ut-port-sql/commit/55c7ef9)) ### Features -* **resultsets-order:** Include output parameters with predefined key when using naming resultsets.([25914da](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/25914da)) +* **resultsets-order:** Include output parameters with predefined key when using naming resultsets.([25914da](https://git.softwaregroup.com/ut5/ut-port-sql/commit/25914da)) -## [5.3.48](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.47...v5.3.48) (2016-04-27) +## [5.3.48](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.47...v5.3.48) (2016-04-27) -## [5.3.47](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.46...v5.3.47) (2016-04-25) +## [5.3.47](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.46...v5.3.47) (2016-04-25) ### Features -* allow retry to be configured and fail when retry is disabled ([55783de](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/55783de)) +* allow retry to be configured and fail when retry is disabled ([55783de](https://git.softwaregroup.com/ut5/ut-port-sql/commit/55783de)) -## [5.3.46](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.45...v5.3.46) (2016-04-22) +## [5.3.46](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.45...v5.3.46) (2016-04-22) ### Features -* add support for creating database ([04ab4fb](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/04ab4fb)) +* add support for creating database ([04ab4fb](https://git.softwaregroup.com/ut5/ut-port-sql/commit/04ab4fb)) -## [5.3.45](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.44...v5.3.45) (2016-04-19) +## [5.3.45](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.44...v5.3.45) (2016-04-19) ### Bug Fixes -* fix naming convention for auditCall ([edbec62](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/edbec62)) +* fix naming convention for auditCall ([edbec62](https://git.softwaregroup.com/ut5/ut-port-sql/commit/edbec62)) -## [5.3.44](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.43...v5.3.44) (2016-04-15) +## [5.3.44](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.43...v5.3.44) (2016-04-15) ### Features -* add Gitlab-ci and Jenkins scripts ([4591399](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/4591399)) +* add Gitlab-ci and Jenkins scripts ([4591399](https://git.softwaregroup.com/ut5/ut-port-sql/commit/4591399)) -## [5.3.43](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.42...v5.3.43) (2016-04-05) +## [5.3.43](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.42...v5.3.43) (2016-04-05) ### Features -* report error location in file ([1f60345](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/1f60345)) +* report error location in file ([1f60345](https://git.softwaregroup.com/ut5/ut-port-sql/commit/1f60345)) -## [5.3.42](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.41...v5.3.42) (2016-04-05) +## [5.3.42](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.41...v5.3.42) (2016-04-05) ### Features -* **parser:** add function and params comment as documentation ([fbb7e8a](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/fbb7e8a)) -* **parser:** add support for alter ([ce74eab](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/ce74eab)) -* **parser:** add table and procedure comment as description in mssql ([91075e5](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/91075e5)) +* **parser:** add function and params comment as documentation ([fbb7e8a](https://git.softwaregroup.com/ut5/ut-port-sql/commit/fbb7e8a)) +* **parser:** add support for alter ([ce74eab](https://git.softwaregroup.com/ut5/ut-port-sql/commit/ce74eab)) +* **parser:** add table and procedure comment as description in mssql ([91075e5](https://git.softwaregroup.com/ut5/ut-port-sql/commit/91075e5)) -## [5.3.41](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.40...v5.3.41) (2016-04-04) +## [5.3.41](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.40...v5.3.41) (2016-04-04) ### Features -* update ut-error dependency ([fed374c](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/fed374c)) +* update ut-error dependency ([fed374c](https://git.softwaregroup.com/ut5/ut-port-sql/commit/fed374c)) -## [5.3.40](https://git.softwaregroup-bg.com/ut5/ut-port-sql/compare/v5.3.38...v5.3.40) (2016-03-31) +## [5.3.40](https://git.softwaregroup.com/ut5/ut-port-sql/compare/v5.3.38...v5.3.40) (2016-03-31) ### Bug Fixes -* switch to nexus ([ac00ce1](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/ac00ce1)) -* use constant dependencies ([595be31](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/595be31)) +* switch to nexus ([ac00ce1](https://git.softwaregroup.com/ut5/ut-port-sql/commit/ac00ce1)) +* use constant dependencies ([595be31](https://git.softwaregroup.com/ut5/ut-port-sql/commit/595be31)) ### Features -* ut-tools upgrade ([468bc52](https://git.softwaregroup-bg.com/ut5/ut-port-sql/commit/468bc52)) +* ut-tools upgrade ([468bc52](https://git.softwaregroup.com/ut5/ut-port-sql/commit/468bc52)) From 836bacb58e99d47722b6d51e14873cecce5e8e8a Mon Sep 17 00:00:00 2001 From: Kalin Krustev Date: Fri, 22 Mar 2019 10:06:07 +0200 Subject: [PATCH 19/30] test: upgrade ut-tools --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index b890d6f..627c8da 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,8 @@ "xml2js": "0.4.19" }, "devDependencies": { - "tap": "^12.5.2", - "ut-tools": "^6.8.10", + "tap": "^12.6.0", + "ut-tools": "^6.14.1", "pegjs": "0.10.0" }, "peerDependencies": { From 4df24ce9529a839ca732e232cc7bfe6578c74cac Mon Sep 17 00:00:00 2001 From: Jenkins CI Date: Fri, 22 Mar 2019 08:16:34 +0000 Subject: [PATCH 20/30] [ci-skip][ci skip] version incremented to 7.9.2 --- CHANGELOG.md | 4 ++++ package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 453e4f2..ee61397 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## [7.9.2](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.9.1...v7.9.2) (2019-03-22) + + + ## [7.9.1](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.9.0...v7.9.1) (2019-03-14) diff --git a/package.json b/package.json index 627c8da..2a40b5b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ut-port-sql", - "version": "7.9.1", + "version": "7.9.2", "main": "./index.js", "dependencies": { "dot-prop": "4.2.0", From b15d772f4411ff21daacec13b7112816cf97e24b Mon Sep 17 00:00:00 2001 From: Kalin Krustev Date: Wed, 27 Mar 2019 11:52:52 +0200 Subject: [PATCH 21/30] feat: allow seed data coming from .js or .json --- index.js | 144 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 90 insertions(+), 54 deletions(-) diff --git a/index.js b/index.js index 8830c1b..77ab161 100644 --- a/index.js +++ b/index.js @@ -140,11 +140,12 @@ module.exports = function({utPort}) { }) .then(this.refreshView.bind(this, true)) .then(this.loadSchema.bind(this, null)) - .then(this.updateSchema.bind(this)) + .then(this.updateSchema.bind(this, {paths: 'schema', retry: this.config.retrySchemaUpdate, load: true})) .then(this.refreshView.bind(this, false)) .then(this.linkSP.bind(this)) .then(this.doc.bind(this)) .then((v) => { this.connectionReady = true; return v; }) + .then(this.updateSchema.bind(this, {paths: 'seed', retry: false, load: false})) .catch((err) => { try { this.connection.close(); } catch (e) {}; if (this.config.retry) { @@ -312,33 +313,33 @@ module.exports = function({utPort}) { }); }); } - getSchema() { + getPaths(name) { let result = []; - if (this.config.schema) { - let schema; - if (typeof (this.config.schema) === 'function') { - schema = this.config.schema(); + if (this.config[name]) { + let folder; + if (typeof (this.config[name]) === 'function') { + folder = this.config[name](); } else { - schema = this.config.schema; + folder = this.config[name]; } - if (Array.isArray(schema)) { - result = schema.slice(); + if (Array.isArray(folder)) { + result = folder.slice(); } else { - result.push({path: schema}); + result.push({path: folder}); } } - this.methods.importedMap && Array.from(this.methods.importedMap.entries()).forEach(function([name, value]) { - if (this.includesConfig('updates', name, true)) { - value.schema && Array.prototype.push.apply(result, value.schema); + this.methods.importedMap && Array.from(this.methods.importedMap.entries()).forEach(function([imported, value]) { + if (this.includesConfig('updates', imported, true)) { + value[name] && Array.prototype.push.apply(result, value[name]); } }.bind(this)); - return result.reduce((all, schema) => { - schema = (typeof schema === 'function') ? schema(this) : schema; - schema && all.push(schema); + return result.reduce((all, item) => { + item = (typeof item === 'function') ? item(this) : item; + item && all.push(item); return all; }, []); } - updateSchema(schema) { + updateSchema({paths, retry, load}, schema) { this.checkConnection(); let busConfig = this.bus.config; @@ -482,8 +483,27 @@ module.exports = function({utPort}) { } } + const addSP = (queries, {fileName, objectName, objectId, config}) => { + const params = require(fileName); + queries.push({ + fileName, + objectName, + objectId, + callSP: () => this.methods[objectName].call( + this, + typeof params === 'function' ? params(config) : params, + { + auth: { + actorId: 0 + }, + method: objectName, + userName: 'SYSTEM' + }) + }); + }; + function getObjectName(fileName) { - return fileName.replace(/\.sql$/i, '').replace(/^[^$]*\$/, ''); // remove "prefix$" and ".sql" suffix + return fileName.replace(/\.(sql|js|json)$/i, '').replace(/^[^$]*\$/, ''); // remove "prefix$" and ".sql" suffix } function shouldCreateTT(tableName) { @@ -533,16 +553,16 @@ module.exports = function({utPort}) { } let self = this; - let schemas = this.getSchema(); + let folders = this.getPaths(paths); let failedQueries = []; let hashDropped = false; - if (!schemas || !schemas.length) { + if (!folders || !folders.length) { return schema; } return new Promise((resolve, reject) => { let objectList = []; let promise = Promise.resolve(); - schemas.forEach((schemaConfig) => { + folders.forEach((schemaConfig) => { promise = promise .then(() => { return new Promise((resolve, reject) => { @@ -572,37 +592,52 @@ module.exports = function({utPort}) { if (!fs.statSync(fileName).isFile()) { return; } - schemaConfig.linkSP && (objectList[objectId] = fileName); - let fileContent = fs.readFileSync(fileName).toString(); - addQuery(queries, { - fileName: fileName, - objectName: objectName, - objectId: objectId, - fileContent: fileContent, - createStatement: getCreateStatement(fileContent, fileName, objectName) - }); - if (shouldCreateTT(objectId) && !objectIds[objectId + 'tt']) { - let tt = tableToType(fileContent.trim().replace(/^ALTER /i, 'CREATE ')); - if (tt) { + switch (path.extname(fileName).toLowerCase()) { + case '.sql': + schemaConfig.linkSP && (objectList[objectId] = fileName); + let fileContent = fs.readFileSync(fileName).toString(); addQuery(queries, { fileName: fileName, - objectName: objectName + 'TT', - objectId: objectId + 'tt', - fileContent: tt, - createStatement: tt + objectName: objectName, + objectId: objectId, + fileContent: fileContent, + createStatement: getCreateStatement(fileContent, fileName, objectName) }); - } - let ttu = tableToTTU(fileContent.trim().replace(/^ALTER /i, 'CREATE ')); - if (ttu) { - addQuery(queries, { + if (shouldCreateTT(objectId) && !objectIds[objectId + 'tt']) { + let tt = tableToType(fileContent.trim().replace(/^ALTER /i, 'CREATE ')); + if (tt) { + addQuery(queries, { + fileName: fileName, + objectName: objectName + 'TT', + objectId: objectId + 'tt', + fileContent: tt, + createStatement: tt + }); + } + let ttu = tableToTTU(fileContent.trim().replace(/^ALTER /i, 'CREATE ')); + if (ttu) { + addQuery(queries, { + fileName: fileName, + objectName: objectName + 'TTU', + objectId: objectId + 'ttu', + fileContent: ttu, + createStatement: ttu + }); + } + }; + break; + case '.js': + case '.json': + addSP(queries, { fileName: fileName, - objectName: objectName + 'TTU', - objectId: objectId + 'ttu', - fileContent: ttu, - createStatement: ttu + objectName: objectName, + objectId: objectId, + config: schemaConfig.config }); - } - } + break; + default: + throw new Error('Unsupported file extension: ' + fileName); + }; }); let request = self.getRequest(); @@ -618,14 +653,14 @@ module.exports = function({utPort}) { } queries.forEach((query) => { innerPromise = innerPromise.then(() => { - return request - .batch(query.content) + let operation = query.callSP ? query.callSP() : request.batch(query.content); + return operation .then(() => updated.push(query.objectName)) .catch((err) => { err.message = err.message + ' (' + query.fileName + ':' + (err.lineNumber || 1) + ':1)'; let newError = sqlPortErrors['portSQL.updateSchema'](err); newError.fileName = query.fileName; - if (!this.config.retrySchemaUpdate) { + if (!retry) { throw newError; } else { failedQueries.push(query); @@ -641,7 +676,7 @@ module.exports = function({utPort}) { message: updated, $meta: { mtid: 'event', - opcode: 'updateSchema' + opcode: 'update.' + paths } }); return resolve(); @@ -663,6 +698,7 @@ module.exports = function({utPort}) { .then(() => (objectList)); }) .then(function(objectList) { + if (!load) return schema; return self.loadSchema(objectList); }); } @@ -1125,7 +1161,7 @@ module.exports = function({utPort}) { } loadSchema(objectList, hash) { let self = this; - let schema = this.getSchema(); + let schema = this.getPaths('schema'); let cacheFile = name => path.join(this.bus.config.workDir, 'ut-port-sql', name ? name + '.json' : ''); if (hash) { let cacheFileName = cacheFile(hash); @@ -1216,7 +1252,7 @@ module.exports = function({utPort}) { refreshView(drop, data) { this.checkConnection(); if (this.config.offline) return drop ? this.config.offline : data; - let schema = this.getSchema(); + let schema = this.getPaths('schema'); if ((Array.isArray(schema) && !schema.length) || !schema) { if (drop && this.config.cache) { return this.getRequest() @@ -1243,7 +1279,7 @@ module.exports = function({utPort}) { } this.checkConnection(); let self = this; - let schemas = this.getSchema(); + let schemas = this.getPaths('schema'); let parserSP = require('./parsers/mssqlSP'); return new Promise(function(resolve, reject) { let docList = []; From 6341a3969828c05b4e94fa8fdf0bb0a928918904 Mon Sep 17 00:00:00 2001 From: Jenkins CI Date: Wed, 27 Mar 2019 11:07:01 +0000 Subject: [PATCH 22/30] [ci-skip][ci skip] version incremented to 7.10.0 --- CHANGELOG.md | 9 +++++++++ package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee61397..edacae6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +# [7.10.0](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.9.2...v7.10.0) (2019-03-27) + + +### Features + +* allow seed data coming from .js or .json ([b15d772](https://github.com/softwaregroup-bg/ut-port-sql/commit/b15d772)) + + + ## [7.9.2](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.9.1...v7.9.2) (2019-03-22) diff --git a/package.json b/package.json index 2a40b5b..8f64595 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ut-port-sql", - "version": "7.9.2", + "version": "7.10.0", "main": "./index.js", "dependencies": { "dot-prop": "4.2.0", From 5a1ca7fbcc06335a95ec360840572afbbf6d67be Mon Sep 17 00:00:00 2001 From: Kalin Krustev Date: Wed, 27 Mar 2019 14:02:20 +0200 Subject: [PATCH 23/30] fix: support encryption in TVP --- index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index 77ab161..92ac640 100644 --- a/index.js +++ b/index.js @@ -812,7 +812,9 @@ module.exports = function({utPort}) { if (value === undefined) { return def; } else if (value) { - if (/^(date.*|smalldate.*)$/.test(column.type.declaration)) { + if (self.cbc && isEncrypted({name: column.name, def: {type: column.type.declaration, size: column.length}})) { + return self.cbc.encrypt(Buffer.from(value)); + } else if (/^(date.*|smalldate.*)$/.test(column.type.declaration)) { // set a javascript date for 'date', 'datetime', 'datetime2' 'smalldatetime' return new Date(value); } else if (column.type.declaration === 'time') { From ee606fb29c3877a449e48e70df9fc4f990f0ebe3 Mon Sep 17 00:00:00 2001 From: Jenkins CI Date: Wed, 27 Mar 2019 12:05:02 +0000 Subject: [PATCH 24/30] [ci-skip][ci skip] version incremented to 7.10.1 --- CHANGELOG.md | 9 +++++++++ package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index edacae6..94f587f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +## [7.10.1](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.10.0...v7.10.1) (2019-03-27) + + +### Bug Fixes + +* support encryption in TVP ([5a1ca7f](https://github.com/softwaregroup-bg/ut-port-sql/commit/5a1ca7f)) + + + # [7.10.0](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.9.2...v7.10.0) (2019-03-27) diff --git a/package.json b/package.json index 8f64595..9da4331 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ut-port-sql", - "version": "7.10.0", + "version": "7.10.1", "main": "./index.js", "dependencies": { "dot-prop": "4.2.0", From 41d20699fc30a89498292478e2f8f13747eec808 Mon Sep 17 00:00:00 2001 From: Kalin Krustev Date: Tue, 16 Apr 2019 15:36:42 +0300 Subject: [PATCH 25/30] feat: allow using '-' as prefix separator --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index 92ac640..a78e23c 100644 --- a/index.js +++ b/index.js @@ -503,7 +503,7 @@ module.exports = function({utPort}) { }; function getObjectName(fileName) { - return fileName.replace(/\.(sql|js|json)$/i, '').replace(/^[^$]*\$/, ''); // remove "prefix$" and ".sql" suffix + return fileName.replace(/\.(sql|js|json)$/i, '').replace(/^[^$-]*[$-]/, ''); // remove "prefix[$-]" and ".sql/.js/.json" suffix } function shouldCreateTT(tableName) { From f7e3e8e4c60f6c80a8be5ed77eed818612c6b5eb Mon Sep 17 00:00:00 2001 From: Kalin Krustev Date: Tue, 16 Apr 2019 15:41:03 +0300 Subject: [PATCH 26/30] fix: stringify objects when encrypting --- index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/index.js b/index.js index a78e23c..c7f5f15 100644 --- a/index.js +++ b/index.js @@ -813,6 +813,7 @@ module.exports = function({utPort}) { return def; } else if (value) { if (self.cbc && isEncrypted({name: column.name, def: {type: column.type.declaration, size: column.length}})) { + if (!Buffer.isBuffer(value) && typeof value === 'object') value = JSON.stringify(value); return self.cbc.encrypt(Buffer.from(value)); } else if (/^(date.*|smalldate.*)$/.test(column.type.declaration)) { // set a javascript date for 'date', 'datetime', 'datetime2' 'smalldatetime' From 6d84fb9fc62b75da321485a230a7a7df41923198 Mon Sep 17 00:00:00 2001 From: Jenkins CI Date: Tue, 16 Apr 2019 12:46:55 +0000 Subject: [PATCH 27/30] [ci-skip][ci skip] version incremented to 7.11.0 --- CHANGELOG.md | 14 ++++++++++++++ package.json | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 94f587f..c8f544d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +# [7.11.0](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.10.1...v7.11.0) (2019-04-16) + + +### Bug Fixes + +* stringify objects when encrypting ([f7e3e8e](https://github.com/softwaregroup-bg/ut-port-sql/commit/f7e3e8e)) + + +### Features + +* allow using '-' as prefix separator ([41d2069](https://github.com/softwaregroup-bg/ut-port-sql/commit/41d2069)) + + + ## [7.10.1](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.10.0...v7.10.1) (2019-03-27) diff --git a/package.json b/package.json index 9da4331..5c8cf1c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ut-port-sql", - "version": "7.10.1", + "version": "7.11.0", "main": "./index.js", "dependencies": { "dot-prop": "4.2.0", From 9800354083e760c8e16a9dab9bd13aafa4aac261 Mon Sep 17 00:00:00 2001 From: Kalin Krustev Date: Wed, 17 Apr 2019 11:58:07 +0300 Subject: [PATCH 28/30] feat: convert objects parameters to JSON --- index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.js b/index.js index c7f5f15..52eb32f 100644 --- a/index.js +++ b/index.js @@ -826,6 +826,8 @@ module.exports = function({utPort}) { return xmlBuilder.buildObject(obj); } else if (value.type === 'Buffer') { return Buffer.from(value.data); + } else if (typeof value === 'object') { + return JSON.stringify(value); } } return value; From 9199c744de86bb2726172a05d659afe5501cf673 Mon Sep 17 00:00:00 2001 From: Jenkins CI Date: Wed, 17 Apr 2019 09:06:30 +0000 Subject: [PATCH 29/30] [ci-skip][ci skip] version incremented to 7.12.0 --- CHANGELOG.md | 9 +++++++++ package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c8f544d..488d827 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +# [7.12.0](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.11.0...v7.12.0) (2019-04-17) + + +### Features + +* convert objects parameters to JSON ([9800354](https://github.com/softwaregroup-bg/ut-port-sql/commit/9800354)) + + + # [7.11.0](https://github.com/softwaregroup-bg/ut-port-sql/compare/v7.10.1...v7.11.0) (2019-04-16) diff --git a/package.json b/package.json index 5c8cf1c..931187b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ut-port-sql", - "version": "7.11.0", + "version": "7.12.0", "main": "./index.js", "dependencies": { "dot-prop": "4.2.0", From 836b0f39d44adaba5c027dc8eb3f3a3cecec7300 Mon Sep 17 00:00:00 2001 From: Petar Denev Date: Wed, 17 Apr 2019 12:14:10 +0300 Subject: [PATCH 30/30] internet banking audit changes --- index.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index 52eb32f..ef09e23 100644 --- a/index.js +++ b/index.js @@ -839,7 +839,17 @@ module.exports = function({utPort}) { let debug = this.isDebug(); let debugParams = {}; request.multiple = true; - $meta.globalId = uuid.v1(); + $meta.globalId = ($meta && $meta.requestHeaders && $meta.requestHeaders['x-requestuid']) || uuid.v1(); + $meta.requestDateTime = ($meta && + $meta.requestHeaders && + $meta.requestHeaders['x-requestuiddatetime'] && + $meta.requestHeaders['x-requestuiddatetime'] != null && + $meta.requestHeaders['x-requestuiddatetime']) || new Date().getTime(); + $meta.noAudit = ($meta && + $meta.requestHeaders && + $meta.requestHeaders['x-noaudit'] && + $meta.requestHeaders['x-noaudit'] != null && + $meta.requestHeaders['x-noaudit']) || 0; params && params.forEach(function(param) { let value; if (param.name === 'meta') {