generateRepositoryImplementation method
Implementation
String generateRepositoryImplementation(String name) {
final className = toPascalCase(name);
return '''
import '../../domain/entities/${toSnakeCase(name)}_entity.dart';
import '../../domain/repositories/${toSnakeCase(name)}_repository.dart';
import '../datasources/${toSnakeCase(name)}_remote_data_source.dart';
import '../models/${toSnakeCase(name)}_model.dart';
class ${className}RepositoryImpl implements ${className}Repository {
const ${className}RepositoryImpl(this._remoteDataSource);
final ${className}RemoteDataSource _remoteDataSource;
@override
Future<List<${className}Entity>> getAll() async {
final models = await _remoteDataSource.getAll();
return models.map((model) => model.toEntity()).toList();
}
@override
Future<${className}Entity?> getById(String id) async {
final model = await _remoteDataSource.getById(id);
return model?.toEntity();
}
@override
Future<${className}Entity> create(${className}Entity entity) async {
final model = ${className}Model(
id: entity.id,
// Map your properties here
);
final createdModel = await _remoteDataSource.create(model);
return createdModel.toEntity();
}
@override
Future<${className}Entity> update(${className}Entity entity) async {
final model = ${className}Model(
id: entity.id,
// Map your properties here
);
final updatedModel = await _remoteDataSource.update(model);
return updatedModel.toEntity();
}
@override
Future<void> delete(String id) async {
await _remoteDataSource.delete(id);
}
}
''';
}