bigqueryquerier.go 997 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package gcp
  2. import (
  3. "context"
  4. "cloud.google.com/go/bigquery"
  5. "github.com/opencost/opencost/pkg/cloud"
  6. cloudconfig "github.com/opencost/opencost/pkg/cloud/config"
  7. )
  8. type BigQueryQuerier struct {
  9. BigQueryConfiguration
  10. ConnectionStatus cloud.ConnectionStatus
  11. }
  12. func (bqq *BigQueryQuerier) GetStatus() cloud.ConnectionStatus {
  13. return bqq.ConnectionStatus
  14. }
  15. func (bqq *BigQueryQuerier) Equals(config cloudconfig.Config) bool {
  16. thatConfig, ok := config.(*BigQueryQuerier)
  17. if !ok {
  18. return false
  19. }
  20. return bqq.BigQueryConfiguration.Equals(&thatConfig.BigQueryConfiguration)
  21. }
  22. func (bqq *BigQueryQuerier) Query(ctx context.Context, queryStr string) (*bigquery.RowIterator, error) {
  23. err := bqq.Validate()
  24. if err != nil {
  25. bqq.ConnectionStatus = cloud.InvalidConfiguration
  26. return nil, err
  27. }
  28. client, err := bqq.GetBigQueryClient(ctx)
  29. if err != nil {
  30. bqq.ConnectionStatus = cloud.FailedConnection
  31. return nil, err
  32. }
  33. query := client.Query(queryStr)
  34. return query.Read(ctx)
  35. }