From 15b7b9ac1ef9b908e3854e4a2ddd60e9c76469c4 Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Thu, 21 Nov 2019 17:35:56 +0100 Subject: [PATCH] Add connection to MySQL database --- package-lock.json | 50 +++++++++++++++++++++++++---------- package.json | 2 ++ src/helpers/DatabaseHelper.ts | 41 ++++++++++++++++++++++++++++ src/main.ts | 8 ++++-- 4 files changed, 85 insertions(+), 16 deletions(-) create mode 100644 src/helpers/DatabaseHelper.ts diff --git a/package-lock.json b/package-lock.json index 91de70f..ad9fe6b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,15 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@types/mysql": { + "version": "2.15.8", + "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.8.tgz", + "integrity": "sha512-l0TUdg6KDEaLO75/yjdjksobJDRWv8iZlpRfv/WW1lQZCQDKdTDnKCkeH10oapzP/JTuKiTy6Cvq/sm/0GgcUw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/node": { "version": "12.12.8", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.8.tgz", @@ -438,6 +447,11 @@ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true }, + "bignumber.js": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz", + "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==" + }, "binary-extensions": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", @@ -886,8 +900,7 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "create-ecdh": { "version": "4.0.3", @@ -2223,8 +2236,7 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.5", @@ -2435,8 +2447,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isexe": { "version": "2.0.0", @@ -2714,6 +2725,17 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "mysql": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.17.1.tgz", + "integrity": "sha512-7vMqHQ673SAk5C8fOzTG2LpPcf3bNt0oL3sFpxPEEFp1mdlDcrLK0On7z8ZYKaaHrHwNcQ/MTUz7/oobZ2OyyA==", + "requires": { + "bignumber.js": "7.2.1", + "readable-stream": "2.3.6", + "safe-buffer": "5.1.2", + "sqlstring": "2.3.1" + } + }, "nan": { "version": "2.14.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", @@ -3183,8 +3205,7 @@ "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "promise-inflight": { "version": "1.0.1", @@ -3310,7 +3331,6 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -3422,8 +3442,7 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safe-regex": { "version": "1.1.0", @@ -3691,6 +3710,11 @@ "extend-shallow": "^3.0.0" } }, + "sqlstring": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", + "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=" + }, "ssri": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", @@ -3774,7 +3798,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -4223,8 +4246,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "vm-browserify": { "version": "1.1.2", diff --git a/package.json b/package.json index 85b03a9..6657802 100644 --- a/package.json +++ b/package.json @@ -9,9 +9,11 @@ "author": "", "license": "MIT", "dependencies": { + "mysql": "^2.17.1", "typescript": "^3.7.2" }, "devDependencies": { + "@types/mysql": "^2.15.8", "@types/node": "^12.12.8", "nodemon": "^2.0.0", "ts-loader": "^6.0.3", diff --git a/src/helpers/DatabaseHelper.ts b/src/helpers/DatabaseHelper.ts new file mode 100644 index 0000000..2f02282 --- /dev/null +++ b/src/helpers/DatabaseHelper.ts @@ -0,0 +1,41 @@ +import { createConnection, Connection } from "mysql"; +import { conf } from "./ConfigHelper"; + +/** + * Database helper + * + * @author Pierre HUBERT + */ + +export class DatabaseHelper { + + private static connection : Connection; + + /** + * Connect to database + */ + static async connect() { + this.connection = createConnection({ + host: conf().database.host, + user: conf().database.user, + password: conf().database.password, + database: conf().database.dbName + }); + + await new Promise((resolve, reject) => { + this.connection.connect(err => { + + if(err) { + console.error("Could not connect to database !"); + console.error(err); + reject(err); + return; + } + + console.info("Connected to database."); + resolve(); + }); + }) + } + +} \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index 56565ac..20a61e4 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,4 +1,5 @@ -import { ConfigurationHelper, conf } from "./helpers/ConfigHelper"; +import { ConfigurationHelper } from "./helpers/ConfigHelper"; +import { DatabaseHelper } from "./helpers/DatabaseHelper"; /** * Main project script @@ -9,4 +10,7 @@ import { ConfigurationHelper, conf } from "./helpers/ConfigHelper"; console.info("Comunic API v6\t@author Pierre HUBERT\t2019-" + new Date().getFullYear()); console.info("Load configuration..."); -ConfigurationHelper.loadConf("config.json"); \ No newline at end of file +ConfigurationHelper.loadConf("config.json"); + +console.info("Connect to database"); +DatabaseHelper.connect(); \ No newline at end of file