generate static method

String generate(
  1. FunctionDef function,
  2. FeatureSchema schema
)

Implementation

static String generate(FunctionDef function, FeatureSchema schema) {
  final featureName = schema.name;
  final camelFeatureName = FileWriter.toCamelCase(
    FileWriter.toSnakeCase(featureName),
  );
  final className = '${FileWriter.toCamelCase(function.name)}UseCase';
  final repoName = '${camelFeatureName}Repository';
  final requestType = ModelGenerator.getRequestModelType(function);
  final responseType = ModelGenerator.getResponseModelType(function);
  final returnType = responseType == 'dynamic' ? 'dynamic' : '$responseType?';
  final modelImports = _generateModelImports(function, '../../data/models');

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

  final useCaseImport = schema.globalConfig.imports['use_case'] ?? '';
  final useCaseImportLine = useCaseImport.isNotEmpty
      ? "import '$useCaseImport';"
      : "";

  return '''import '../repositories/${FileWriter.toSnakeCase(featureName)}_repository.dart';
$dataStateImportLine
$useCaseImportLine
$modelImports

class $className implements UseCase<DataState<$returnType>, $requestType> {
final $repoName _repository;

$className(this._repository);

@override
Future<DataState<$returnType>> call({required $requestType params}) async =>
    await _repository.${function.name}(params);
}
''';
}