mirror of
				https://gitlab.com/comunic/comunicapiv2
				synced 2025-11-04 11:34:04 +00:00 
			
		
		
		
	Add connection to MySQL database
This commit is contained in:
		
							
								
								
									
										50
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										50
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -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",
 | 
			
		||||
 
 | 
			
		||||
@@ -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",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										41
									
								
								src/helpers/DatabaseHelper.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								src/helpers/DatabaseHelper.ts
									
									
									
									
									
										Normal file
									
								
							@@ -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();
 | 
			
		||||
			});
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -1,4 +1,5 @@
 | 
			
		||||
import { ConfigurationHelper, conf } from "./helpers/ConfigHelper";
 | 
			
		||||
import { ConfigurationHelper } from "./helpers/ConfigHelper";
 | 
			
		||||
import { DatabaseHelper } from "./helpers/DatabaseHelper";
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Main project script
 | 
			
		||||
@@ -10,3 +11,6 @@ console.info("Comunic API v6\t@author Pierre HUBERT\t2019-" + new Date().getFull
 | 
			
		||||
 | 
			
		||||
console.info("Load configuration...");
 | 
			
		||||
ConfigurationHelper.loadConf("config.json");
 | 
			
		||||
 | 
			
		||||
console.info("Connect to database");
 | 
			
		||||
DatabaseHelper.connect();
 | 
			
		||||
		Reference in New Issue
	
	Block a user