datasquirel/dist/package-shared/shell/utils/createTable.js
2025-07-05 16:14:11 +01:00

73 lines
3.4 KiB
JavaScript

"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = createTable;
const varDatabaseDbHandler_1 = __importDefault(require("./varDatabaseDbHandler"));
const generateColumnDescription_1 = __importDefault(require("./generateColumnDescription"));
const supplementTable_1 = __importDefault(require("./supplementTable"));
const handle_table_foreign_key_1 = __importDefault(require("./handle-table-foreign-key"));
const create_table_handle_table_record_1 = __importDefault(require("./create-table-handle-table-record"));
/**
* # Create Table Functions
*/
function createTable(_a) {
return __awaiter(this, arguments, void 0, function* ({ dbFullName, tableName, tableInfoArray, tableSchema, recordedDbEntry, isMain, }) {
const finalTable = (0, supplementTable_1.default)({ tableInfoArray: tableInfoArray });
let tableId = yield (0, create_table_handle_table_record_1.default)({
recordedDbEntry,
tableSchema,
isMain,
});
if (!tableId && !isMain)
throw new Error(`Couldn't grab table ID`);
const createTableQueryArray = [];
createTableQueryArray.push(`CREATE TABLE IF NOT EXISTS \`${dbFullName}\`.\`${tableName}\` (`);
let primaryKeySet = false;
for (let i = 0; i < finalTable.length; i++) {
const column = finalTable[i];
let { fieldEntryText, newPrimaryKeySet } = (0, generateColumnDescription_1.default)({
columnData: column,
primaryKeySet: primaryKeySet,
});
primaryKeySet = newPrimaryKeySet;
const comma = (() => {
if (i === finalTable.length - 1)
return "";
return ",";
})();
createTableQueryArray.push(" " + fieldEntryText + comma);
}
createTableQueryArray.push(`) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;`);
const createTableQuery = createTableQueryArray.join("\n");
const newTable = yield (0, varDatabaseDbHandler_1.default)({
queryString: createTableQuery,
});
for (let i = 0; i < finalTable.length; i++) {
const column = finalTable[i];
const { foreignKey, fieldName } = column;
if (!fieldName)
continue;
if (foreignKey) {
yield (0, handle_table_foreign_key_1.default)({
dbFullName,
foreignKey,
tableName,
fieldName,
});
}
}
return tableId;
});
}