generateUseCaseTemplate method

String generateUseCaseTemplate(
  1. ApiGenerationConfig config
)

Generates use case template.

Creates the use case implementation that calls the repository.

Parameters:

  • config: API generation configuration

Implementation

String generateUseCaseTemplate(ApiGenerationConfig config) {
  final bodyClass =
      typeResolver.resolveBodyClass(config.apiClassName, config.bodyList);
  final entityClass = typeResolver.resolveEntityClass(config);

  return '''${config.returnData == 'body_bytes' ? "import 'dart:typed_data';" : ''}

import 'package:core/core.dart';

import '../../data/models/body/${config.apiName}_body.dart';
${config.isReturnDataModel ? '''import '../entities/${config.apiName}_entity.dart';''' : ''}
import '../repositories/${config.pageName}_repository.dart';

class ${config.apiClassName}UseCase implements ${typeResolver.whenMethod(
    config.method,
    onStream: () => 'StreamUseCase',
    onFuture: () => 'UseCase',
  )}<$entityClass, $bodyClass> {
${config.apiClassName}UseCase({
  required this.repository,
});

final ${config.pageClassName}Repository repository;

@override
${typeResolver.resolveFlutterClassOfMethod(config.method)}<Either<MorphemeFailure, $entityClass>> call($bodyClass body,{Map<String, String>? headers, ${typeResolver.isApplyCacheStrategy(config.method) ? 'CacheStrategy? cacheStrategy,' : ''}}) {
  return repository.${config.apiMethodName}(body, headers: headers, ${typeResolver.isApplyCacheStrategy(config.method) ? 'cacheStrategy: cacheStrategy,' : ''});
}
}''';
}