datasquirel/dist/package-shared/functions/backend/updateUsersTableSchema.js
Benjamin Toby 7e8bb37c09 Updates
2025-07-05 14:59:30 +01:00

47 lines
2.1 KiB
JavaScript

import serverError from "./serverError";
import createDbFromSchema from "../../shell/createDbFromSchema";
import grabSchemaFieldsFromData from "./grabSchemaFieldsFromData";
import { grabPrimaryRequiredDbSchema, writeUpdatedDbSchema, } from "../../shell/createDbFromSchema/grab-required-database-schemas";
/**
* # Add User Table to Database
*/
export default async function updateUsersTableSchema({ userId, database, newFields, newPayload, dbId, }) {
var _a, _b;
try {
const dbFullName = database;
let targetDatabase = grabPrimaryRequiredDbSchema({
dbId,
userId,
});
if (!targetDatabase) {
throw new Error("Couldn't Find Target Database!");
}
let existingTableIndex = targetDatabase === null || targetDatabase === void 0 ? void 0 : targetDatabase.tables.findIndex((table) => table.tableName === "users");
const usersTable = targetDatabase.tables[existingTableIndex];
if (!((_a = usersTable === null || usersTable === void 0 ? void 0 : usersTable.fields) === null || _a === void 0 ? void 0 : _a[0]))
throw new Error("Users Table Not Found!");
const additionalFields = grabSchemaFieldsFromData({
fields: newFields,
data: newPayload,
});
const spliceStartIndex = usersTable.fields.findIndex((field) => field.fieldName === "date_created");
const finalSpliceStartIndex = spliceStartIndex >= 0 ? spliceStartIndex : 0;
usersTable.fields.splice(finalSpliceStartIndex, 0, ...additionalFields);
writeUpdatedDbSchema({ dbSchema: targetDatabase, userId });
const dbShellUpdate = await createDbFromSchema({
userId,
targetDatabase: dbFullName,
});
return `Done!`;
}
catch (error) {
(_b = global.ERROR_CALLBACK) === null || _b === void 0 ? void 0 : _b.call(global, `Error Updating User Table Schema`, error);
serverError({
component: "addUsersTableToDb",
message: error.message,
user: { id: userId },
});
return error.message;
}
}