listControllers method

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

List all controllers

Implementation

Future<Map<String, dynamic>> listControllers(
  Map<String, dynamic> params,
) async {
  try {
    final controllers = await _scanner.findControllers();
    final includeDetails = params['includeDetails'] as bool? ?? false;

    final controllerList = <Map<String, dynamic>>[];

    for (final controller in controllers) {
      final relativePath = FileUtils.getRelativePath(projectRoot, controller);
      final classInfo = await CodeParser.extractClassInfo(controller);

      final controllerData = <String, dynamic>{
        'path': relativePath,
        'absolutePath': controller,
      };

      if (includeDetails && classInfo != null) {
        controllerData['className'] = classInfo.name;
        controllerData['annotations'] = classInfo.annotations;

        final routes = await CodeParser.extractRoutes(controller);
        controllerData['routes'] = routes.map((r) => r.toJson()).toList();
      }

      controllerList.add(controllerData);
    }

    return {
      'success': true,
      'count': controllerList.length,
      'controllers': controllerList,
    };
  } catch (e) {
    return {
      'success': false,
      'error': e.toString(),
    };
  }
}