github.com/turbot/steampipe@v1.7.0-rc.0.0.20240517123944-7cef272d4458/pkg/db/db_common/execute.go (about)

     1  package db_common
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/turbot/steampipe/pkg/query/queryresult"
     7  	"github.com/turbot/steampipe/pkg/utils"
     8  )
     9  
    10  // ExecuteQuery executes a single query. If shutdownAfterCompletion is true, shutdown the client after completion
    11  func ExecuteQuery(ctx context.Context, client Client, queryString string, args ...any) (*queryresult.ResultStreamer, error) {
    12  	utils.LogTime("db.ExecuteQuery start")
    13  	defer utils.LogTime("db.ExecuteQuery end")
    14  
    15  	resultsStreamer := queryresult.NewResultStreamer()
    16  	result, err := client.Execute(ctx, queryString, args...)
    17  	if err != nil {
    18  		return nil, err
    19  	}
    20  	go func() {
    21  		resultsStreamer.StreamResult(result)
    22  		resultsStreamer.Close()
    23  	}()
    24  	return resultsStreamer, nil
    25  }