createDomainUseCase method
void
createDomainUseCase()
Implementation
void createDomainUseCase(
String pathPage,
String pageName,
String apiName,
String method,
bool bodyList,
bool responseList,
) {
final pageClassName = pageName.pascalCase;
final apiClassName = apiName.pascalCase;
final apiMethodName = apiName.camelCase;
final path = join(pathPage, 'domain', 'usecases');
DirectoryHelper.createDir(path);
final bodyClass = getBodyClass(apiClassName, bodyList);
final entityClass = getEntityClass(apiClassName, responseList);
join(path, '${apiName}_use_case.dart').write(
'''${returnData == 'body_bytes' ? "import 'dart:typed_data';" : ''}
import 'package:core/core.dart';
import '../../data/models/body/${apiName}_body.dart';
${isReturnDataModel ? '''import '../entities/${apiName}_entity.dart';''' : ''}
import '../repositories/${pageName}_repository.dart';
class ${apiClassName}UseCase implements ${whenMethod(
method,
onStream: () => 'StreamUseCase',
onFuture: () => 'UseCase',
)}<$entityClass, $bodyClass> {
${apiClassName}UseCase({
required this.repository,
});
final ${pageClassName}Repository repository;
@override
${flutterClassOfMethod(method)}<Either<MorphemeFailure, $entityClass>> call($bodyClass body,{Map<String, String>? headers, ${isApplyCacheStrategy(method) ? 'CacheStrategy? cacheStrategy,' : ''}}) {
return repository.$apiMethodName(body, headers: headers, ${isApplyCacheStrategy(method) ? 'cacheStrategy: cacheStrategy,' : ''});
}
}''');
StatusHelper.generated(join(path, '${apiName}_use_case.dart'));
}