generateDartClasses function

List<DartClass> generateDartClasses(
  1. DatabaseSwagger swagger,
  2. YamlMap? mappings,
  3. List<String> exclude
)

Implementation

List<DartClass> generateDartClasses(
  DatabaseSwagger swagger,
  YamlMap? mappings,
  List<String> exclude,
) {
  return swagger.definitions.entries.map((entry) {
    final tableName = entry.key;
    final table = entry.value;
    final className = tableNameToClassName(tableName, mappings);

    final code = StringBuffer()
      ..writeln('class $className implements SupadartClass<$className> {')
      ..write(generateAttributes(table))
      ..write(generateConstructor(className, table))
      ..writeln("static String get table_name => '$tableName';")
      ..write(generateStaticColumnNames(table))
      ..write(generateConverterMethod(className))
      ..write(generateConverterSingleMethod(className))
      ..write(generateGenerateMapPrivateMethod(table))
      ..write(generateInsertMethod(table))
      ..write(generateUpdateMethod(table))
      ..write(generateFromJsonMethod(className, table));
    if (!exclude.contains('toJson')) {
      code.write(generateToJsonMethod(className, table));
    }
    if (!exclude.contains('copyWith')) {
      code.write(generateCopyWithMethod(className, table));
    }
    code.writeln('}');
    code.writeln();

    return DartClass(
      className: className,
      classCode: code.toString(),
    );
  }).toList();
}