This commit is contained in:
Benjamin Toby 2025-08-06 06:37:43 +01:00
parent 689f885d9d
commit a1e56bb1b0
27 changed files with 163 additions and 96 deletions

View File

@ -1,5 +1,6 @@
import { DbContextsArray } from "./runQuery"; import { DbContextsArray } from "./runQuery";
import { APIResponseObject, DSQL_TableSchemaType, PostInsertReturn } from "../../../types"; import { APIResponseObject, DSQL_TableSchemaType, PostInsertReturn } from "../../../types";
import { ConnectionConfig } from "mariadb";
export type AddDbEntryParam<T extends { export type AddDbEntryParam<T extends {
[k: string]: any; [k: string]: any;
} = any, K extends string = string> = { } = any, K extends string = string> = {
@ -21,10 +22,11 @@ export type AddDbEntryParam<T extends {
encryptionSalt?: string; encryptionSalt?: string;
forceLocal?: boolean; forceLocal?: boolean;
debug?: boolean; debug?: boolean;
dbConfig?: ConnectionConfig;
}; };
/** /**
* Add a db Entry Function * Add a db Entry Function
*/ */
export default function addDbEntry<T extends { export default function addDbEntry<T extends {
[k: string]: any; [k: string]: any;
} = any, K extends string = string>({ dbContext, paradigm, dbFullName, tableName, data, batchData, tableSchema, duplicateColumnName, duplicateColumnValue, update, encryptionKey, encryptionSalt, forceLocal, debug, }: AddDbEntryParam<T, K>): Promise<APIResponseObject<PostInsertReturn>>; } = any, K extends string = string>({ dbContext, paradigm, dbFullName, tableName, data, batchData, tableSchema, duplicateColumnName, duplicateColumnValue, update, encryptionKey, encryptionSalt, forceLocal, debug, dbConfig, }: AddDbEntryParam<T, K>): Promise<APIResponseObject<PostInsertReturn>>;

View File

@ -24,7 +24,7 @@ const grab_parsed_value_1 = __importDefault(require("./grab-parsed-value"));
* Add a db Entry Function * Add a db Entry Function
*/ */
function addDbEntry(_a) { function addDbEntry(_a) {
return __awaiter(this, arguments, void 0, function* ({ dbContext, paradigm, dbFullName, tableName, data, batchData, tableSchema, duplicateColumnName, duplicateColumnValue, update, encryptionKey, encryptionSalt, forceLocal, debug, }) { return __awaiter(this, arguments, void 0, function* ({ dbContext, paradigm, dbFullName, tableName, data, batchData, tableSchema, duplicateColumnName, duplicateColumnValue, update, encryptionKey, encryptionSalt, forceLocal, debug, dbConfig, }) {
const isMaster = forceLocal const isMaster = forceLocal
? true ? true
: (0, check_if_is_master_1.default)({ dbContext, dbFullName }); : (0, check_if_is_master_1.default)({ dbContext, dbFullName });
@ -47,9 +47,10 @@ function addDbEntry(_a) {
typeof duplicateColumnName === "string" && typeof duplicateColumnName === "string" &&
newData) { newData) {
const checkDuplicateQuery = `SELECT * FROM ${isMaster ? "" : `\`${dbFullName}\`.`}\`${tableName}\` WHERE \`${duplicateColumnName}\`=?`; const checkDuplicateQuery = `SELECT * FROM ${isMaster ? "" : `\`${dbFullName}\`.`}\`${tableName}\` WHERE \`${duplicateColumnName}\`=?`;
const duplicateValue = yield (0, conn_db_handler_1.default)(null, checkDuplicateQuery, [ const duplicateValue = yield (0, conn_db_handler_1.default)({
duplicateColumnValue, query: checkDuplicateQuery,
]); values: [duplicateColumnValue],
});
if ((duplicateValue === null || duplicateValue === void 0 ? void 0 : duplicateValue[0]) && !update) { if ((duplicateValue === null || duplicateValue === void 0 ? void 0 : duplicateValue[0]) && !update) {
return { return {
success: false, success: false,
@ -68,6 +69,9 @@ function addDbEntry(_a) {
encryptionSalt, encryptionSalt,
identifierColumnName: duplicateColumnName, identifierColumnName: duplicateColumnName,
identifierValue: duplicateColumnValue || "", identifierValue: duplicateColumnValue || "",
dbConfig,
debug,
forceLocal,
}); });
} }
} }
@ -138,7 +142,12 @@ function addDbEntry(_a) {
const { insertKeysArray, insertValuesArray, queryValuesArray } = generateQuery(newData); const { insertKeysArray, insertValuesArray, queryValuesArray } = generateQuery(newData);
const query = `INSERT INTO ${isMaster && !dbFullName ? "" : `\`${dbFullName}\`.`}\`${tableName}\` (${insertKeysArray.join(",")}) VALUES (${grabQueryValuesString(insertValuesArray)})`; const query = `INSERT INTO ${isMaster && !dbFullName ? "" : `\`${dbFullName}\`.`}\`${tableName}\` (${insertKeysArray.join(",")}) VALUES (${grabQueryValuesString(insertValuesArray)})`;
const finalQueryValues = grabFinalQueryValuesArr(queryValuesArray); const finalQueryValues = grabFinalQueryValuesArr(queryValuesArray);
const newInsert = yield (0, conn_db_handler_1.default)(null, query, finalQueryValues, debug); const newInsert = yield (0, conn_db_handler_1.default)({
query,
values: finalQueryValues,
debug,
dsqlConnOpts: { config: dbConfig },
});
return { return {
success: Boolean(newInsert === null || newInsert === void 0 ? void 0 : newInsert.insertId), success: Boolean(newInsert === null || newInsert === void 0 ? void 0 : newInsert.insertId),
payload: newInsert, payload: newInsert,
@ -165,7 +174,12 @@ function addDbEntry(_a) {
.map((vl) => `(${grabQueryValuesString(vl)})`) .map((vl) => `(${grabQueryValuesString(vl)})`)
.join(",")}`; .join(",")}`;
const finalQueryValues = grabFinalQueryValuesArr(batchQueryValuesArray.flat()); const finalQueryValues = grabFinalQueryValuesArr(batchQueryValuesArray.flat());
const newInsert = yield (0, conn_db_handler_1.default)(null, query, finalQueryValues, debug); const newInsert = yield (0, conn_db_handler_1.default)({
query,
values: finalQueryValues,
debug,
dsqlConnOpts: { config: dbConfig },
});
if (debug) { if (debug) {
(0, debug_log_1.default)({ (0, debug_log_1.default)({
log: newInsert, log: newInsert,

View File

@ -31,9 +31,10 @@ function deleteDbEntry(_a) {
* @description * @description
*/ */
const query = `DELETE FROM ${isMaster && !dbFullName ? "" : `\`${dbFullName}\`.`}\`${tableName}\` WHERE \`${identifierColumnName.toString()}\`=?`; const query = `DELETE FROM ${isMaster && !dbFullName ? "" : `\`${dbFullName}\`.`}\`${tableName}\` WHERE \`${identifierColumnName.toString()}\`=?`;
const deletedEntry = yield (0, conn_db_handler_1.default)(null, query, [ const deletedEntry = yield (0, conn_db_handler_1.default)({
identifierValue, query,
]); values: [identifierValue],
});
/** /**
* Return statement * Return statement
*/ */

View File

@ -1,5 +1,6 @@
import { DbContextsArray } from "./runQuery"; import { DbContextsArray } from "./runQuery";
import { APIResponseObject, DSQL_TableSchemaType, PostInsertReturn } from "../../../types"; import { APIResponseObject, DSQL_TableSchemaType, PostInsertReturn } from "../../../types";
import { ConnectionConfig } from "mariadb";
type Param<T extends { type Param<T extends {
[k: string]: any; [k: string]: any;
} = any> = { } = any> = {
@ -14,6 +15,7 @@ type Param<T extends {
identifierValue: string | number; identifierValue: string | number;
forceLocal?: boolean; forceLocal?: boolean;
debug?: boolean; debug?: boolean;
dbConfig?: ConnectionConfig;
}; };
/** /**
* # Update DB Function * # Update DB Function
@ -21,5 +23,5 @@ type Param<T extends {
*/ */
export default function updateDbEntry<T extends { export default function updateDbEntry<T extends {
[k: string]: any; [k: string]: any;
} = any>({ dbContext, dbFullName, tableName, data, tableSchema, identifierColumnName, identifierValue, encryptionKey, encryptionSalt, forceLocal, debug, }: Param<T>): Promise<APIResponseObject<PostInsertReturn>>; } = any>({ dbContext, dbFullName, tableName, data, tableSchema, identifierColumnName, identifierValue, encryptionKey, encryptionSalt, forceLocal, debug, dbConfig, }: Param<T>): Promise<APIResponseObject<PostInsertReturn>>;
export {}; export {};

View File

@ -23,7 +23,7 @@ const grab_parsed_value_1 = __importDefault(require("./grab-parsed-value"));
* @description * @description
*/ */
function updateDbEntry(_a) { function updateDbEntry(_a) {
return __awaiter(this, arguments, void 0, function* ({ dbContext, dbFullName, tableName, data, tableSchema, identifierColumnName, identifierValue, encryptionKey, encryptionSalt, forceLocal, debug, }) { return __awaiter(this, arguments, void 0, function* ({ dbContext, dbFullName, tableName, data, tableSchema, identifierColumnName, identifierValue, encryptionKey, encryptionSalt, forceLocal, debug, dbConfig, }) {
var _b, _c; var _b, _c;
/** /**
* Check if data is valid * Check if data is valid
@ -97,7 +97,11 @@ function updateDbEntry(_a) {
//////////////////////////////////////// ////////////////////////////////////////
const query = `UPDATE ${isMaster && !dbFullName ? "" : `\`${dbFullName}\`.`}\`${tableName}\` SET ${updateKeyValueArray.join(",")} WHERE \`${identifierColumnName}\`=?`; const query = `UPDATE ${isMaster && !dbFullName ? "" : `\`${dbFullName}\`.`}\`${tableName}\` SET ${updateKeyValueArray.join(",")} WHERE \`${identifierColumnName}\`=?`;
updateValues.push(identifierValue); updateValues.push(identifierValue);
const updatedEntry = yield (0, conn_db_handler_1.default)(null, query, updateValues); const updatedEntry = yield (0, conn_db_handler_1.default)({
query,
values: updateValues,
dsqlConnOpts: { config: dbConfig },
});
/** /**
* Return statement * Return statement
*/ */

View File

@ -33,7 +33,10 @@ function fullAccessDbHandler(_a) {
* @description Fetch data from db if no cache * @description Fetch data from db if no cache
*/ */
try { try {
results = yield (0, conn_db_handler_1.default)(null, queryString, queryValuesArray); results = yield (0, conn_db_handler_1.default)({
query: queryString,
values: queryValuesArray,
});
//////////////////////////////////////// ////////////////////////////////////////
} }
catch (error) { catch (error) {

View File

@ -42,7 +42,7 @@ function suDbHandler(_a) {
// bigNumberStrings: false, // bigNumberStrings: false,
// dateStrings: true, // dateStrings: true,
// }); // });
const results = yield (0, conn_db_handler_1.default)(connection, query); const results = yield (0, conn_db_handler_1.default)({ conn: connection, query });
return results; return results;
}); });
} }

View File

@ -34,7 +34,7 @@ function userDbHandler(_a) {
bigIntAsNumber: true, bigIntAsNumber: true,
metaAsArray: true, metaAsArray: true,
}); });
const results = yield (0, conn_db_handler_1.default)(connection, query); const results = yield (0, conn_db_handler_1.default)({ conn: connection, query });
if (Array.isArray(results)) { if (Array.isArray(results)) {
const parsedDbResults = results.map((res) => parseResultObject(res)); const parsedDbResults = results.map((res) => parseResultObject(res));
return parsedDbResults; return parsedDbResults;

View File

@ -1267,6 +1267,7 @@ export type DsqlCrudParam<T extends {
dbFullName?: string; dbFullName?: string;
dbName?: string; dbName?: string;
tableSchema?: DSQL_TableSchemaType; tableSchema?: DSQL_TableSchemaType;
dbConfig?: ConnectionConfig;
}; };
export type ErrorCallback = (title: string, error: Error, data?: any) => void; export type ErrorCallback = (title: string, error: Error, data?: any) => void;
export interface MariaDBUser { export interface MariaDBUser {

View File

@ -26,7 +26,9 @@ function importMariadbDatabase(_a) {
const finalMariadbUser = mariadbUser || process.env.DSQL_DB_USERNAME; const finalMariadbUser = mariadbUser || process.env.DSQL_DB_USERNAME;
const finalMariadbHost = mariadbHost || process.env.DSQL_DB_HOST; const finalMariadbHost = mariadbHost || process.env.DSQL_DB_HOST;
const finalMariadbPass = mariadbPass || process.env.DSQL_DB_PASSWORD; const finalMariadbPass = mariadbPass || process.env.DSQL_DB_PASSWORD;
yield (0, conn_db_handler_1.default)(null, `CREATE DATABASE IF NOT EXISTS ${dbFullName}`); yield (0, conn_db_handler_1.default)({
query: `CREATE DATABASE IF NOT EXISTS ${dbFullName}`,
});
const cmd = `${mysqlPath} -u ${finalMariadbUser} -h ${finalMariadbHost} -p"${finalMariadbPass}" ${dbFullName} < ${targetFilePath}`; const cmd = `${mysqlPath} -u ${finalMariadbUser} -h ${finalMariadbHost} -p"${finalMariadbPass}" ${dbFullName} < ${targetFilePath}`;
let execSyncOptions = { let execSyncOptions = {
encoding: "utf-8", encoding: "utf-8",

View File

@ -3,4 +3,4 @@ export default function <T extends {
[key: string]: any; [key: string]: any;
} = { } = {
[key: string]: any; [key: string]: any;
}>({ table, query, count, countOnly, dbFullName, tableSchema, }: Omit<DsqlCrudParam<T>, "action" | "data" | "sanitize">): Promise<APIResponseObject>; }>({ table, query, count, countOnly, dbFullName, tableSchema, dbConfig, }: Omit<DsqlCrudParam<T>, "action" | "data" | "sanitize">): Promise<APIResponseObject>;

View File

@ -18,7 +18,7 @@ const conn_db_handler_1 = __importDefault(require("../db/conn-db-handler"));
const check_array_depth_1 = __importDefault(require("../check-array-depth")); const check_array_depth_1 = __importDefault(require("../check-array-depth"));
const parseDbResults_1 = __importDefault(require("../../functions/backend/parseDbResults")); const parseDbResults_1 = __importDefault(require("../../functions/backend/parseDbResults"));
function default_1(_a) { function default_1(_a) {
return __awaiter(this, arguments, void 0, function* ({ table, query, count, countOnly, dbFullName, tableSchema, }) { return __awaiter(this, arguments, void 0, function* ({ table, query, count, countOnly, dbFullName, tableSchema, dbConfig, }) {
var _b, _c, _d, _e; var _b, _c, _d, _e;
let queryObject; let queryObject;
queryObject = (0, sql_generator_1.default)({ queryObject = (0, sql_generator_1.default)({
@ -54,7 +54,10 @@ function default_1(_a) {
}, },
]; ];
} }
const res = yield (0, conn_db_handler_1.default)(undefined, connQueries); const res = yield (0, conn_db_handler_1.default)({
query: connQueries,
dsqlConnOpts: { config: dbConfig },
});
const parsedRes = (0, check_array_depth_1.default)(res, 2) const parsedRes = (0, check_array_depth_1.default)(res, 2)
? (0, parseDbResults_1.default)({ unparsedResults: res[0], tableSchema }) ? (0, parseDbResults_1.default)({ unparsedResults: res[0], tableSchema })
: res[0]; : res[0];

View File

@ -20,7 +20,7 @@ const addDbEntry_1 = __importDefault(require("../../functions/backend/db/addDbEn
const updateDbEntry_1 = __importDefault(require("../../functions/backend/db/updateDbEntry")); const updateDbEntry_1 = __importDefault(require("../../functions/backend/db/updateDbEntry"));
function dsqlCrud(params) { function dsqlCrud(params) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
const { action, data, table, targetValue, sanitize, targetField, targetId, dbFullName, deleteData, batchData, deleteKeyValues, debug, tableSchema, deleteKeyValuesOperator, } = params; const { action, data, table, targetValue, sanitize, targetField, targetId, dbFullName, deleteData, batchData, deleteKeyValues, debug, tableSchema, deleteKeyValuesOperator, dbConfig, } = params;
const finalData = (sanitize ? sanitize({ data }) : data); const finalData = (sanitize ? sanitize({ data }) : data);
const finalBatchData = (sanitize ? sanitize({ batchData }) : batchData); const finalBatchData = (sanitize ? sanitize({ batchData }) : batchData);
switch (action) { switch (action) {
@ -36,6 +36,7 @@ function dsqlCrud(params) {
dbFullName, dbFullName,
debug, debug,
tableSchema, tableSchema,
dbConfig,
}); });
return INSERT_RESULT; return INSERT_RESULT;
case "update": case "update":
@ -48,6 +49,7 @@ function dsqlCrud(params) {
identifierValue: String(targetValue || targetId), identifierValue: String(targetValue || targetId),
debug, debug,
tableSchema, tableSchema,
dbConfig,
}); });
return UPDATE_RESULT; return UPDATE_RESULT;
case "delete": case "delete":
@ -62,7 +64,11 @@ function dsqlCrud(params) {
deleteKeyValues, deleteKeyValues,
deleteKeyValuesOperator, deleteKeyValuesOperator,
}); });
const res = (yield (0, conn_db_handler_1.default)(undefined, deleteQuery === null || deleteQuery === void 0 ? void 0 : deleteQuery.query, deleteQuery === null || deleteQuery === void 0 ? void 0 : deleteQuery.values)); const res = (yield (0, conn_db_handler_1.default)({
query: deleteQuery === null || deleteQuery === void 0 ? void 0 : deleteQuery.query,
values: deleteQuery === null || deleteQuery === void 0 ? void 0 : deleteQuery.values,
dsqlConnOpts: { config: dbConfig },
}));
return { return {
success: Boolean(res.affectedRows), success: Boolean(res.affectedRows),
payload: res, payload: res,

View File

@ -1,4 +1,4 @@
import { DSQLErrorObject } from "../../types"; import { DsqlConnectionParam, DSQLErrorObject } from "../../types";
import mariadb, { ConnectionConfig } from "mariadb"; import mariadb, { ConnectionConfig } from "mariadb";
export type ConnDBHandlerQueryObject = { export type ConnDBHandlerQueryObject = {
query: string; query: string;
@ -9,22 +9,26 @@ type Return<ReturnType = any> = ReturnType | ReturnType[] | null | {
errors?: DSQLErrorObject[]; errors?: DSQLErrorObject[];
config?: ConnectionConfig; config?: ConnectionConfig;
}; };
export type ConnectionDbHandlerParams = {
/**
* MariaDB Connection
*/
conn?: mariadb.Connection | null;
/**
* String Or `ConnDBHandlerQueryObject` Array
*/
query?: ConnDBHandlerQueryObject["query"] | ConnDBHandlerQueryObject[];
/**
* Array of Values to Sanitize and Inject
*/
values?: ConnDBHandlerQueryObject["values"];
debug?: boolean;
dsqlConnOpts?: DsqlConnectionParam;
};
/** /**
* # Run Query From MySQL Connection * # Run Query From MySQL Connection
* @description Run a query from a pre-existing MySQL/Mariadb Connection * @description Run a query from a pre-existing MySQL/Mariadb Connection
* setup with `serverless-mysql` npm module * setup with `serverless-mysql` npm module
*/ */
export default function connDbHandler<ReturnType = any>( export default function connDbHandler<ReturnType = any>({ conn, debug, query, values, dsqlConnOpts, }: ConnectionDbHandlerParams): Promise<Return<ReturnType>>;
/**
* MariaDB Connection
*/
conn?: mariadb.Connection | null,
/**
* String Or `ConnDBHandlerQueryObject` Array
*/
query?: ConnDBHandlerQueryObject["query"] | ConnDBHandlerQueryObject[],
/**
* Array of Values to Sanitize and Inject
*/
values?: ConnDBHandlerQueryObject["values"], debug?: boolean): Promise<Return<ReturnType>>;
export {}; export {};

View File

@ -20,21 +20,9 @@ const grab_dsql_connection_1 = __importDefault(require("../grab-dsql-connection"
* @description Run a query from a pre-existing MySQL/Mariadb Connection * @description Run a query from a pre-existing MySQL/Mariadb Connection
* setup with `serverless-mysql` npm module * setup with `serverless-mysql` npm module
*/ */
function connDbHandler( function connDbHandler(_a) {
/** return __awaiter(this, arguments, void 0, function* ({ conn, debug, query, values, dsqlConnOpts, }) {
* MariaDB Connection const finalConnection = conn || (yield (0, grab_dsql_connection_1.default)(dsqlConnOpts));
*/
conn,
/**
* String Or `ConnDBHandlerQueryObject` Array
*/
query,
/**
* Array of Values to Sanitize and Inject
*/
values, debug) {
return __awaiter(this, void 0, void 0, function* () {
const finalConnection = conn || (yield (0, grab_dsql_connection_1.default)());
try { try {
if (!finalConnection) if (!finalConnection)
throw new Error("No Connection Found!"); throw new Error("No Connection Found!");

View File

@ -11,6 +11,7 @@ import {
} from "../../../types"; } from "../../../types";
import purgeDefaultFields from "../../../utils/purge-default-fields"; import purgeDefaultFields from "../../../utils/purge-default-fields";
import grabParsedValue from "./grab-parsed-value"; import grabParsedValue from "./grab-parsed-value";
import { ConnectionConfig } from "mariadb";
export type AddDbEntryParam< export type AddDbEntryParam<
T extends { [k: string]: any } = any, T extends { [k: string]: any } = any,
@ -34,6 +35,7 @@ export type AddDbEntryParam<
encryptionSalt?: string; encryptionSalt?: string;
forceLocal?: boolean; forceLocal?: boolean;
debug?: boolean; debug?: boolean;
dbConfig?: ConnectionConfig;
}; };
/** /**
@ -57,6 +59,7 @@ export default async function addDbEntry<
encryptionSalt, encryptionSalt,
forceLocal, forceLocal,
debug, debug,
dbConfig,
}: AddDbEntryParam<T, K>): Promise<APIResponseObject<PostInsertReturn>> { }: AddDbEntryParam<T, K>): Promise<APIResponseObject<PostInsertReturn>> {
const isMaster = forceLocal const isMaster = forceLocal
? true ? true
@ -89,9 +92,10 @@ export default async function addDbEntry<
isMaster ? "" : `\`${dbFullName}\`.` isMaster ? "" : `\`${dbFullName}\`.`
}\`${tableName}\` WHERE \`${duplicateColumnName}\`=?`; }\`${tableName}\` WHERE \`${duplicateColumnName}\`=?`;
const duplicateValue = await connDbHandler(null, checkDuplicateQuery, [ const duplicateValue = await connDbHandler({
duplicateColumnValue, query: checkDuplicateQuery,
]); values: [duplicateColumnValue],
});
if (duplicateValue?.[0] && !update) { if (duplicateValue?.[0] && !update) {
return { return {
@ -110,6 +114,9 @@ export default async function addDbEntry<
encryptionSalt, encryptionSalt,
identifierColumnName: duplicateColumnName, identifierColumnName: duplicateColumnName,
identifierValue: duplicateColumnValue || "", identifierValue: duplicateColumnValue || "",
dbConfig,
debug,
forceLocal,
}); });
} }
} }
@ -205,12 +212,12 @@ export default async function addDbEntry<
const finalQueryValues = grabFinalQueryValuesArr(queryValuesArray); const finalQueryValues = grabFinalQueryValuesArr(queryValuesArray);
const newInsert = await connDbHandler( const newInsert = await connDbHandler({
null,
query, query,
finalQueryValues, values: finalQueryValues,
debug debug,
); dsqlConnOpts: { config: dbConfig },
});
return { return {
success: Boolean(newInsert?.insertId), success: Boolean(newInsert?.insertId),
@ -250,12 +257,12 @@ export default async function addDbEntry<
batchQueryValuesArray.flat() batchQueryValuesArray.flat()
); );
const newInsert = await connDbHandler( const newInsert = await connDbHandler({
null,
query, query,
finalQueryValues, values: finalQueryValues,
debug debug,
); dsqlConnOpts: { config: dbConfig },
});
if (debug) { if (debug) {
debugLog({ debugLog({

View File

@ -42,9 +42,10 @@ export default async function deleteDbEntry<
isMaster && !dbFullName ? "" : `\`${dbFullName}\`.` isMaster && !dbFullName ? "" : `\`${dbFullName}\`.`
}\`${tableName}\` WHERE \`${identifierColumnName.toString()}\`=?`; }\`${tableName}\` WHERE \`${identifierColumnName.toString()}\`=?`;
const deletedEntry = await connDbHandler(null, query, [ const deletedEntry = await connDbHandler({
identifierValue, query,
]); values: [identifierValue],
});
/** /**
* Return statement * Return statement

View File

@ -9,6 +9,7 @@ import {
import _ from "lodash"; import _ from "lodash";
import purgeDefaultFields from "../../../utils/purge-default-fields"; import purgeDefaultFields from "../../../utils/purge-default-fields";
import grabParsedValue from "./grab-parsed-value"; import grabParsedValue from "./grab-parsed-value";
import { ConnectionConfig } from "mariadb";
type Param<T extends { [k: string]: any } = any> = { type Param<T extends { [k: string]: any } = any> = {
dbContext?: (typeof DbContextsArray)[number]; dbContext?: (typeof DbContextsArray)[number];
@ -22,6 +23,7 @@ type Param<T extends { [k: string]: any } = any> = {
identifierValue: string | number; identifierValue: string | number;
forceLocal?: boolean; forceLocal?: boolean;
debug?: boolean; debug?: boolean;
dbConfig?: ConnectionConfig;
}; };
/** /**
@ -42,6 +44,7 @@ export default async function updateDbEntry<
encryptionSalt, encryptionSalt,
forceLocal, forceLocal,
debug, debug,
dbConfig,
}: Param<T>): Promise<APIResponseObject<PostInsertReturn>> { }: Param<T>): Promise<APIResponseObject<PostInsertReturn>> {
/** /**
* Check if data is valid * Check if data is valid
@ -139,7 +142,11 @@ export default async function updateDbEntry<
updateValues.push(identifierValue); updateValues.push(identifierValue);
const updatedEntry = await connDbHandler(null, query, updateValues); const updatedEntry = await connDbHandler({
query,
values: updateValues,
dsqlConnOpts: { config: dbConfig },
});
/** /**
* Return statement * Return statement

View File

@ -29,7 +29,10 @@ export default async function fullAccessDbHandler({
* @description Fetch data from db if no cache * @description Fetch data from db if no cache
*/ */
try { try {
results = await connDbHandler(null, queryString, queryValuesArray); results = await connDbHandler({
query: queryString,
values: queryValuesArray,
});
//////////////////////////////////////// ////////////////////////////////////////
} catch (error: any) { } catch (error: any) {

View File

@ -42,7 +42,7 @@ export default async function suDbHandler({
// dateStrings: true, // dateStrings: true,
// }); // });
const results = await connDbHandler(connection, query); const results = await connDbHandler({ conn: connection, query });
return results; return results;
} }

View File

@ -39,7 +39,7 @@ export default async function userDbHandler({
metaAsArray: true, metaAsArray: true,
}); });
const results = await connDbHandler(connection, query); const results = await connDbHandler({ conn: connection, query });
if (Array.isArray(results)) { if (Array.isArray(results)) {
const parsedDbResults = results.map((res) => parseResultObject(res)); const parsedDbResults = results.map((res) => parseResultObject(res));

View File

@ -1477,6 +1477,7 @@ export type DsqlCrudParam<
dbFullName?: string; dbFullName?: string;
dbName?: string; dbName?: string;
tableSchema?: DSQL_TableSchemaType; tableSchema?: DSQL_TableSchemaType;
dbConfig?: ConnectionConfig;
}; };
export type ErrorCallback = (title: string, error: Error, data?: any) => void; export type ErrorCallback = (title: string, error: Error, data?: any) => void;

View File

@ -27,7 +27,9 @@ export default async function importMariadbDatabase({
const finalMariadbHost = mariadbHost || process.env.DSQL_DB_HOST; const finalMariadbHost = mariadbHost || process.env.DSQL_DB_HOST;
const finalMariadbPass = mariadbPass || process.env.DSQL_DB_PASSWORD; const finalMariadbPass = mariadbPass || process.env.DSQL_DB_PASSWORD;
await connDbHandler(null, `CREATE DATABASE IF NOT EXISTS ${dbFullName}`); await connDbHandler({
query: `CREATE DATABASE IF NOT EXISTS ${dbFullName}`,
});
const cmd = `${mysqlPath} -u ${finalMariadbUser} -h ${finalMariadbHost} -p"${finalMariadbPass}" ${dbFullName} < ${targetFilePath}`; const cmd = `${mysqlPath} -u ${finalMariadbUser} -h ${finalMariadbHost} -p"${finalMariadbPass}" ${dbFullName} < ${targetFilePath}`;

View File

@ -13,6 +13,7 @@ export default async function <
countOnly, countOnly,
dbFullName, dbFullName,
tableSchema, tableSchema,
dbConfig,
}: Omit< }: Omit<
DsqlCrudParam<T>, DsqlCrudParam<T>,
"action" | "data" | "sanitize" "action" | "data" | "sanitize"
@ -56,7 +57,10 @@ export default async function <
]; ];
} }
const res = await connDbHandler(undefined, connQueries); const res = await connDbHandler({
query: connQueries,
dsqlConnOpts: { config: dbConfig },
});
const parsedRes = checkArrayDepth(res, 2) const parsedRes = checkArrayDepth(res, 2)
? parseDbResults({ unparsedResults: res[0], tableSchema }) ? parseDbResults({ unparsedResults: res[0], tableSchema })

View File

@ -28,6 +28,7 @@ export default async function dsqlCrud<
debug, debug,
tableSchema, tableSchema,
deleteKeyValuesOperator, deleteKeyValuesOperator,
dbConfig,
} = params; } = params;
const finalData = (sanitize ? sanitize({ data }) : data) as T; const finalData = (sanitize ? sanitize({ data }) : data) as T;
@ -50,6 +51,7 @@ export default async function dsqlCrud<
dbFullName, dbFullName,
debug, debug,
tableSchema, tableSchema,
dbConfig,
}); });
return INSERT_RESULT; return INSERT_RESULT;
@ -64,6 +66,7 @@ export default async function dsqlCrud<
identifierValue: String(targetValue || targetId), identifierValue: String(targetValue || targetId),
debug, debug,
tableSchema, tableSchema,
dbConfig,
}); });
return UPDATE_RESULT; return UPDATE_RESULT;
@ -81,11 +84,11 @@ export default async function dsqlCrud<
deleteKeyValuesOperator, deleteKeyValuesOperator,
}); });
const res = (await connDbHandler( const res = (await connDbHandler({
undefined, query: deleteQuery?.query,
deleteQuery?.query, values: deleteQuery?.values,
deleteQuery?.values dsqlConnOpts: { config: dbConfig },
)) as PostInsertReturn; })) as PostInsertReturn;
return { return {
success: Boolean(res.affectedRows), success: Boolean(res.affectedRows),

View File

@ -1,5 +1,5 @@
import debugLog from "../logging/debug-log"; import debugLog from "../logging/debug-log";
import { DSQLErrorObject } from "../../types"; import { DsqlConnectionParam, DSQLErrorObject } from "../../types";
import mariadb, { Connection, ConnectionConfig, Pool } from "mariadb"; import mariadb, { Connection, ConnectionConfig, Pool } from "mariadb";
import grabDSQLConnection from "../grab-dsql-connection"; import grabDSQLConnection from "../grab-dsql-connection";
@ -14,27 +14,36 @@ type Return<ReturnType = any> =
| null | null
| { error?: string; errors?: DSQLErrorObject[]; config?: ConnectionConfig }; | { error?: string; errors?: DSQLErrorObject[]; config?: ConnectionConfig };
export type ConnectionDbHandlerParams = {
/**
* MariaDB Connection
*/
conn?: mariadb.Connection | null;
/**
* String Or `ConnDBHandlerQueryObject` Array
*/
query?: ConnDBHandlerQueryObject["query"] | ConnDBHandlerQueryObject[];
/**
* Array of Values to Sanitize and Inject
*/
values?: ConnDBHandlerQueryObject["values"];
debug?: boolean;
dsqlConnOpts?: DsqlConnectionParam;
};
/** /**
* # Run Query From MySQL Connection * # Run Query From MySQL Connection
* @description Run a query from a pre-existing MySQL/Mariadb Connection * @description Run a query from a pre-existing MySQL/Mariadb Connection
* setup with `serverless-mysql` npm module * setup with `serverless-mysql` npm module
*/ */
export default async function connDbHandler<ReturnType = any>( export default async function connDbHandler<ReturnType = any>({
/** conn,
* MariaDB Connection debug,
*/ query,
conn?: mariadb.Connection | null, values,
/** dsqlConnOpts,
* String Or `ConnDBHandlerQueryObject` Array }: ConnectionDbHandlerParams): Promise<Return<ReturnType>> {
*/ const finalConnection = conn || (await grabDSQLConnection(dsqlConnOpts));
query?: ConnDBHandlerQueryObject["query"] | ConnDBHandlerQueryObject[],
/**
* Array of Values to Sanitize and Inject
*/
values?: ConnDBHandlerQueryObject["values"],
debug?: boolean
): Promise<Return<ReturnType>> {
const finalConnection = conn || (await grabDSQLConnection());
try { try {
if (!finalConnection) throw new Error("No Connection Found!"); if (!finalConnection) throw new Error("No Connection Found!");

View File

@ -1,6 +1,6 @@
{ {
"name": "@moduletrace/datasquirel", "name": "@moduletrace/datasquirel",
"version": "5.1.8", "version": "5.1.9",
"description": "Cloud-based SQL data management tool", "description": "Cloud-based SQL data management tool",
"main": "dist/index.js", "main": "dist/index.js",
"bin": { "bin": {