98 lines
4.7 KiB
JavaScript
98 lines
4.7 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 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"));
|
|
const dbHandler_1 = __importDefault(require("../../functions/backend/dbHandler"));
|
|
const handle_indexes_1 = __importDefault(require("../createDbFromSchema/handle-indexes"));
|
|
const handle_unique_constraints_1 = __importDefault(require("../createDbFromSchema/handle-unique-constraints"));
|
|
/**
|
|
* # Create Table Functions
|
|
*/
|
|
function createTable(_a) {
|
|
return __awaiter(this, arguments, void 0, function* ({ dbFullName, tableName, fields: passedFields, tableSchema, recordedDbEntry, isMain, indexes, uniqueConstraints, }) {
|
|
const fields = (0, supplementTable_1.default)({ tableInfoArray: passedFields });
|
|
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 < fields.length; i++) {
|
|
const column = fields[i];
|
|
let { fieldEntryText, newPrimaryKeySet } = (0, generateColumnDescription_1.default)({
|
|
columnData: column,
|
|
primaryKeySet: primaryKeySet,
|
|
});
|
|
primaryKeySet = newPrimaryKeySet;
|
|
const comma = (() => {
|
|
if (i === fields.length - 1)
|
|
return "";
|
|
return ",";
|
|
})();
|
|
createTableQueryArray.push(" " + fieldEntryText + comma);
|
|
}
|
|
createTableQueryArray.push(`) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=${(tableSchema === null || tableSchema === void 0 ? void 0 : tableSchema.collation) || "utf8mb4_bin"};`);
|
|
const createTableQuery = createTableQueryArray.join("\n");
|
|
const newTable = yield (0, dbHandler_1.default)({
|
|
query: createTableQuery,
|
|
});
|
|
/**
|
|
* Handle MYSQL Foreign Keys
|
|
* ===================================================
|
|
* @description Iterate through each datasquirel schema
|
|
* table index(if available), and perform operations
|
|
*/
|
|
yield (0, handle_table_foreign_key_1.default)({
|
|
dbFullName,
|
|
fields,
|
|
tableName,
|
|
});
|
|
/**
|
|
* Handle DATASQUIREL Table Indexes
|
|
* ===================================================
|
|
* @description Iterate through each datasquirel schema
|
|
* table index(if available), and perform operations
|
|
*/
|
|
if (indexes === null || indexes === void 0 ? void 0 : indexes[0]) {
|
|
(0, handle_indexes_1.default)({
|
|
dbFullName,
|
|
indexes,
|
|
tableName,
|
|
});
|
|
}
|
|
/**
|
|
* Handle DATASQUIREL Table Unique Indexes
|
|
* ===================================================
|
|
* @description Iterate through each datasquirel schema
|
|
* table unique constraint(if available), and perform operations
|
|
*/
|
|
if (uniqueConstraints === null || uniqueConstraints === void 0 ? void 0 : uniqueConstraints[0]) {
|
|
(0, handle_unique_constraints_1.default)({
|
|
dbFullName,
|
|
tableUniqueConstraints: uniqueConstraints,
|
|
tableName,
|
|
});
|
|
}
|
|
return tableId;
|
|
});
|
|
}
|