generate method

dynamic generate()

Implementation

generate() async {
  final className = module.modelName.pascalCase;
  final filenameModel = module.modelName.toLowerCaseWithUnderscore();
  final filename = module.name.toLowerCaseWithUnderscore();

  var baseDir = Directory("./lib/modules/$filename/data");
  if (await baseDir.exists()) {
    baseDir.createSync(recursive: true);
  }

  String variableName = "";
  String constructorVar = "";
  String toMapVar = "";
  String fromMapVar = "";
  String toStringVar = "";

  for (final field in module.fields!) {
    variableName += "final ${field.type} ${field.name.camelCase};\n\t";
    constructorVar += "required this.${field.name.camelCase},\n\t\t";
    toMapVar +=
        "'${field.name.toLowerCaseWithUnderscore()}': ${field.name.camelCase},\n\t\t\t";

    fromMapVar +=
        "${field.name.camelCase}: map['${field.name.toLowerCaseWithUnderscore()}'] ?? ${field.type != 'String' ? 0 : '\'\''},\n\t\t\t";

    toStringVar += "${field.name.camelCase}: \$${field.name.camelCase},";
  }

  variableName += "DateTime? createdAt;\n\t";
  variableName += "DateTime? updatedAt;\n\t";
  variableName += "DateTime? deletedAt;\n\t";

  constructorVar += "this.createdAt,\n\t\t";
  constructorVar += "this.updatedAt,\n\t\t";
  constructorVar += "this.deletedAt,\n\t\t";

  toMapVar += "'created_at': createdAt,\n\t\t\t";
  toMapVar += "'updated_at': updatedAt,\n\t\t\t";
  toMapVar += "'deleted_at': deletedAt,\n\t\t\t";

  fromMapVar += "createdAt : DateTime.tryParse(map['created_at'] ?? ''),";
  fromMapVar += "updatedAt : DateTime.tryParse(map['updated_at'] ?? ''),";
  fromMapVar += "deletedAt : DateTime.tryParse(map['deleted_at'] ?? ''),";

  String template = modelTemplate();
  template = template.replaceAll('@ClassName', className);
  template = template.replaceAll('@variableName', variableName);
  template = template.replaceAll('@constructorVar', constructorVar);
  template = template.replaceAll('@toMapVar', toMapVar);
  template = template.replaceAll('@fromMapVar', fromMapVar);
  template = template.replaceAll('@toStringVar', toStringVar);
  template = template.replaceAll('@filenameModel', filenameModel);
  template = template.replaceAll('@filename', filename);

  final file = File('${baseDir.path}/$filenameModel.dart');
  if (!force && file.existsSync()) {
    print('File model ${file.path} is exists');
    return;
  }
  File(file.path).createSync(recursive: true);
  file.writeAsStringSync(template);
  print('File model ${file.path} created');
}