generateRepositories function

void generateRepositories({
  1. required Map<String, Map<String, dynamic>> groupedPaths,
  2. required String packageName,
  3. required String featureName,
  4. required RepositoryGenerator repoGen,
  5. required RepositoryImplGenerator implGen,
  6. required Map<String, dynamic> components,
  7. required String domainPath,
  8. required String dataPath,
  9. required Set<String> usedEntities,
})

Implementation

void generateRepositories({
  required Map<String, Map<String, dynamic>> groupedPaths,
  required String packageName,
  required String featureName,
  required RepositoryGenerator repoGen,
  required RepositoryImplGenerator implGen,
  required Map<String, dynamic> components,
  required String domainPath,
  required String dataPath,
  required Set<String> usedEntities,
}) {
  for (final entry in groupedPaths.entries) {
    final className =
        entry.key == 'default' ? packageName.pascalCase : entry.key.pascalCase;

    final repoResult = repoGen.generateRepository(
      className,
      entry.value,
      components,
    );

    usedEntities.addAll(repoResult.usedEntities);

    final implCode = implGen.generateRepositoryImpl(
      className,
      entry.value,
      components,
      featureName,
    );

    File(
      '$domainPath/${className.snakeCase}_repository.dart',
    ).writeAsStringSync(repoResult.code);

    File(
      '$dataPath/${className.snakeCase}_repository.dart',
    ).writeAsStringSync(implCode);
  }

  print('✅ Repositories generated');
}