...

Source file src/edge-infra.dev/hack/tools/cleaner/sql.go

Documentation: edge-infra.dev/hack/tools/cleaner

     1  package main
     2  
     3  import (
     4  	"context"
     5  	"database/sql"
     6  )
     7  
     8  const (
     9  	getAllBanners        = "SELECT banner_name, project_id, banner_edge_id FROM banners"
    10  	getAllBannerClusters = "SELECT cluster_name, cluster_edge_id FROM clusters WHERE banner_edge_id = $1 AND deleted = false;"
    11  )
    12  
    13  type Provider struct {
    14  	db *sql.DB
    15  }
    16  
    17  func New(db *sql.DB) *Provider {
    18  	return &Provider{db: db}
    19  }
    20  
    21  func (p Provider) Banners(ctx context.Context) ([]Banner, error) {
    22  	banners := make([]Banner, 0)
    23  	rows, err := p.db.QueryContext(ctx, getAllBanners)
    24  	if err != nil {
    25  		return banners, err
    26  	}
    27  	for rows.Next() {
    28  		banner := Banner{}
    29  		if err := rows.Scan(&banner.Name, &banner.ProjectID, &banner.BannerEdgeID); err != nil {
    30  			return banners, err
    31  		}
    32  		clusterRows, err := p.db.QueryContext(ctx, getAllBannerClusters, banner.BannerEdgeID)
    33  		if err != nil {
    34  			return banners, err
    35  		}
    36  		for clusterRows.Next() {
    37  			cluster := Cluster{}
    38  			if err := clusterRows.Scan(&cluster.Name, &cluster.ClusterEdgeID); err != nil {
    39  				return banners, err
    40  			}
    41  			banner.Clusters = append(banner.Clusters, cluster)
    42  		}
    43  		banners = append(banners, banner)
    44  	}
    45  	return banners, nil
    46  }
    47  

View as plain text