resolveEntityDependencies function

Set<String> resolveEntityDependencies(
  1. String entityName,
  2. Map<String, dynamic> schemas,
  3. Set<String> visited
)

Implementation

Set<String> resolveEntityDependencies(
  String entityName,
  Map<String, dynamic> schemas,
  Set<String> visited,
) {
  if (visited.contains(entityName)) return {};

  visited.add(entityName);

  final schema = schemas[entityName];
  if (schema == null) return {};

  final props = asStringMap(schema['properties']) ?? {};
  final deps = <String>{};

  for (final value in props.values) {
    if (value['\$ref'] != null) {
      final ref = value['\$ref'].split('/').last;
      deps.add(ref);
      deps.addAll(resolveEntityDependencies(ref, schemas, visited));
    }

    if (value['type'] == 'array') {
      final items = value['items'];
      if (items != null && items['\$ref'] != null) {
        final ref = items['\$ref'].split('/').last;
        deps.add(ref);
        deps.addAll(resolveEntityDependencies(ref, schemas, visited));
      }
    }
  }

  return deps;
}