// @ts-check import decrypt from "../dsql/decrypt"; import defaultFieldsRegexp from "./defaultFieldsRegexp"; type Param = { unparsedResults: any[]; tableSchema?: import("../../types").DSQL_TableSchemaType; }; /** * Parse Database results * ============================================================================== * @description this function takes a database results array gotten from a DB handler * function, decrypts encrypted fields, and returns an updated array with no encrypted * fields */ export default async function parseDbResults({ unparsedResults, tableSchema, }: Param): Promise { /** * Declare variables * * @description Declare "results" variable */ let parsedResults = []; try { /** * Declare variables * * @description Declare "results" variable */ for (let pr = 0; pr < unparsedResults.length; pr++) { let result = unparsedResults[pr]; let resultFieldNames = Object.keys(result); for (let i = 0; i < resultFieldNames.length; i++) { const resultFieldName = resultFieldNames[i]; let resultFieldSchema = tableSchema?.fields[i]; if (resultFieldName?.match(defaultFieldsRegexp)) { continue; } let value = result[resultFieldName]; if (typeof value !== "number" && !value) { // parsedResults.push(result); continue; } if (resultFieldSchema?.encrypted) { if (value?.match(/./)) { result[resultFieldName] = decrypt({ encryptedString: value, }); } } } parsedResults.push(result); } /** * Declare variables * * @description Declare "results" variable */ return parsedResults; } catch (/** @type {any} */ error: any) { console.log("ERROR in parseDbResults Function =>", error.message); return unparsedResults; } }