generate static method

String generate(
  1. FeatureSchema schema
)

Implementation

static String generate(FeatureSchema schema) {
  final camelName = FileWriter.toCamelCase(
    FileWriter.toSnakeCase(schema.name),
  );
  final className = '${camelName}Repository';
  final implClassName = '${className}Impl';
  final apiServiceName = '${camelName}ApiService';
  final snakeName = FileWriter.toSnakeCase(schema.name);

  final methods = schema.functions.map(generateMethod).join('\n');

  final modelImports = _generateModelImports(schema.functions, '../models');

  final baseRepoImport = schema.globalConfig.imports['base_repository'] ?? '';
  final baseRepoImportLine = baseRepoImport.isNotEmpty
      ? "import '$baseRepoImport';"
      : "";

  final dataStateImport = schema.globalConfig.imports['data_state'] ?? '';
  final dataStateImportLine = dataStateImport.isNotEmpty
      ? "import '$dataStateImport';"
      : "";

  return '''import '../data_sources/${snakeName}_api_service.dart';
import '../../domain/repositories/${snakeName}_repository.dart';
$dataStateImportLine
$baseRepoImportLine
$modelImports

class $implClassName with BaseRepository implements $className {
final $apiServiceName _apiService;

$implClassName(this._apiService);

$methods
}
''';
}