项目作者: TinyPudding

项目描述 :
Script to connect to MySQL databases with Google Cloud Proxy support.
高级语言: JavaScript
项目地址: git://github.com/TinyPudding/MySQL-Connector.git
创建时间: 2021-01-23T15:42:35Z
项目社区:https://github.com/TinyPudding/MySQL-Connector

开源协议:MIT License

下载




Discord server
NPM version
NPM downloads
Patreon
Ko-Fi



npm installnfo


MySQL-Connector

Script to connect to MySQL databases with Google Cloud Proxy support.

Example

index.js (Server File)

This is the final result inside your server’s file.

  1. // Get Module
  2. const mysql = require('./connect');
  3. // Start the MySQL Connection
  4. mysql('server-database-name').then(async db => {
  5. // Print
  6. db.query('SELECT * FROM test')
  7. // Success
  8. .then(data => {
  9. // Print
  10. console.log(data);
  11. // Complete
  12. return;
  13. })
  14. // Fail
  15. .catch(err => {
  16. // Print
  17. console.error(err);
  18. // Complete
  19. return;
  20. });
  21. // Complete
  22. return;
  23. }).catch(err => {
  24. console.error(err);
  25. });
  26. // Start the MySQL Connection with multiple databases
  27. mysql(['server-database-name-1', 'server-database-name-2']).then(dbs => {
  28. // Get Database 1
  29. const db = dbs['server-database-name-1'];
  30. // Complete
  31. return;
  32. }).catch(err => {
  33. console.error(err);
  34. });

connect.js (Module)

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!

  1. module.exports = function (database = 'main', insertSSL = true) {
  2. return new Promise(async function (resolve, reject) {
  3. // Modules
  4. const mysql = require('@tinypudding/mysql-connector/create');
  5. const getMySQL = require('./get');
  6. // Single Database
  7. if (typeof database === "string") {
  8. // Get MySQL Connection
  9. // If you want to use only the normal connection. Change the "firebase" option to "default".
  10. mysql(require('mysql'), 'firebase', getMySQL(database, insertSSL)).then(resolve).catch(reject);
  11. }
  12. // Nope
  13. else {
  14. // Prepapre Module
  15. const sameUser = require('@tinypudding/mysql-connector/sameUser');
  16. // Prepare Keys
  17. let key;
  18. const keys = [];
  19. // Get Keys
  20. for (const item in database) {
  21. if (Number(item) > 0) {
  22. keys.push(sameUser(database[item], key));
  23. } else { key = getMySQL(database[item], insertSSL); keys.push(key); }
  24. }
  25. // start Connection
  26. mysql(require('mysql'), 'firebase', keys).then(resolve).catch(reject);
  27. }
  28. // Complete
  29. return;
  30. });
  31. };

get.js (Module)

This module will get the json from your database settings.

  1. module.exports = function (database = 'main', insertSSL = true) {
  2. // Get Key
  3. const key = require('clone')(require('./keys.json'));
  4. // Insert Database Value
  5. key.data.database = database;
  6. // Insert SSL
  7. if(insertSSL) {key.data.ssl = require('./getSSL')();}
  8. // Complete
  9. return key;
  10. };

getSSL.js (Module)

If you are using SSL. This file will help you to get your SSL data.

  1. module.exports = function (readType) {
  2. // Prepare FS
  3. const fs = require('fs');
  4. const path = require('path');
  5. // Prepare Items
  6. const result = {
  7. ca: fs.readFileSync(path.join(__dirname, '/server-ca.pem'), readType),
  8. cert: fs.readFileSync(path.join(__dirname, '/client-cert.pem'), readType),
  9. key: fs.readFileSync(path.join(__dirname, '/client-key.pem'), readType),
  10. rejectUnauthorized: true
  11. };
  12. // Send Result
  13. return result;
  14. };

keys.json (JSON)

This is the file that will contain all the default connection settings for your database.

  1. {
  2. "google_cloud": {
  3. "socketPath": "/cloudsql/{project-name}:{region}:{database-server-id}"
  4. },
  5. "default": {
  6. "host": "public-database-server-ip",
  7. "port": 3306
  8. },
  9. "data": {
  10. "database": "server-database-name",
  11. "user": "root",
  12. "password": "example123"
  13. }
  14. }