datasquirel/dist/package-shared/functions/backend/grabSchemaFieldsFromData.js
Benjamin Toby 285d3b8369 Updates
2025-01-14 08:01:19 +01:00

65 lines
2.3 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = grabSchemaFieldsFromData;
const serverError_1 = __importDefault(require("./serverError"));
/**
* # Add User Table to Database
*/
function grabSchemaFieldsFromData({ data, fields, excludeData, excludeFields, }) {
var _a;
try {
/** @type {DSQL_FieldSchemaType[]} */
const finalFields = [];
/** @type {string[]} */
let filteredFields = [];
if (data && ((_a = Object.keys(data)) === null || _a === void 0 ? void 0 : _a[0])) {
filteredFields = Object.keys(data);
}
if (fields) {
filteredFields = [...filteredFields, ...fields];
filteredFields = [...new Set(filteredFields)];
}
filteredFields = filteredFields
.filter((fld) => !excludeData || !Object.keys(excludeData).includes(fld))
.filter((fld) => !excludeFields ||
!excludeFields.find((exlFld) => exlFld.fieldName == fld));
filteredFields.forEach((fld) => {
const value = data ? data[fld] : null;
if (typeof value == "string") {
const newField = {
fieldName: fld,
dataType: value.length > 255 ? "TEXT" : "VARCHAR(255)",
};
if (Boolean(value.match(/<[^>]+>/g))) {
newField.richText = true;
}
finalFields.push(newField);
}
else if (typeof value == "number") {
finalFields.push({
fieldName: fld,
dataType: "INT",
});
}
else {
finalFields.push({
fieldName: fld,
dataType: "VARCHAR(255)",
});
}
});
return finalFields;
}
catch ( /** @type {any} */error) {
console.log(`grabSchemaFieldsFromData.ts ERROR: ${error.message}`);
(0, serverError_1.default)({
component: "grabSchemaFieldsFromData.ts",
message: error.message,
});
return [];
}
}