70 lines
1.9 KiB
TypeScript
70 lines
1.9 KiB
TypeScript
import serverError from "./serverError";
|
|
import addDbEntry from "./db/addDbEntry";
|
|
import createDbFromSchema from "../../shell/createDbFromSchema";
|
|
import grabNewUsersTableSchema from "./grabNewUsersTableSchema";
|
|
import {
|
|
grabPrimaryRequiredDbSchema,
|
|
writeUpdatedDbSchema,
|
|
} from "../../shell/createDbFromSchema/grab-required-database-schemas";
|
|
import dbHandler from "./dbHandler";
|
|
|
|
type Param = {
|
|
userId?: number | string;
|
|
database: string;
|
|
payload?: { [s: string]: any };
|
|
dbId: string | number;
|
|
};
|
|
|
|
/**
|
|
* # Add User Table to Database
|
|
*/
|
|
export default async function addUsersTableToDb({
|
|
userId,
|
|
database,
|
|
payload,
|
|
dbId,
|
|
}: Param): Promise<boolean> {
|
|
try {
|
|
const userPreset = grabNewUsersTableSchema({ payload });
|
|
if (!userPreset) throw new Error("Couldn't Get User Preset!");
|
|
|
|
let targetDatabase = grabPrimaryRequiredDbSchema({
|
|
dbId,
|
|
userId,
|
|
});
|
|
|
|
if (!targetDatabase) {
|
|
throw new Error("Couldn't Find Target Database!");
|
|
}
|
|
|
|
let existingTableIndex = targetDatabase?.tables.findIndex(
|
|
(table: any) => table.tableName === "users"
|
|
);
|
|
|
|
if (typeof existingTableIndex == "number" && existingTableIndex > 0) {
|
|
targetDatabase.tables[existingTableIndex] = userPreset;
|
|
} else {
|
|
targetDatabase.tables.push(userPreset);
|
|
}
|
|
|
|
writeUpdatedDbSchema({ dbSchema: targetDatabase, userId });
|
|
|
|
const dbShellUpdate = await createDbFromSchema({
|
|
userId,
|
|
dbId,
|
|
});
|
|
|
|
return dbShellUpdate;
|
|
} catch (error: any) {
|
|
console.log(`addUsersTableToDb.ts ERROR: ${error.message}`);
|
|
|
|
serverError({
|
|
component: "addUsersTableToDb",
|
|
message: error.message,
|
|
user: { id: userId },
|
|
});
|
|
|
|
return false;
|
|
}
|
|
}
|