...
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