createDomainUseCase method

void createDomainUseCase(
  1. String pathPage,
  2. String pageName,
  3. String apiName,
  4. String method,
  5. bool bodyList,
  6. bool responseList,
)

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