datasquirel/package-shared/functions/backend/varDatabaseDbHandler.ts

112 lines
3.1 KiB
TypeScript
Raw Normal View History

2025-01-10 19:10:28 +00:00
import parseDbResults from "./parseDbResults";
import serverError from "./serverError";
import DB_HANDLER from "../../utils/backend/global-db/DB_HANDLER";
import DSQL_USER_DB_HANDLER from "../../utils/backend/global-db/DSQL_USER_DB_HANDLER";
import LOCAL_DB_HANDLER from "../../utils/backend/global-db/LOCAL_DB_HANDLER";
2024-11-06 06:26:23 +00:00
2025-01-10 19:10:28 +00:00
type Param = {
queryString: string;
queryValuesArray?: any[];
database?: string;
tableSchema?: import("../../types").DSQL_TableSchemaType;
useLocal?: boolean;
};
2024-11-06 06:26:23 +00:00
/**
2025-01-10 19:10:28 +00:00
* # DB handler for specific database
2024-11-06 06:26:23 +00:00
*/
2025-01-10 19:10:28 +00:00
export default async function varDatabaseDbHandler({
2024-11-06 06:26:23 +00:00
queryString,
queryValuesArray,
database,
tableSchema,
2024-12-08 08:58:57 +00:00
useLocal,
2025-01-10 19:10:28 +00:00
}: Param): Promise<any> {
2024-11-06 06:26:23 +00:00
/**
* Declare variables
*
* @description Declare "results" variable
*/
2024-12-09 11:45:39 +00:00
const isMaster = useLocal
? true
: database?.match(/^datasquirel$/)
? true
: false;
2024-11-06 06:26:23 +00:00
/** @type {any} */
2025-01-10 19:10:28 +00:00
const FINAL_DB_HANDLER: any = useLocal
2024-12-08 08:58:57 +00:00
? LOCAL_DB_HANDLER
: isMaster
? DB_HANDLER
: DSQL_USER_DB_HANDLER;
2024-11-06 06:26:23 +00:00
let results;
/**
* Fetch from db
*
* @description Fetch data from db if no cache
*/
try {
if (
queryString &&
queryValuesArray &&
Array.isArray(queryValuesArray) &&
queryValuesArray[0]
) {
results = isMaster
? await FINAL_DB_HANDLER(queryString, queryValuesArray)
: await FINAL_DB_HANDLER({
paradigm: "Full Access",
database,
queryString,
queryValues: queryValuesArray,
});
} else {
results = isMaster
? await FINAL_DB_HANDLER(queryString)
: await FINAL_DB_HANDLER({
paradigm: "Full Access",
database,
queryString,
});
}
2025-01-10 19:10:28 +00:00
} catch (error: any) {
2024-11-06 06:26:23 +00:00
serverError({
component: "varDatabaseDbHandler/lines-29-32",
message: error.message,
});
}
/**
* Return results
*
* @description Return results add to cache if "req" param is passed
*/
if (results && tableSchema) {
try {
const unparsedResults = results;
const parsedResults = await parseDbResults({
unparsedResults: unparsedResults,
tableSchema: tableSchema,
});
return parsedResults;
2025-01-10 19:10:28 +00:00
} catch (error: any) {
2024-11-06 06:26:23 +00:00
console.log(
"\x1b[31mvarDatabaseDbHandler ERROR\x1b[0m =>",
database,
error
);
serverError({
component: "varDatabaseDbHandler/lines-52-53",
message: error.message,
});
return null;
}
} else if (results) {
return results;
} else {
return null;
}
2025-01-10 19:10:28 +00:00
}