generateRepositoryImplementation method

String generateRepositoryImplementation(
  1. String name
)

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