generate method
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');
}
}