generateEntities function

Set<String> generateEntities({
  1. required Set<String> usedEntities,
  2. required Map<String, dynamic> schemas,
  3. required String outputPath,
})

Implementation

Set<String> generateEntities({
  required Set<String> usedEntities,
  required Map<String, dynamic> schemas,
  required String outputPath,
}) {
  final generator = EntityGenerator();
  final generated = <String>{};

  void generateRecursive(String entityName) {
    if (generated.contains(entityName)) return;

    final schemaKey = schemas.keys.firstWhere(
      (k) => resolveEntityName(k) == entityName,
      orElse: () => '',
    );

    if (schemaKey.isEmpty) return;

    final schema = schemas[schemaKey]!;

    // ⛔ FILTER DOMAIN ENTITY
    if (!isDomainEntity(schemaKey, schema)) return;

    generated.add(entityName);

    final deps = resolveEntityDependencies(schemaKey, schemas, {});
    for (final dep in deps) {
      generateRecursive(dep);
    }

    final code = generator.generateEntity(entityName, schema);
    File('$outputPath/${entityName.snakeCase}.dart').writeAsStringSync(code);
  }

  for (final entity in usedEntities) {
    generateRecursive(entity);
  }

  print('✅ Entities generated at $outputPath');
  return generated;
}