fieldDescription function
ResourceField
fieldDescription(
- DataBean<DataObject> bean,
- DataField field,
- Iterable<DataBean<DataObject>> relatedBeans
)
Implementation
ResourceField fieldDescription(
DataBean bean,
DataField field,
Iterable<DataBean> relatedBeans,
) {
final meta = field.metaOfType<Meta>();
final apertureMeta = field.metaOfType<ApertureField>();
final validation = field.constraintOfType<RegExpConstraint>();
final length = field.constraintOfType<MaxLengthConstraint>();
final isAuto = field.hasMetaOfType<Id>((id) => id.auto);
final ResourceFieldLookup? lookup;
if (field.metaOfType<RelationId>() case final relationId?) {
final relationBean = relatedBeans.firstWhere(
(e) => e.type == relationId.type,
);
lookup = ResourceFieldLookup(
resourceId: relationBean.name,
resourceFieldId: relationBean.requireIdField.name,
filter: ResourceRelationFilter(),
);
} else {
lookup = null;
}
return ResourceField(
id: field.name,
name: meta?.name ?? niceName(field.name),
description: meta?.description,
readOnly: isAuto || (apertureMeta?.readOnly ?? false),
validation: validation?.expression,
length: length?.length,
type: _fieldType(field),
nullable: field.type.isNullable,
objectDescription: _objectDescription(field, relatedBeans),
enumValues: field
.constraintOfType<EnumConstraint>()
?.values
.map((e) => e.name)
.toList(),
lookup: lookup,
);
}