generateModels function

void generateModels({
  1. required Set<String> usedModels,
  2. required Map<String, dynamic> schemas,
  3. required ModelGenerator generator,
  4. required String outputPath,
  5. required String projetName,
  6. required String featureName,
})

Implementation

void generateModels({
  required Set<String> usedModels,
  required Map<String, dynamic> schemas,
  required ModelGenerator generator,
  required String outputPath,
  required String projetName,
  required String featureName,
}) {
  final generated = <String>{};

  void generateRecursive(String modelName) {
    final schemaKey =
        schemas.containsKey(modelName) ? modelName : stripResponse(modelName);

    if (generated.contains(modelName) || !schemas.containsKey(schemaKey)) {
      return;
    }

    generated.add(modelName);

    final code = generator.generateWithImports(
      modelName,
      schemas[schemaKey]!,
      featureName,
      projetName,
    );

    File('$outputPath/${modelName.snakeCase}.dart').writeAsStringSync(code);

    final deps = generator.usedImports.toList();
    for (final dep in deps) {
      generateRecursive(dep);
    }
  }

  for (final model in usedModels) {
    generateRecursive(asResponse(model));
  }

  print('✅ Models generated at $outputPath');
}