"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = generateColumnDescription;
/**
 * # Generate Table Column Description
 */
function generateColumnDescription({ columnData, primaryKeySet, }) {
    /**
     * Format tableInfoArray
     *
     * @description Format tableInfoArray
     */
    const { fieldName, dataType, nullValue, primaryKey, autoIncrement, defaultValue, defaultValueLiteral, onUpdateLiteral, notNullValue, } = columnData;
    let fieldEntryText = "";
    fieldEntryText += `\`${fieldName}\` ${dataType}`;
    ////////////////////////////////////////
    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 '${defaultValue}'`;
        }
    }
    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;
    }
    ////////////////////////////////////////
    ////////////////////////////////////////
    ////////////////////////////////////////
    return {
        fieldEntryText,
        newPrimaryKeySet: primaryKeySet || false,
    };
}