datasquirel/package-shared/utils/generateColumnDescription.ts

78 lines
2.5 KiB
TypeScript
Raw Normal View History

2023-09-21 14:00:04 +00:00
// @ts-check
/** ****************************************************************************** */
/** ****************************************************************************** */
/** ****************************************************************************** */
/** ****************************************************************************** */
/** ****************************************************************************** */
/** ****************************************************************************** */
/**
2025-01-10 19:10:28 +00:00
* # Generate SQL text for Field
2023-09-21 14:00:04 +00:00
*/
2025-01-10 19:10:28 +00:00
export default function generateColumnDescription({
2024-10-14 06:49:01 +00:00
columnData,
primaryKeySet,
2025-01-10 19:10:28 +00:00
}: {
columnData: import("../types").DSQL_FieldSchemaType;
primaryKeySet?: boolean;
}): { fieldEntryText: string; newPrimaryKeySet: boolean } {
2023-09-21 14:00:04 +00:00
/**
* Format tableInfoArray
*
* @description Format tableInfoArray
*/
2024-10-14 06:49:01 +00:00
const {
fieldName,
dataType,
nullValue,
primaryKey,
autoIncrement,
defaultValue,
defaultValueLiteral,
notNullValue,
} = columnData;
2023-09-21 14:00:04 +00:00
let fieldEntryText = "";
fieldEntryText += `\`${fieldName}\` ${dataType}`;
////////////////////////////////////////
if (nullValue) {
fieldEntryText += " DEFAULT NULL";
} else if (defaultValueLiteral) {
fieldEntryText += ` DEFAULT ${defaultValueLiteral}`;
} else if (defaultValue) {
fieldEntryText += ` DEFAULT '${defaultValue}'`;
} else if (notNullValue) {
fieldEntryText += ` NOT NULL`;
}
////////////////////////////////////////
if (primaryKey && !primaryKeySet) {
fieldEntryText += " PRIMARY KEY";
primaryKeySet = true;
}
////////////////////////////////////////
if (autoIncrement) {
fieldEntryText += " AUTO_INCREMENT";
primaryKeySet = true;
}
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
return { fieldEntryText, newPrimaryKeySet: primaryKeySet || false };
2025-01-10 19:10:28 +00:00
}
2023-09-21 14:00:04 +00:00
/** ****************************************************************************** */
/** ****************************************************************************** */
/** ****************************************************************************** */
/** ****************************************************************************** */
/** ****************************************************************************** */