diff --git a/README.md b/README.md index af1f9c2..e6ec68c 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Any help is welcomed! Feel free to contribute. ## Requirements -* Node.js >= 12.0 +* Node.js >= 14.0 * Git * Docker (Local server) diff --git a/myvc-push.js b/myvc-push.js index 58aa20f..353aacf 100644 --- a/myvc-push.js +++ b/myvc-push.js @@ -37,9 +37,7 @@ class Push { throw new Error('Wrong database version'); if (opts.user) { - const [[user]] = conn.query( - `SELECT LEFT(USER(), INSTR(USER(), '@') - 1)` - ); + const user = await this.getDbUser(); let [[userVersion]] = await conn.query( `SELECT number, gitCommit FROM versionUser @@ -55,7 +53,9 @@ class Push { ); if (userVersion.number > version.number) - version = userVersion; + version.number = userVersion.number; + if (userVersion.gitCommit && userVersion.gitCommit !== version.gitCommit) + version.gitCommit = userVersion.gitCommit; } if (opts.remote == 'production') { @@ -204,15 +204,17 @@ class Push { await pushConn.end(); if (nRoutines > 0) { - const repo = await nodegit.Repository.open(this.opts.workspace); - const head = await repo.getHeadCommit(); - await conn.query('FLUSH PRIVILEGES'); - await this.updateVersion(nRoutines, 'gitCommit', head.sha()); console.log(` -> ${nRoutines} routines have changed.`); } else console.log(` -> No routines changed.`); + + const repo = await nodegit.Repository.open(this.opts.workspace); + const head = await repo.getHeadCommit(); + + if (version.gitCommit !== head.sha()) + await this.updateVersion(nRoutines, 'gitCommit', head.sha()); } parseChanges(changes) { @@ -223,6 +225,11 @@ class Push { return routines; } + async getDbUser() { + const [[row]] = await this.conn.query('SELECT USER() `user`'); + return row.user.substr(0, row.user.indexOf('@')); + } + async updateVersion(nChanges, column, value) { if (nChanges == 0) return; const {opts} = this; @@ -230,6 +237,7 @@ class Push { column = this.conn.escapeId(column, true); if (opts.user) { + const user = await this.getDbUser(); await this.conn.query( `INSERT INTO versionUser SET code = ?, diff --git a/package-lock.json b/package-lock.json index 77f7d9d..0d75e76 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "myvc", - "version": "1.1.1", + "version": "1.1.10", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -10,9 +10,9 @@ "integrity": "sha512-/aPsuoj/1Dw/kzhkgz+ES6TxG0zfTMGLwuK2ZG00k/iJzYHTLCE8mVU8EPqEOp/lmxPoq1C1C9RYToRKb2KEfg==" }, "@sqltools/formatter": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.2.tgz", - "integrity": "sha512-/5O7Fq6Vnv8L6ucmPjaWbVG1XkP4FO+w5glqfkIsq3Xw4oyNAdJddbnYodNDAfjVUvo/rrSCTom4kAND7T1o5Q==" + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.3.tgz", + "integrity": "sha512-O3uyB/JbkAEMZaP3YqyHH7TMnex7tWyCbCI4EfJdOCoN6HIhqdJBWTM6aCCiWQ/5f5wxjgU735QAIpJbjDvmzg==" }, "@szmarczak/http-timer": { "version": "4.0.5", @@ -616,9 +616,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "is-fullwidth-code-point": { "version": "1.0.0", @@ -734,9 +734,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "long": { "version": "4.0.0", @@ -971,9 +971,9 @@ } }, "normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" }, "npm-bundled": { "version": "1.1.1", @@ -1303,19 +1303,24 @@ } }, "tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" }, "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", diff --git a/package.json b/package.json index 847aa57..f225b26 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "myvc", - "version": "1.1.9", + "version": "1.1.10", "author": "Verdnatura Levante SL", "description": "MySQL Version Control", "license": "GPL-3.0", @@ -10,12 +10,12 @@ "url": "https://github.com/verdnatura/myvc.git" }, "dependencies": { - "@sqltools/formatter": "^1.2.2", + "@sqltools/formatter": "^1.2.3", "colors": "^1.4.0", "ejs": "^3.1.5", "fs-extra": "^8.1.0", "getopts": "^2.2.5", - "ini": "^1.3.5", + "ini": "^1.3.8", "mysql2": "^2.2.5", "nodegit": "^0.27.0", "require-yaml": "0.0.1" diff --git a/structure.sql b/structure.sql index d5bf51a..d148535 100644 --- a/structure.sql +++ b/structure.sql @@ -1,8 +1,8 @@ CREATE TABLE `version` ( `code` varchar(255) NOT NULL, - `number` char(11) NULL, - `gitCommit` varchar(255) NULL, + `number` char(11) NULL DEFAULT NULL, + `gitCommit` varchar(255) NULL DEFAULT NULL, `updated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB; @@ -12,8 +12,8 @@ ALTER TABLE `version` CREATE TABLE `versionUser` ( `code` varchar(255) NOT NULL, `user` varchar(255) NOT NULL, - `number` char(11) NULL, - `gitCommit` varchar(255) NULL, + `number` char(11) NULL DEFAULT NULL, + `gitCommit` varchar(255) NULL DEFAULT NULL, `updated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB;