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