generate method

Future<void> generate(
  1. List<SupabaseTableInfo> tables
)

Generates the Dart models file.

Implementation

Future<void> generate(List<SupabaseTableInfo> tables) async {
  if (!config.generateModels) {
    _logger.info('Model generation is disabled in config. Skipping.');
    return;
  }

  _buildTableMap(tables);
  _preprocessRelations(tables);

  final outputFileName =
      config.modelsFileName; // Assuming this exists in config
  final outputFilePath = p.join(config.outputDirectory, outputFileName);
  final buffer = StringBuffer();

  _writeHeader(buffer);

  for (final table in tables) {
    // Skip junction tables if needed (optional, depends on desired output)
    // if (_isJunctionTable(table)) continue;
    _generateModelClass(buffer, table);
    buffer.writeln(); // Add space between classes
  }

  try {
    final file = File(outputFilePath);
    await file.parent.create(recursive: true);
    await file.writeAsString(buffer.toString());
    _logger.info('Generated models file: $outputFilePath');
  } catch (e) {
    _logger.severe('Error writing models file $outputFilePath: $e');
  }
}