generateDataRepository function

Future<void> generateDataRepository(
  1. String args
)

Implementation

Future<void> generateDataRepository(String args) async {
  /// Definisikan nama file yang akan digenerate

  String underscore = toUnderscore(args);
  String directoryName = "lib/data/$args/repository/";
  await checkDirectoryAvailable(directoryName);
  String fileName = "$directoryName${args}_repository.dart";
  String className = toCamelCase(underscore);
  String varName = toCamelCaseVar(underscore);

  /// Definisikan kode yang akan digenerate ke dalam file
  String code = '''
    import 'package:get/get.dart';

    import '../datasource/${underscore}_datasource.dart';
    import '../model/${underscore}_model.dart';
    import '../../../domain/$underscore/repository/${underscore}_repository_interface.dart';

    class ${className}Repository implements I${className}Repository {
      final ${className}DataSource _${varName}DataSource = Get.find<${className}DataSource>();

      // comment this code if your response data is single
      // BEGIN
      @override
      Future<List<Data>> get$className() async {
        final response = await _${varName}DataSource.get${className}s();

        if (response.statusCode == 200) {
          final List<dynamic> ${varName}sJson = response.body['data'];
          return ${varName}sJson.map((json) {
            return Data.fromJson(json);
          }).toList();
        } else {
          throw Exception('Failed to load ${varName}s');
        }
      }
      // END

      // =================================================================

      // comment this code if your response data is Multiple
      // BEGIN
      @override
      Future<Data> get${className}By(String data) async {
        final response = await _${varName}DataSource.get${className}By(data);

        if (response.statusCode == 200) {
          final dataJson = response.body;
          return Data.fromJson(dataJson);
        } else {
          throw Exception('Failed to load $varName');
        }
      }
      // END

    }
  ''';

  // Generate kode ke dalam file
  File file = File(fileName);
  file.writeAsString(code);

  // Tampilkan pesan sukses
  print("Code generated successfully in $fileName");
}