createRepositoryFiles method
void
createRepositoryFiles(
- String featureName,
- String basePath
)
Implementation
void createRepositoryFiles(String featureName, String basePath) {
final snakeCaseName = toSnakeCase(featureName);
final classNamePrefix =
featureName[0].toUpperCase() + featureName.substring(1);
final packageName = getPackageName(basePath);
// Domain repository interface
final repositoryFile =
File('$basePath/domain/repositories/${snakeCaseName}_repository.dart');
if (!repositoryFile.existsSync()) {
repositoryFile.writeAsStringSync('''
import 'package:dartz/dartz.dart';
import 'package:$packageName/core/error/failures.dart';
import 'package:$packageName/features/$featureName/domain/entities/$snakeCaseName.dart';
abstract class ${classNamePrefix}Repository {
Future<Either<Failure, $classNamePrefix>> get$classNamePrefix();
}
''');
print('Created repository interface: ${snakeCaseName}_repository.dart');
}
// Data repository implementation
final repositoryImplFile = File(
'$basePath/data/repositories/${snakeCaseName}_repository_impl.dart');
if (!repositoryImplFile.existsSync()) {
repositoryImplFile.writeAsStringSync('''
import 'package:dartz/dartz.dart';
import 'package:$packageName/core/error/failures.dart';
import 'package:$packageName/features/$featureName/data/datasources/${snakeCaseName}_datasource.dart';
import 'package:$packageName/features/$featureName/domain/entities/$snakeCaseName.dart';
import 'package:$packageName/features/$featureName/domain/repositories/${snakeCaseName}_repository.dart';
class ${classNamePrefix}RepositoryImpl implements ${classNamePrefix}Repository {
final ${classNamePrefix}Datasource datasource;
${classNamePrefix}RepositoryImpl(this.datasource);
@override
Future<Either<Failure, $classNamePrefix>> get$classNamePrefix() async {
try {
final result = await datasource.get$classNamePrefix();
return Right(result.toEntity());
} on Exception {
return Left(ServerFailure(message: "Something went wrong!"));
}
}
}
''');
print(
'Created repository implementation: ${snakeCaseName}_repository_impl.dart');
}
}