generate static method
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);
}
''';
}