getRepositoryImplTemplate method
String
getRepositoryImplTemplate(
)
Implementation
String getRepositoryImplTemplate() {
return '''
import '../../domain/repositories/${featureName}_repository.dart';
import '../datasources/${featureName}_remote_datasource.dart';
import '../datasources/${featureName}_local_datasource.dart';
import '../models/${featureName}_model.dart';
import '../../domain/entities/${featureName}_entity.dart';
class ${className}RepositoryImpl implements ${className}Repository {
final ${className}RemoteDataSource remoteDataSource;
final ${className}LocalDataSource localDataSource;
${className}RepositoryImpl(
this.remoteDataSource,
this.localDataSource,
);
@override
Future<${className}Entity> fetchData() async {
try {
final model = await remoteDataSource.fetchData();
await localDataSource.cacheData(model);
return _modelToEntity(model);
} catch (e) {
final cachedModel = await localDataSource.fetchCachedData();
if (cachedModel != null) {
return _modelToEntity(cachedModel);
}
rethrow;
}
}
${className}Entity _modelToEntity(${className}Model model) {
return ${className}Entity(
id: model.id,
${useFreezed ? '''name: model.name,
description: model.description,''' : ''}
);
}
}
''';
}