import dataTypeConstructor from "../../utils/db/schema/data-type-constructor"; import dataTypeParser from "../../utils/db/schema/data-type-parser"; /** * # Generate Table Column Description */ export default function generateColumnDescription({ columnData, primaryKeySet, }) { const { fieldName, dataType, nullValue, primaryKey, autoIncrement, defaultValue, defaultValueLiteral, onUpdateLiteral, notNullValue, unique, } = columnData; let fieldEntryText = ""; const finalDataTypeObject = dataTypeParser(dataType); const finalDataType = dataTypeConstructor(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, }; }