generate static method

String generate(
  1. FeatureSchema schema
)

Generates the complete source code for the API Service file.

Implementation

static String generate(FeatureSchema schema) {
  final featureName = schema.name;
  final functions = schema.functions;
  final camelName = FileWriter.toCamelCase(
    FileWriter.toSnakeCase(featureName),
  );
  final className = '${camelName}ApiService';

  final urlConstants = _generateUrlConstants(functions);
  final requestMethods = _generateRequestMethods(functions);
  final modelImports = _generateModelImports(functions);

  final baseResponseImport =
      schema.globalConfig.imports['base_response'] ?? '';
  final baseResponseImportLine = baseResponseImport.isNotEmpty
      ? "import '$baseResponseImport';"
      : "";

  return '''import 'package:dio/dio.dart';
import 'package:retrofit/retrofit.dart';
$baseResponseImportLine
$modelImports

part '${FileWriter.toSnakeCase(featureName)}_api_service.g.dart';

@RestApi()
abstract class $className {
factory $className(Dio dio, {String baseUrl, ParseErrorLogger? errorLogger}) = _$className;

/// URL Endpoints
$urlConstants

/// Request Methods
$requestMethods
}
''';
}