createDomainRepository method
void
createDomainRepository()
Implementation
void createDomainRepository(
String pathPage,
String pageName,
String apiName,
String method,
bool bodyList,
bool responseList,
) {
final apiClassName = apiName.pascalCase;
final apiMethodName = apiName.camelCase;
final path = join(pathPage, 'domain', 'repositories');
DirectoryHelper.createDir(path);
final bodyClass = getBodyClass(apiClassName, bodyList);
final entityClass = getEntityClass(apiClassName, responseList);
if (!exists(join(path, '${pageName}_repository.dart'))) {
join(path, '${pageName}_repository.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';''' : ''}
abstract class ${pageName.pascalCase}Repository {
${flutterClassOfMethod(method)}<Either<MorphemeFailure, $entityClass>> $apiMethodName($bodyClass body,{Map<String, String>? headers, ${isApplyCacheStrategy(method) ? 'CacheStrategy? cacheStrategy,' : ''}});
}''');
} else {
String data =
File(join(path, '${pageName}_repository.dart')).readAsStringSync();
final isNeedImportTypeData = returnData == 'body_bytes' &&
!RegExp(r'''import 'dart:typed_data';''').hasMatch(data);
if (isNeedImportTypeData) {
data = '''import 'dart:typed_data';
$data''';
}
data = data.replaceAll(
RegExp(r"import\s?'package:core\/core.dart';\n?\n?", multiLine: true),
'''import 'package:core/core.dart';
import '../../data/models/body/${apiName}_body.dart';
${isReturnDataModel ? '''import '../entities/${apiName}_entity.dart';''' : ''}''');
data = data.replaceAll(RegExp(r'}$', multiLine: true),
''' ${flutterClassOfMethod(method)}<Either<MorphemeFailure, $entityClass>> $apiMethodName($bodyClass body,{Map<String, String>? headers, ${isApplyCacheStrategy(method) ? 'CacheStrategy? cacheStrategy,' : ''}});
}''');
join(path, '${pageName}_repository.dart').write(data);
}
StatusHelper.generated(join(path, '${pageName}_repository.dart'));
}