performGenerate function

Future<List<String>> performGenerate({
  1. required PostgreSQLConnection postgresConnection,
  2. required String packageName,
  3. String table_schema = "public",
  4. bool writeFiles = true,
})

Implementation

Future<List<String>> performGenerate({
  required PostgreSQLConnection postgresConnection,
  required String packageName,
  String table_schema = "public",
  bool writeFiles = true,
}) async {
  //hardcode directory because it should really live under lib

  if (!await Directory("lib/generatedDb").exists()) {
    await Directory("lib/generatedDb").create();
  }

  if (!await Directory("lib/generatedDb/models").exists()) {
    await Directory("lib/generatedDb/models").create();
  }

  if (!await Directory("lib/generatedDb/definitions").exists()) {
    await Directory("lib/generatedDb/definitions").create();
  }

  if (!await Directory("lib/generatedDb/db").exists()) {
    await Directory("lib/generatedDb/db").create();
  }

  // if (!await Directory("lib/generatedDb/services").exists()) {
  //   await Directory("lib/generatedDb/services").create();
  // }

  //get the list of tables from the db
  var tablesRaw = await getTablesRawFromDb(postgresConnection, table_schema);
  var tables1 = convertRawTablesToTables(tablesRaw);
  var tables = await filterTables(tables1);

  //get maps for each template
  //We've removed service file from the generated output files
  // var serviceMap = convertTablesToTemplateMap(tables, packageName, (x) => StringUtils.capitalize(x.name) + "Service.dart");
  var definitionMap = convertTablesToTemplateMap(tables, packageName, (x) => x.definitionName + ".dart");
  var modelMap = convertTablesToTemplateMap(tables, packageName, (x) => x.modelName + ".dart");
  var dbMap = convertTablesToDbMap(tables, packageName);

  // //process service template
  // var serviceTemplater = Templater(templateMain: service_template);
  // var serviceOutput = await serviceTemplater.writeFiles(
  //   "lib/generatedDb/services",
  //   serviceMap,
  //   writeFiles: writeFiles,
  // );

  //process definition template
  var definitionTemplater = Templater(
    templateMain: definition_template,
    templatesOther: {
      "propertySet_subTemplate": propertySet_subTemplate,
      "column_subTemplate": column_subTemplate,
    },
  );
  var definitionOutput = await definitionTemplater.writeFiles(
    "lib/generatedDb/definitions",
    definitionMap,
    writeFiles: writeFiles,
  );

  //process model template
  var modelTemplater = Templater(
    templateMain: model_template,
    templatesOther: {
      "modelParameters_subTemplate": modelParameters_subTemplate,
    },
  );
  var modelOutput = //
      await modelTemplater.writeFiles(
    "lib/generatedDb/models",
    modelMap,
    writeFiles: writeFiles,
  );

  //process db template
  var dbTemplater = Templater(
    templateMain: db_template,
    templatesOther: {
      "importStatementTemplate": db_importStatement_template,
      "tableNameTemplate": db_table_template,
    },
  );
  var dbOutput = //
      await dbTemplater.writeFiles(
    "lib/generatedDb/db",
    dbMap,
    writeFiles: writeFiles,
  );

  return [
    // ...serviceOutput,
    ...definitionOutput,
    ...modelOutput,
    ...dbOutput,
  ];
}