diff --git a/bun.lockb b/bun.lockb index dc7f18a..5097926 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/dist/package-shared/functions/backend/dbHandler.d.ts b/dist/package-shared/functions/backend/dbHandler.d.ts index 6aee0b2..f4f62d5 100644 --- a/dist/package-shared/functions/backend/dbHandler.d.ts +++ b/dist/package-shared/functions/backend/dbHandler.d.ts @@ -1,4 +1,4 @@ -import { DSQL_TableSchemaType } from "../../types"; +import { DSQL_TableSchemaType, PostInsertReturn } from "../../types"; import { ConnectionConfig } from "mariadb"; type Param({ query, values, noErrorLogs, database, config, }: Param): Promise; +} = PostInsertReturn>({ query, values, noErrorLogs, database, config, }: Param): Promise; export {}; diff --git a/dist/package-shared/functions/backend/dbHandler.js b/dist/package-shared/functions/backend/dbHandler.js index bbabe39..a8301d8 100644 --- a/dist/package-shared/functions/backend/dbHandler.js +++ b/dist/package-shared/functions/backend/dbHandler.js @@ -27,16 +27,16 @@ function dbHandler(_a) { try { CONNECTION = yield (0, grab_dsql_connection_1.default)({ database, config }); if (query && values) { - const queryResults = yield CONNECTION.query(query, values); - results = queryResults[0]; + const queryResults = (yield CONNECTION.query(query, values)); + results = queryResults; } else { - const queryResults = yield CONNECTION.query(query); - results = queryResults[0]; + const queryResults = (yield CONNECTION.query(query)); + results = queryResults; } } catch (error) { - console.log("Connection Info =>", CONNECTION === null || CONNECTION === void 0 ? void 0 : CONNECTION.info); + console.log("Connection Info =>", CONNECTION === null || CONNECTION === void 0 ? void 0 : CONNECTION.getConfig()); if (error.message && typeof error.message == "string" && error.message.match(/Access denied for user.*password/i)) { diff --git a/dist/package-shared/functions/web-app/mariadb-user/handle-mariadb-user-creation.d.ts b/dist/package-shared/functions/web-app/mariadb-user/handle-mariadb-user-creation.d.ts index 4fd9e8f..19effbc 100644 --- a/dist/package-shared/functions/web-app/mariadb-user/handle-mariadb-user-creation.d.ts +++ b/dist/package-shared/functions/web-app/mariadb-user/handle-mariadb-user-creation.d.ts @@ -15,9 +15,5 @@ type CreateNewUserParams = { host?: string; password?: string; }; -export declare function createNewSQLUser({ host, password, username, }: CreateNewUserParams): Promise<{ - [k: string]: any; -} | { - [k: string]: any; -}[] | null>; +export declare function createNewSQLUser({ host, password, username, }: CreateNewUserParams): Promise; export {}; diff --git a/dist/package-shared/shell/checkDb.js b/dist/package-shared/shell/checkDb.js index 80105da..9458eee 100644 --- a/dist/package-shared/shell/checkDb.js +++ b/dist/package-shared/shell/checkDb.js @@ -28,7 +28,7 @@ const grab_dsql_connection_1 = __importDefault(require("../utils/grab-dsql-conne (() => __awaiter(void 0, void 0, void 0, function* () { const CONNECTION = yield (0, grab_dsql_connection_1.default)(); try { - const [result] = yield CONNECTION.query("SELECT id,first_name,last_name FROM users LIMIT 3"); + const result = yield CONNECTION.query("SELECT id,first_name,last_name FROM users LIMIT 3"); console.log("Connection Query Success =>", result); } catch (error) { diff --git a/dist/package-shared/shell/test-external-server.js b/dist/package-shared/shell/test-external-server.js index 51e6183..92f84e9 100644 --- a/dist/package-shared/shell/test-external-server.js +++ b/dist/package-shared/shell/test-external-server.js @@ -33,7 +33,7 @@ const grab_dsql_connection_1 = __importDefault(require("../utils/grab-dsql-conne * @description If a database is provided, switch to it */ try { - const [result] = yield CONNECTION.query("SHOW DATABASES"); + const result = yield CONNECTION.query("SHOW DATABASES"); const parsedResults = JSON.parse(JSON.stringify(result)); console.log("parsedResults =>", parsedResults); } diff --git a/dist/package-shared/shell/updateSSLUsers.js b/dist/package-shared/shell/updateSSLUsers.js index fde4ac0..d6d45c9 100644 --- a/dist/package-shared/shell/updateSSLUsers.js +++ b/dist/package-shared/shell/updateSSLUsers.js @@ -30,7 +30,7 @@ const grab_sql_key_name_1 = __importDefault(require("../utils/grab-sql-key-name" var _a; const CONNECTION = yield (0, grab_dsql_connection_1.default)(); try { - const [result] = yield CONNECTION.query("SELECT user,host,ssl_type FROM mysql.user"); + const result = (yield CONNECTION.query("SELECT user,host,ssl_type FROM mysql.user")); for (let i = 0; i < result.length; i++) { const user = result[i]; if (user.User !== process.env.DSQL_DB_READ_ONLY_USERNAME || @@ -42,7 +42,7 @@ const grab_sql_key_name_1 = __importDefault(require("../utils/grab-sql-key-name" if (ssl_type === "ANY") { continue; } - const [addUserSSL] = yield CONNECTION.query(`ALTER USER '${User}'@'${Host}'`); + const addUserSSL = yield CONNECTION.query(`ALTER USER '${User}'@'${Host}'`); console.log(`addUserSSL => ${User}@${Host}`, addUserSSL); } } diff --git a/dist/package-shared/utils/backend/grabDbSSL.d.ts b/dist/package-shared/utils/backend/grabDbSSL.d.ts index d507388..77ad19c 100644 --- a/dist/package-shared/utils/backend/grabDbSSL.d.ts +++ b/dist/package-shared/utils/backend/grabDbSSL.d.ts @@ -1,7 +1,4 @@ -import type { ConnectionConfig } from "mariadb"; -type Return = ConnectionConfig["ssl"] | undefined; /** * # Grab SSL */ -export default function grabDbSSL(): Return; -export {}; +export default function grabDbSSL(): any; diff --git a/dist/package-shared/utils/backend/grabDbSSL.js b/dist/package-shared/utils/backend/grabDbSSL.js index b6996f2..dcd40a5 100644 --- a/dist/package-shared/utils/backend/grabDbSSL.js +++ b/dist/package-shared/utils/backend/grabDbSSL.js @@ -7,6 +7,7 @@ exports.default = grabDbSSL; const fs_1 = __importDefault(require("fs")); const grab_dir_names_1 = __importDefault(require("./names/grab-dir-names")); const path_1 = __importDefault(require("path")); +// type Return = ConnectionConfig["ssl"] | undefined; /** * # Grab SSL */ diff --git a/dist/package-shared/utils/db/conn-db-handler.js b/dist/package-shared/utils/db/conn-db-handler.js index a533ca1..0f09dd6 100644 --- a/dist/package-shared/utils/db/conn-db-handler.js +++ b/dist/package-shared/utils/db/conn-db-handler.js @@ -42,7 +42,7 @@ values, debug) { throw new Error("Query String Required!"); let queryErrorArray = []; if (typeof query == "string") { - const [results] = yield finalConnection.query(trimQuery(query), values); + const results = (yield finalConnection.query(trimQuery(query), values)); if (debug) { (0, debug_log_1.default)({ log: results, @@ -61,7 +61,7 @@ values, debug) { currentQueryError.sql = queryObj.query; currentQueryError.sqlValues = queryObj.values; const queryObjRes = yield finalConnection.query(trimQuery(queryObj.query), queryObj.values); - const results = queryObjRes[0]; + const results = queryObjRes; if (debug) { (0, debug_log_1.default)({ log: results, diff --git a/dist/package-shared/utils/endConnection.d.ts b/dist/package-shared/utils/endConnection.d.ts deleted file mode 100644 index 422a24e..0000000 --- a/dist/package-shared/utils/endConnection.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import mysql from "mysql"; -/** - * # End MYSQL Connection - */ -declare function endConnection(connection: mysql.Connection): void; -export default endConnection; diff --git a/dist/package-shared/utils/endConnection.js b/dist/package-shared/utils/endConnection.js deleted file mode 100644 index 84aadd0..0000000 --- a/dist/package-shared/utils/endConnection.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * # End MYSQL Connection - */ -function endConnection(connection) { - if (connection.state !== "disconnected") { - connection.end((err) => { - console.log(err === null || err === void 0 ? void 0 : err.message); - }); - } -} -exports.default = endConnection; diff --git a/dist/package-shared/utils/grab-dsql-connection-config.d.ts b/dist/package-shared/utils/grab-dsql-connection-config.d.ts index 5341bd9..4a805c6 100644 --- a/dist/package-shared/utils/grab-dsql-connection-config.d.ts +++ b/dist/package-shared/utils/grab-dsql-connection-config.d.ts @@ -1,6 +1,6 @@ -import { ConnectionConfig } from "mariadb"; import { DsqlConnectionParam } from "../types"; +import serverlessMysql from "serverless-mysql"; /** * # Grab General CONNECTION for DSQL */ -export default function grabDSQLConnectionConfig(param?: DsqlConnectionParam): ConnectionConfig; +export default function grabDSQLConnectionConfig(param?: DsqlConnectionParam): serverlessMysql.Config; diff --git a/dist/package-shared/utils/grab-dsql-connection-config.js b/dist/package-shared/utils/grab-dsql-connection-config.js index 8d3677b..f445f5d 100644 --- a/dist/package-shared/utils/grab-dsql-connection-config.js +++ b/dist/package-shared/utils/grab-dsql-connection-config.js @@ -5,14 +5,35 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = grabDSQLConnectionConfig; const grabDbSSL_1 = __importDefault(require("./backend/grabDbSSL")); +const lodash_1 = __importDefault(require("lodash")); /** * # Grab General CONNECTION for DSQL */ function grabDSQLConnectionConfig(param) { const CONN_TIMEOUT = 10000; - const config = Object.assign({ host: process.env.DSQL_DB_HOST, user: process.env.DSQL_DB_USERNAME, password: process.env.DSQL_DB_PASSWORD, database: (param === null || param === void 0 ? void 0 : param.database) || - ((param === null || param === void 0 ? void 0 : param.noDb) ? undefined : process.env.DSQL_DB_NAME), port: process.env.DSQL_DB_PORT - ? Number(process.env.DSQL_DB_PORT) - : undefined, charset: "utf8mb4", ssl: (0, grabDbSSL_1.default)(), bigIntAsNumber: true, supportBigNumbers: true, bigNumberStrings: false, dateStrings: true, metaAsArray: true, socketTimeout: CONN_TIMEOUT, connectTimeout: CONN_TIMEOUT, compress: true }, param === null || param === void 0 ? void 0 : param.config); - return config; + const config = { + config: { + host: process.env.DSQL_DB_HOST, + user: process.env.DSQL_DB_USERNAME, + password: process.env.DSQL_DB_PASSWORD, + database: (param === null || param === void 0 ? void 0 : param.database) || + ((param === null || param === void 0 ? void 0 : param.noDb) ? undefined : process.env.DSQL_DB_NAME), + port: process.env.DSQL_DB_PORT + ? Number(process.env.DSQL_DB_PORT) + : undefined, + charset: "utf8mb4", + ssl: (0, grabDbSSL_1.default)(), + connectTimeout: CONN_TIMEOUT, + dateStrings: true, + compress: true, + decimalNumbers: true, + // supportBigNumbers: true, + // bigNumberStrings: false, + // bigIntAsNumber: true, + // metaAsArray: true, + // socketTimeout: CONN_TIMEOUT, + // ...param?.config, + }, + }; + return lodash_1.default.merge(config, param === null || param === void 0 ? void 0 : param.config); } diff --git a/dist/package-shared/utils/grab-dsql-connection.d.ts b/dist/package-shared/utils/grab-dsql-connection.d.ts index 990d4c7..ceb0a5f 100644 --- a/dist/package-shared/utils/grab-dsql-connection.d.ts +++ b/dist/package-shared/utils/grab-dsql-connection.d.ts @@ -1,6 +1,6 @@ -import { Connection } from "mariadb"; import { DsqlConnectionParam } from "../types"; +import { ServerlessMysql } from "serverless-mysql"; /** * # Grab General CONNECTION for DSQL */ -export default function grabDSQLConnection(param?: DsqlConnectionParam): Promise; +export default function grabDSQLConnection(param?: DsqlConnectionParam): Promise; diff --git a/dist/package-shared/utils/grab-dsql-connection.js b/dist/package-shared/utils/grab-dsql-connection.js index 4a2c9fc..b08fc39 100644 --- a/dist/package-shared/utils/grab-dsql-connection.js +++ b/dist/package-shared/utils/grab-dsql-connection.js @@ -13,8 +13,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = grabDSQLConnection; -const mariadb_1 = __importDefault(require("mariadb")); const grab_dsql_connection_config_1 = __importDefault(require("./grab-dsql-connection-config")); +const serverless_mysql_1 = __importDefault(require("serverless-mysql")); /** * # Grab General CONNECTION for DSQL */ @@ -22,7 +22,8 @@ function grabDSQLConnection(param) { return __awaiter(this, void 0, void 0, function* () { const config = (0, grab_dsql_connection_config_1.default)(param); try { - return yield mariadb_1.default.createConnection(config); + const sql = (0, serverless_mysql_1.default)(config); + return sql; } catch (error) { console.log(`Error Grabbing DSQL Connection =>`, config); diff --git a/package-shared/functions/backend/dbHandler.ts b/package-shared/functions/backend/dbHandler.ts index 7ef9860..628cf1e 100644 --- a/package-shared/functions/backend/dbHandler.ts +++ b/package-shared/functions/backend/dbHandler.ts @@ -1,8 +1,9 @@ import fs from "fs"; import path from "path"; import grabDSQLConnection from "../../utils/grab-dsql-connection"; -import { DSQL_TableSchemaType } from "../../types"; +import { DSQL_TableSchemaType, PostInsertReturn } from "../../types"; import { Connection, ConnectionConfig } from "mariadb"; +import { ServerlessMysql } from "serverless-mysql"; type Param = { query: string; @@ -18,7 +19,7 @@ type Param = { * @requires DSQL_DB_CONN - Gobal Variable for Datasquirel Database */ export default async function dbHandler< - T extends { [k: string]: any } = { [k: string]: any } + T extends { [k: string]: any } = PostInsertReturn >({ query, values, @@ -26,21 +27,23 @@ export default async function dbHandler< database, config, }: Param): Promise { - let CONNECTION: Connection | undefined; + let CONNECTION: ServerlessMysql | undefined; let results: T[] | T | null; try { CONNECTION = await grabDSQLConnection({ database, config }); if (query && values) { - const queryResults = await CONNECTION.query(query, values); - results = queryResults[0]; + const queryResults = (await CONNECTION.query(query, values)) as + | T + | T[]; + results = queryResults; } else { - const queryResults = await CONNECTION.query(query); - results = queryResults[0]; + const queryResults = (await CONNECTION.query(query)) as T | T[]; + results = queryResults; } } catch (error: any) { - console.log("Connection Info =>", CONNECTION?.info); + console.log("Connection Info =>", CONNECTION?.getConfig()); if ( error.message && diff --git a/package-shared/shell/checkDb.ts b/package-shared/shell/checkDb.ts index 76a84c8..33f33d1 100644 --- a/package-shared/shell/checkDb.ts +++ b/package-shared/shell/checkDb.ts @@ -16,7 +16,7 @@ import grabDSQLConnection from "../utils/grab-dsql-connection"; const CONNECTION = await grabDSQLConnection(); try { - const [result] = await CONNECTION.query( + const result = await CONNECTION.query( "SELECT id,first_name,last_name FROM users LIMIT 3" ); console.log("Connection Query Success =>", result); diff --git a/package-shared/shell/test-external-server.ts b/package-shared/shell/test-external-server.ts index 38ba677..f959c04 100644 --- a/package-shared/shell/test-external-server.ts +++ b/package-shared/shell/test-external-server.ts @@ -21,7 +21,7 @@ import grabDSQLConnection from "../utils/grab-dsql-connection"; * @description If a database is provided, switch to it */ try { - const [result] = await CONNECTION.query("SHOW DATABASES"); + const result = await CONNECTION.query("SHOW DATABASES"); const parsedResults = JSON.parse(JSON.stringify(result)); diff --git a/package-shared/shell/updateSSLUsers.ts b/package-shared/shell/updateSSLUsers.ts index bba2877..5087c7f 100644 --- a/package-shared/shell/updateSSLUsers.ts +++ b/package-shared/shell/updateSSLUsers.ts @@ -17,9 +17,9 @@ import grabSQLKeyName from "../utils/grab-sql-key-name"; const CONNECTION = await grabDSQLConnection(); try { - const [result] = await CONNECTION.query( + const result = (await CONNECTION.query( "SELECT user,host,ssl_type FROM mysql.user" - ); + )) as any[]; for (let i = 0; i < result.length; i++) { const user = result[i]; @@ -38,7 +38,7 @@ import grabSQLKeyName from "../utils/grab-sql-key-name"; continue; } - const [addUserSSL] = await CONNECTION.query( + const addUserSSL = await CONNECTION.query( `ALTER USER '${User}'@'${Host}'` ); diff --git a/package-shared/utils/backend/grabDbSSL.ts b/package-shared/utils/backend/grabDbSSL.ts index 74801de..254556d 100644 --- a/package-shared/utils/backend/grabDbSSL.ts +++ b/package-shared/utils/backend/grabDbSSL.ts @@ -2,13 +2,15 @@ import fs from "fs"; import grabDirNames from "./names/grab-dir-names"; import type { ConnectionConfig } from "mariadb"; import path from "path"; +import serverlessMysql from "serverless-mysql"; +import { ConnectionOptions } from "tls"; -type Return = ConnectionConfig["ssl"] | undefined; +// type Return = ConnectionConfig["ssl"] | undefined; /** * # Grab SSL */ -export default function grabDbSSL(): Return { +export default function grabDbSSL(): any { let maxscaleSSLCaCertFileFinal; try { diff --git a/package-shared/utils/db/conn-db-handler.ts b/package-shared/utils/db/conn-db-handler.ts index 44babfa..ea10b33 100644 --- a/package-shared/utils/db/conn-db-handler.ts +++ b/package-shared/utils/db/conn-db-handler.ts @@ -43,10 +43,10 @@ export default async function connDbHandler( let queryErrorArray: DSQLErrorObject[] = []; if (typeof query == "string") { - const [results] = await finalConnection.query( + const results = (await finalConnection.query( trimQuery(query), values - ); + )) as any; if (debug) { debugLog({ @@ -74,7 +74,7 @@ export default async function connDbHandler( queryObj.values ); - const results = queryObjRes[0]; + const results = queryObjRes; if (debug) { debugLog({ @@ -106,7 +106,7 @@ export default async function connDbHandler( }; } - return resArray; + return resArray as ReturnType; } else { return null; } diff --git a/package-shared/utils/endConnection.ts b/package-shared/utils/endConnection.ts deleted file mode 100644 index 62ad051..0000000 --- a/package-shared/utils/endConnection.ts +++ /dev/null @@ -1,14 +0,0 @@ -import mysql from "mysql"; - -/** - * # End MYSQL Connection - */ -function endConnection(connection: mysql.Connection) { - if (connection.state !== "disconnected") { - connection.end((err) => { - console.log(err?.message); - }); - } -} - -export default endConnection; diff --git a/package-shared/utils/grab-dsql-connection-config.ts b/package-shared/utils/grab-dsql-connection-config.ts index f58f5fa..4910b66 100644 --- a/package-shared/utils/grab-dsql-connection-config.ts +++ b/package-shared/utils/grab-dsql-connection-config.ts @@ -1,37 +1,43 @@ import { ConnectionConfig } from "mariadb"; import grabDbSSL from "./backend/grabDbSSL"; import { DsqlConnectionParam } from "../types"; +import serverlessMysql from "serverless-mysql"; +import { ConnectionOptions } from "tls"; +import _ from "lodash"; /** * # Grab General CONNECTION for DSQL */ export default function grabDSQLConnectionConfig( param?: DsqlConnectionParam -): ConnectionConfig { +): serverlessMysql.Config { const CONN_TIMEOUT = 10000; - const config: ConnectionConfig = { - host: process.env.DSQL_DB_HOST, - user: process.env.DSQL_DB_USERNAME, - password: process.env.DSQL_DB_PASSWORD, - database: - param?.database || - (param?.noDb ? undefined : process.env.DSQL_DB_NAME), - port: process.env.DSQL_DB_PORT - ? Number(process.env.DSQL_DB_PORT) - : undefined, - charset: "utf8mb4", - ssl: grabDbSSL(), - bigIntAsNumber: true, - supportBigNumbers: true, - bigNumberStrings: false, - dateStrings: true, - metaAsArray: true, - socketTimeout: CONN_TIMEOUT, - connectTimeout: CONN_TIMEOUT, - compress: true, - ...param?.config, + const config: serverlessMysql.Config = { + config: { + host: process.env.DSQL_DB_HOST, + user: process.env.DSQL_DB_USERNAME, + password: process.env.DSQL_DB_PASSWORD, + database: + param?.database || + (param?.noDb ? undefined : process.env.DSQL_DB_NAME), + port: process.env.DSQL_DB_PORT + ? Number(process.env.DSQL_DB_PORT) + : undefined, + charset: "utf8mb4", + ssl: grabDbSSL(), + connectTimeout: CONN_TIMEOUT, + dateStrings: true, + compress: true, + decimalNumbers: true, + // supportBigNumbers: true, + // bigNumberStrings: false, + // bigIntAsNumber: true, + // metaAsArray: true, + // socketTimeout: CONN_TIMEOUT, + // ...param?.config, + }, }; - return config; + return _.merge(config, param?.config); } diff --git a/package-shared/utils/grab-dsql-connection.ts b/package-shared/utils/grab-dsql-connection.ts index 7860998..50918bf 100644 --- a/package-shared/utils/grab-dsql-connection.ts +++ b/package-shared/utils/grab-dsql-connection.ts @@ -2,17 +2,19 @@ import mariadb, { Connection, ConnectionConfig } from "mariadb"; import grabDbSSL from "./backend/grabDbSSL"; import { DsqlConnectionParam } from "../types"; import grabDSQLConnectionConfig from "./grab-dsql-connection-config"; +import serverlessMysql, { ServerlessMysql } from "serverless-mysql"; /** * # Grab General CONNECTION for DSQL */ export default async function grabDSQLConnection( param?: DsqlConnectionParam -): Promise { +): Promise { const config = grabDSQLConnectionConfig(param); try { - return await mariadb.createConnection(config); + const sql = serverlessMysql(config); + return sql; } catch (error) { console.log(`Error Grabbing DSQL Connection =>`, config); throw error; diff --git a/package.json b/package.json index 2adf7d8..6811831 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@moduletrace/datasquirel", - "version": "5.1.5", + "version": "5.1.6", "description": "Cloud-based SQL data management tool", "main": "dist/index.js", "bin": { @@ -32,7 +32,6 @@ "dependencies": { "@types/ace": "^0.0.52", "@types/lodash": "^4.17.13", - "@types/mysql": "^2.15.21", "@types/next": "^9.0.0", "@types/node": "^22.7.5", "@types/nodemailer": "^6.4.17", @@ -46,6 +45,7 @@ "lodash": "^4.17.21", "mariadb": "^3.4.4", "nodemailer": "^6.9.14", - "sanitize-html": "^2.13.1" + "sanitize-html": "^2.13.1", + "serverless-mysql": "^2.1.0" } }