generate static method

String generate(
  1. String snakeName,
  2. String pascalName
)

Implementation

static String generate(String snakeName, String pascalName) {
  return '''import 'package:core/core.dart';
import '../models/${snakeName}_model.dart';

/// Remote data source for ${pascalName}
/// Handles API communication for ${snakeName} operations
class ${pascalName}RemoteDataSource {
final DioClient dioClient;

${pascalName}RemoteDataSource(this.dioClient);

/// Fetch ${snakeName} by ID from API
Future<${pascalName}Model> get${pascalName}(String id) async {
  try {
    final response = await dioClient.get('/${snakeName}s/\$id');
    return ${pascalName}Model.fromJson(response.data);
  } catch (e) {
    rethrow;
  }
}

/// Fetch all ${snakeName}s from API
Future<List<${pascalName}Model>> getAll() async {
  try {
    final response = await dioClient.get('/${snakeName}s');
    final List<dynamic> data = response.data as List;
    return data.map((json) => ${pascalName}Model.fromJson(json)).toList();
  } catch (e) {
    rethrow;
  }
}

/// Create new ${snakeName} via API
Future<${pascalName}Model> create${pascalName}(${pascalName}Model ${snakeName}) async {
  try {
    final response = await dioClient.post(
      '/${snakeName}s',
      data: ${snakeName}.toJson(),
    );
    return ${pascalName}Model.fromJson(response.data);
  } catch (e) {
    rethrow;
  }
}

/// Update existing ${snakeName} via API
Future<${pascalName}Model> update${pascalName}(${pascalName}Model ${snakeName}) async {
  try {
    final response = await dioClient.put(
      '/${snakeName}s/\${${snakeName}.id}',
      data: ${snakeName}.toJson(),
    );
    return ${pascalName}Model.fromJson(response.data);
  } catch (e) {
    rethrow;
  }
}

/// Delete ${snakeName} via API
Future<void> delete${pascalName}(String id) async {
  try {
    await dioClient.delete('/${snakeName}s/\$id');
  } catch (e) {
    rethrow;
  }
}
}
''';
}