GenField.parse constructor

GenField.parse(
  1. String name,
  2. Map<String, Object?> spec
)

Implementation

factory GenField.parse(String name, Map<String, Object?> spec) {
  final type = spec['type'] as String;
  final isList = type.startsWith('list<');
  final base = isList ? type.substring(5, type.length - 1) : type;
  final kind = GenFieldKind.parseBase(base);
  return GenField(
    name: name,
    kind: kind,
    isList: isList,
    required: (spec['required'] as bool?) ?? false,
    description: (spec['description'] as String?) ?? '',
    deprecated: (spec['deprecated'] as bool?) ?? false,
    enumValues: ((spec['values'] as List?) ?? const []).cast<String>(),
    referenceModel: spec['model'] as String?,
    fileCollection: spec['fileCollection'] as String?,
    mapFields: [
      for (final entry
          in ((spec['fields'] as Map?) ?? const {})
              .cast<String, Object?>()
              .entries)
        GenField.parse(
          entry.key,
          (entry.value as Map).cast<String, Object?>(),
        ),
    ],
    hasReadTimeDefault: spec.containsKey('readTimeDefault'),
  );
}