createConfiguration method

Future<Map<String, dynamic>> createConfiguration(
  1. Map<String, dynamic> params
)

Create configuration

Implementation

Future<Map<String, dynamic>> createConfiguration(
  Map<String, dynamic> params,
) async {
  try {
    final className = params['className'] as String;
    final type = params['type'] as String? ?? 'generic';
    final customPath = params['filePath'] as String?;

    // Generate configuration code based on type
    String code;
    switch (type) {
      case 'openapi':
        code = ConfigurationTemplate.generateOpenApiConfiguration();
        break;
      case 'database':
        code = ConfigurationTemplate.generateDatabaseConfiguration();
        break;
      case 'security':
        code = ConfigurationTemplate.generateSecurityConfiguration();
        break;
      default:
        code = ConfigurationTemplate.generateConfiguration(
          className: className,
        );
    }

    // Determine file path
    final fileName = '${_toSnakeCase(className)}.dart';
    final filePath =
        customPath ?? p.join(projectRoot, 'lib', 'config', fileName);

    // Ensure directory exists
    await FileUtils.ensureDirectory(p.dirname(filePath));

    // Check if file exists
    if (await FileUtils.fileExists(filePath)) {
      return {
        'success': false,
        'error': 'File already exists: $filePath',
      };
    }

    // Write file
    await FileUtils.writeFile(filePath, code);

    return {
      'success': true,
      'message': 'Configuration created successfully',
      'filePath': FileUtils.getRelativePath(projectRoot, filePath),
      'absolutePath': filePath,
    };
  } catch (e) {
    return {
      'success': false,
      'error': e.toString(),
    };
  }
}