modifyRepositoryFile function
void
modifyRepositoryFile(
- Map<String, dynamic> modelConfig
)
Implementation
void modifyRepositoryFile(Map<String, dynamic> modelConfig) {
final functionName = modelConfig['function_name'];
final parameters = modelConfig['parameters'];
final modelClassRelativePath = modelConfig['model_class_relative_path'];
final modelDirectory = path.dirname(modelClassRelativePath);
final repositoryDirectory = path.join(modelDirectory, '..', 'repository');
final repositoryFileName = '${_getFileNameWithoutExtension(modelClassRelativePath).toLowerCase()}_repository.dart';
final repositoryPath = path.join(repositoryDirectory, repositoryFileName);
final repositoryFile = File(repositoryPath);
if (!repositoryFile.existsSync()) {
print('Repository file not found at $repositoryPath.');
return;
}
final repositoryContent = repositoryFile.readAsStringSync();
print('Current repository content:\n$repositoryContent'); // Debug print
if (!repositoryContent.contains('$functionName({')) {
final functionParameters = parameters.entries
.map((entry) => 'required ${_getType(entry.value)} ${_toCamelCase(entry.key)}')
.join(', ');
final modelClassName = _toCamelCase(_getFileNameWithoutExtension(modelClassRelativePath));
final newFunction = '''
Future<$modelClassName?> $functionName({$functionParameters});
''';
final updatedContent = repositoryContent.replaceFirstMapped(
RegExp(r'(abstract class\s+\w+Repository\s*{)'),
(match) => '${match.group(0)}\n$newFunction',
);
print('Updated repository content:\n$updatedContent'); // Debug print
repositoryFile.writeAsStringSync(updatedContent);
print('Repository file updated successfully: $repositoryPath');
} else {
print('Function $functionName already exists in repository.');
}
}