generateAddEnumConstraintAlterTableSQL method
AlterTableSQL
generateAddEnumConstraintAlterTableSQL(
- String table,
- String fieldName,
- TypeInfo fieldType, {
- List<
EntityField> ? entityFieldAnnotations,
Implementation
AlterTableSQL generateAddEnumConstraintAlterTableSQL(
String table, String fieldName, TypeInfo fieldType,
{List<EntityField>? entityFieldAnnotations}) {
var q = dialect.elementQuote;
var columnName = normalizeColumnName(fieldName);
var constraintName = '${table}_${fieldName}_check';
var fieldSQLType = typeToSQLType(fieldType, columnName,
entityFieldAnnotations: entityFieldAnnotations);
var enumType = enumTypeToSQLType(fieldType.type, columnName,
entityFieldAnnotations: entityFieldAnnotations);
if (enumType == null) {
throw StateError("Can't find `EnumReflection` for type: $fieldType");
}
var type = enumType.key;
var values = enumType.value;
fieldSQLType = _buildEnumSQLType(type, fieldSQLType, values, q, columnName,
withSqlType: false);
var comment =
'${fieldType.toString(withT: false)} $fieldName enum(${values.join(', ')})';
var columnEntry = SQLEntry(
'ADD', ' ADD CONSTRAINT $q$constraintName$q $fieldSQLType',
comment: comment);
var alterTableSQL = AlterTableSQL(dialect, table, [columnEntry]);
return alterTableSQL;
}