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
}