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; } }