import { DSQL_TableSchemaType } from "../../types"; import decrypt from "../dsql/decrypt"; import defaultFieldsRegexp from "../dsql/default-fields-regexp"; type Param = { unparsedResults: any[]; tableSchema?: 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 function parseDbResults({ unparsedResults, tableSchema, }: Param): any[] | null { let parsedResults = []; try { 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.find( (fld) => fld.fieldName == resultFieldName ); if (resultFieldName?.match(defaultFieldsRegexp)) { continue; } let value = result[resultFieldName]; if (typeof value !== "number" && !value) { continue; } if (resultFieldSchema?.encrypted) { if (value?.match(/./)) { result[resultFieldName] = decrypt({ encryptedString: value, }); } } if (value && typeof value == "object") { result[resultFieldName] = ""; } } parsedResults.push(result); } return parsedResults; } catch (error: any) { return unparsedResults; } }