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
@@ -11,6 +11,7 @@ import {
} from "../../../types";
import purgeDefaultFields from "../../../utils/purge-default-fields";
import grabParsedValue from "./grab-parsed-value";
import { ConnectionConfig } from "mariadb";
export type AddDbEntryParam<
T extends { [k: string]: any } = any,
@@ -34,6 +35,7 @@ export type AddDbEntryParam<
encryptionSalt?: string;
forceLocal?: boolean;
debug?: boolean;
dbConfig?: ConnectionConfig;
};
/**
@@ -57,6 +59,7 @@ export default async function addDbEntry<
encryptionSalt,
forceLocal,
debug,
dbConfig,
}: AddDbEntryParam<T, K>): Promise<APIResponseObject<PostInsertReturn>> {
const isMaster = forceLocal
? true
@@ -89,9 +92,10 @@ export default async function addDbEntry<
isMaster ? "" : `\`${dbFullName}\`.`
}\`${tableName}\` WHERE \`${duplicateColumnName}\`=?`;
const duplicateValue = await connDbHandler(null, checkDuplicateQuery, [
duplicateColumnValue,
]);
const duplicateValue = await connDbHandler({
query: checkDuplicateQuery,
values: [duplicateColumnValue],
});
if (duplicateValue?.[0] && !update) {
return {
@@ -110,6 +114,9 @@ export default async function addDbEntry<
encryptionSalt,
identifierColumnName: duplicateColumnName,
identifierValue: duplicateColumnValue || "",
dbConfig,
debug,
forceLocal,
});
}
}
@@ -205,12 +212,12 @@ export default async function addDbEntry<
const finalQueryValues = grabFinalQueryValuesArr(queryValuesArray);
const newInsert = await connDbHandler(
null,
const newInsert = await connDbHandler({
query,
finalQueryValues,
debug
);
values: finalQueryValues,
debug,
dsqlConnOpts: { config: dbConfig },
});
return {
success: Boolean(newInsert?.insertId),
@@ -250,12 +257,12 @@ export default async function addDbEntry<
batchQueryValuesArray.flat()
);
const newInsert = await connDbHandler(
null,
const newInsert = await connDbHandler({
query,
finalQueryValues,
debug
);
values: finalQueryValues,
debug,
dsqlConnOpts: { config: dbConfig },
});
if (debug) {
debugLog({
@@ -42,9 +42,10 @@ export default async function deleteDbEntry<
isMaster && !dbFullName ? "" : `\`${dbFullName}\`.`
}\`${tableName}\` WHERE \`${identifierColumnName.toString()}\`=?`;
const deletedEntry = await connDbHandler(null, query, [
identifierValue,
]);
const deletedEntry = await connDbHandler({
query,
values: [identifierValue],
});
/**
* Return statement
@@ -9,6 +9,7 @@ import {
import _ from "lodash";
import purgeDefaultFields from "../../../utils/purge-default-fields";
import grabParsedValue from "./grab-parsed-value";
import { ConnectionConfig } from "mariadb";
type Param<T extends { [k: string]: any } = any> = {
dbContext?: (typeof DbContextsArray)[number];
@@ -22,6 +23,7 @@ type Param<T extends { [k: string]: any } = any> = {
identifierValue: string | number;
forceLocal?: boolean;
debug?: boolean;
dbConfig?: ConnectionConfig;
};
/**
@@ -42,6 +44,7 @@ export default async function updateDbEntry<
encryptionSalt,
forceLocal,
debug,
dbConfig,
}: Param<T>): Promise<APIResponseObject<PostInsertReturn>> {
/**
* Check if data is valid
@@ -139,7 +142,11 @@ export default async function updateDbEntry<
updateValues.push(identifierValue);
const updatedEntry = await connDbHandler(null, query, updateValues);
const updatedEntry = await connDbHandler({
query,
values: updateValues,
dsqlConnOpts: { config: dbConfig },
});
/**
* Return statement
@@ -29,7 +29,10 @@ export default async function fullAccessDbHandler({
* @description Fetch data from db if no cache
*/
try {
results = await connDbHandler(null, queryString, queryValuesArray);
results = await connDbHandler({
query: queryString,
values: queryValuesArray,
});
////////////////////////////////////////
} catch (error: any) {
@@ -42,7 +42,7 @@ export default async function suDbHandler({
// dateStrings: true,
// });
const results = await connDbHandler(connection, query);
const results = await connDbHandler({ conn: connection, query });
return results;
}
@@ -39,7 +39,7 @@ export default async function userDbHandler({
metaAsArray: true,
});
const results = await connDbHandler(connection, query);
const results = await connDbHandler({ conn: connection, query });
if (Array.isArray(results)) {
const parsedDbResults = results.map((res) => parseResultObject(res));
+1
View File
@@ -1477,6 +1477,7 @@ export type DsqlCrudParam<
dbFullName?: string;
dbName?: string;
tableSchema?: DSQL_TableSchemaType;
dbConfig?: ConnectionConfig;
};
export type ErrorCallback = (title: string, error: Error, data?: any) => void;
@@ -27,7 +27,9 @@ export default async function importMariadbDatabase({
const finalMariadbHost = mariadbHost || process.env.DSQL_DB_HOST;
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}`;
@@ -13,6 +13,7 @@ export default async function <
countOnly,
dbFullName,
tableSchema,
dbConfig,
}: Omit<
DsqlCrudParam<T>,
"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)
? parseDbResults({ unparsedResults: res[0], tableSchema })
+8 -5
View File
@@ -28,6 +28,7 @@ export default async function dsqlCrud<
debug,
tableSchema,
deleteKeyValuesOperator,
dbConfig,
} = params;
const finalData = (sanitize ? sanitize({ data }) : data) as T;
@@ -50,6 +51,7 @@ export default async function dsqlCrud<
dbFullName,
debug,
tableSchema,
dbConfig,
});
return INSERT_RESULT;
@@ -64,6 +66,7 @@ export default async function dsqlCrud<
identifierValue: String(targetValue || targetId),
debug,
tableSchema,
dbConfig,
});
return UPDATE_RESULT;
@@ -81,11 +84,11 @@ export default async function dsqlCrud<
deleteKeyValuesOperator,
});
const res = (await connDbHandler(
undefined,
deleteQuery?.query,
deleteQuery?.values
)) as PostInsertReturn;
const res = (await connDbHandler({
query: deleteQuery?.query,
values: deleteQuery?.values,
dsqlConnOpts: { config: dbConfig },
})) as PostInsertReturn;
return {
success: Boolean(res.affectedRows),
+26 -17
View File
@@ -1,5 +1,5 @@
import debugLog from "../logging/debug-log";
import { DSQLErrorObject } from "../../types";
import { DsqlConnectionParam, DSQLErrorObject } from "../../types";
import mariadb, { Connection, ConnectionConfig, Pool } from "mariadb";
import grabDSQLConnection from "../grab-dsql-connection";
@@ -14,27 +14,36 @@ type Return<ReturnType = any> =
| null
| { 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
* @description Run a query from a pre-existing MySQL/Mariadb Connection
* setup with `serverless-mysql` npm module
*/
export default async function connDbHandler<ReturnType = any>(
/**
* 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>> {
const finalConnection = conn || (await grabDSQLConnection());
export default async function connDbHandler<ReturnType = any>({
conn,
debug,
query,
values,
dsqlConnOpts,
}: ConnectionDbHandlerParams): Promise<Return<ReturnType>> {
const finalConnection = conn || (await grabDSQLConnection(dsqlConnOpts));
try {
if (!finalConnection) throw new Error("No Connection Found!");