func runDeleteComments()

in cmd/delete_comments.go [37:109]


func runDeleteComments(cmd *cobra.Command, args []string) error {
	dbConfig := database.GetConfig()
	if dbConfig == nil {
		return fmt.Errorf("database config is not initialized")
	}

	if err := validateDialect(dialect); err != nil {
		return err
	}

	outputFile := cmd.Flag("out_file").Value.String()
	if outputFile == "" {
		outputFile = utils.GetDefaultOutputFilePath(dbConfig.DBName, "delete-comments")
	}

	log.Println("INFO: Starting delete-comments operation", "dialect:", dbConfig.Dialect, "database:", dbConfig.DBName)

	db, err := setupDatabase()
	if err != nil {
		return err
	}
	defer db.Close()

	metadataCollector := enricher.NewMetadataCollector(db, &enricher.DefaultRetryOptions, dryRun, geminiAPIKey, "", "")

	ctx := cmd.Context()

	tablesFlag := cmd.Flag("tables").Value.String()
	tableFilters, err := utils.ParseTablesFlag(tablesFlag)
	if err != nil {
		return err
	}
	metadataCollector.TableFilters = tableFilters

	sqlStatements, err := metadataCollector.GenerateDeleteCommentSQLs(ctx)
	if err != nil {
		return fmt.Errorf("metadata collection and SQL generation for delete comments failed: %w", err)
	}

	file, createErr := os.Create(outputFile)
	if createErr != nil {
		return fmt.Errorf("failed to create output file: %w", createErr)
	}
	defer file.Close()

	for _, sqlStmt := range sqlStatements {
		if _, writeErr := file.WriteString(sqlStmt + "\n"); writeErr != nil {
			return fmt.Errorf("failed to write SQL statement to file: %w", writeErr)
		}
	}
	log.Println("INFO: SQL statements to delete column comments have been written to:", outputFile)

	if dryRun {
		log.Println("INFO: No comments were actually deleted in dry-run mode. Run apply-comments to delete comments.")
		return nil
	}

	if len(sqlStatements) > 0 {
		if utils.ConfirmAction("SQL statements to delete column comments") {
			if execErr := db.ExecuteSQLStatements(ctx, sqlStatements); execErr != nil {
				return fmt.Errorf("failed to execute SQL statements to delete comments: %w", execErr)
			}
			log.Println("INFO: Successfully deleted gemini comments from the database.")
		} else {
			log.Println("INFO: Comment deletion aborted by user.")
		}
	} else {
		log.Println("INFO: No gemini comments found to delete.")
	}

	log.Println("INFO: Delete comments operation completed, dry_run:", dryRun)
	return nil
}