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
}