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}_${columnName}__check';
var fieldSQLType = typeToSQLType(
fieldType,
columnName,
entityFieldAnnotations: entityFieldAnnotations,
);
var enumType = enumTypeToSQLType(
fieldType.type,
columnName,
entityFieldAnnotations: entityFieldAnnotations,
);
if (enumType == null) {
throw StateError(
"Can't find column `$table`.`$columnName` `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;
}