func()

in bigquery/main.go [159:193]


func (n *bqNotifier) SetUp(ctx context.Context, cfg *notifiers.Config, bigQueryJson string, _ notifiers.SecretGetter, br notifiers.BindingResolver) error {
	prd, err := notifiers.MakeCELPredicate(cfg.Spec.Notification.Filter)
	if err != nil {
		return fmt.Errorf("failed to make a CEL predicate: %v", err)
	}
	parsed, ok := cfg.Spec.Notification.Delivery["table"].(string)
	if !ok {
		return fmt.Errorf("expected table string: %v", cfg.Spec.Notification.Delivery)
	}

	// Initialize client
	n.filter = prd
	n.client, err = n.bqf.Make(ctx)
	if err != nil {
		return fmt.Errorf("failed to initialize bigquery client: %v", err)
	}

	// Extract dataset id and table id from config
	rs := tableResource.FindStringSubmatch(parsed)
	if len(rs) != 3 {
		return fmt.Errorf("failed to parse valid table URI: %v", parsed)
	}
	if err = n.client.EnsureDataset(ctx, rs[1]); err != nil {
		return err
	}
	if err = n.client.EnsureTable(ctx, rs[2]); err != nil {
		return err
	}

	tmpl, err := template.New("bq_json_template").Parse(bigQueryJson)
	n.tmpl = tmpl
	n.br = br

	return nil
}