Script to connect to MySQL databases with Google Cloud Proxy support.
This is the final result inside your server's file.
// Get Module
const mysql = require('./connect');
// Start the MySQL Connection
mysql('server-database-name').then(async db => {
// Print
db.query('SELECT * FROM test')
// Success
.then(data => {
// Print
console.log(data);
// Complete
return;
})
// Fail
.catch(err => {
// Print
console.error(err);
// Complete
return;
});
// Complete
return;
}).catch(err => {
console.error(err);
});
// Start the MySQL Connection with multiple databases
mysql(['server-database-name-1', 'server-database-name-2']).then(dbs => {
// Get Database 1
const db = dbs['server-database-name-1'];
// Complete
return;
}).catch(err => {
console.error(err);
});
You will use this module to create a totally easy to use method to create a connection to your database. You just need to insert your database name into the method. Totally simple and easy!
module.exports = function (database = 'main', insertSSL = true) {
return new Promise(async function (resolve, reject) {
// Modules
const mysql = require('@tinypudding/mysql-connector/create');
const getMySQL = require('./get');
// Single Database
if (typeof database === "string") {
// Get MySQL Connection
// If you want to use only the normal connection. Change the "firebase" option to "default".
mysql(require('mysql'), 'firebase', getMySQL(database, insertSSL)).then(resolve).catch(reject);
}
// Nope
else {
// Prepapre Module
const sameUser = require('@tinypudding/mysql-connector/sameUser');
// Prepare Keys
let key;
const keys = [];
// Get Keys
for (const item in database) {
if (Number(item) > 0) {
keys.push(sameUser(database[item], key));
} else { key = getMySQL(database[item], insertSSL); keys.push(key); }
}
// start Connection
mysql(require('mysql'), 'firebase', keys).then(resolve).catch(reject);
}
// Complete
return;
});
};
This module will get the json from your database settings.
module.exports = function (database = 'main', insertSSL = true) {
// Get Key
const key = require('clone')(require('./keys.json'));
// Insert Database Value
key.data.database = database;
// Insert SSL
if(insertSSL) {key.data.ssl = require('./getSSL')();}
// Complete
return key;
};
If you are using SSL. This file will help you to get your SSL data.
module.exports = function (readType) {
// Prepare FS
const fs = require('fs');
const path = require('path');
// Prepare Items
const result = {
ca: fs.readFileSync(path.join(__dirname, '/server-ca.pem'), readType),
cert: fs.readFileSync(path.join(__dirname, '/client-cert.pem'), readType),
key: fs.readFileSync(path.join(__dirname, '/client-key.pem'), readType),
rejectUnauthorized: true
};
// Send Result
return result;
};
This is the file that will contain all the default connection settings for your database.
{
"google_cloud": {
"socketPath": "/cloudsql/{project-name}:{region}:{database-server-id}"
},
"default": {
"host": "public-database-server-ip",
"port": 3306
},
"data": {
"database": "server-database-name",
"user": "root",
"password": "example123"
}
}