57 lines
2.1 KiB
JavaScript
57 lines
2.1 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.default = generateColumnDescription;
|
|
const data_type_constructor_1 = __importDefault(require("../../utils/db/schema/data-type-constructor"));
|
|
const data_type_parser_1 = __importDefault(require("../../utils/db/schema/data-type-parser"));
|
|
/**
|
|
* # Generate Table Column Description
|
|
*/
|
|
function generateColumnDescription({ columnData, primaryKeySet, }) {
|
|
const { fieldName, dataType, nullValue, primaryKey, autoIncrement, defaultValue, defaultValueLiteral, onUpdateLiteral, notNullValue, unique, } = columnData;
|
|
let fieldEntryText = "";
|
|
const finalDataTypeObject = (0, data_type_parser_1.default)(dataType);
|
|
const finalDataType = (0, data_type_constructor_1.default)(finalDataTypeObject.type, finalDataTypeObject.limit, finalDataTypeObject.decimal);
|
|
fieldEntryText += `\`${fieldName}\` ${finalDataType}`;
|
|
if (nullValue) {
|
|
fieldEntryText += " DEFAULT NULL";
|
|
}
|
|
else if (defaultValueLiteral) {
|
|
fieldEntryText += ` DEFAULT ${defaultValueLiteral}`;
|
|
}
|
|
else if (defaultValue) {
|
|
if (String(defaultValue).match(/uuid\(\)/i)) {
|
|
fieldEntryText += ` DEFAULT UUID()`;
|
|
}
|
|
else {
|
|
fieldEntryText += ` DEFAULT '${String(defaultValue)
|
|
.replace(/^\'|\'$/g, "")
|
|
.replace(/\'/g, "\\'")}'`;
|
|
}
|
|
}
|
|
else if (notNullValue) {
|
|
fieldEntryText += ` NOT NULL`;
|
|
}
|
|
if (onUpdateLiteral) {
|
|
fieldEntryText += ` ON UPDATE ${onUpdateLiteral}`;
|
|
}
|
|
if (primaryKey && !primaryKeySet) {
|
|
fieldEntryText += " PRIMARY KEY";
|
|
primaryKeySet = true;
|
|
}
|
|
if (autoIncrement) {
|
|
fieldEntryText += " AUTO_INCREMENT";
|
|
primaryKeySet = true;
|
|
}
|
|
if (unique) {
|
|
fieldEntryText += " UNIQUE";
|
|
primaryKeySet = true;
|
|
}
|
|
return {
|
|
fieldEntryText,
|
|
newPrimaryKeySet: primaryKeySet || false,
|
|
};
|
|
}
|