generate method

Future<void> generate()

Implementation

Future<void> generate() async {
  if (!config.generateSupabaseSelectBuilders) {
    _logger.info('Supabase select builder generation is disabled. Skipping.');
    return;
  }
  if (_allTables.isEmpty) {
    _logger.warning(
      'No table information provided. Skipping select builder generation.',
    );
    return;
  }

  _logger.info('Starting Supabase select builder class generation...');

  // Generate and write the schema Dart file
  final schemaDartFileContent = _generateSchemaDartFileContent();
  final schemaDartFilePath = '${config.generatedSupabaseSchemaDartFilePath}';
  _logger.info('Writing Supabase schema Dart file to $schemaDartFilePath');
  try {
    await _writeFile(schemaDartFilePath, schemaDartFileContent);
    _logger.info(
      'Successfully generated Supabase schema Dart file: $schemaDartFilePath',
    );
  } catch (e, s) {
    _logger.severe(
      'Failed to write Supabase schema Dart file to $schemaDartFilePath: $e, $s',
    );
    // Optionally rethrow or handle if this is critical
  }

  // Generate and write the select builders file
  final builderFileContent = _generateBuilderFileContent();
  final builderFilePath = config.supabaseSelectBuildersFilePath;

  try {
    await _writeFile(builderFilePath, builderFileContent);
    _logger.info(
      'Successfully generated Supabase select builders file: $builderFilePath',
    );
  } catch (e, s) {
    _logger.severe(
      'Failed to write Supabase select builders file to $builderFilePath: $e, $s',
    );
  }
}