func()

in bigquery/main.go [333:358]


func (bq *actualBQ) EnsureTable(ctx context.Context, tableName string) error {
	// Check for existence of table, create if false
	bq.table = bq.dataset.Table(tableName)
	schema, err := bigquery.InferSchema(bqRow{})
	if err != nil {
		return fmt.Errorf("failed to infer schema: %v", err)
	}
	metadata, err := bq.dataset.Table(tableName).Metadata(ctx)
	if err != nil {
		log.Warningf("Error obtaining table metadata: %q;Creating new BigQuery table: %q", err, tableName)
		// Create table if it does not exist.
		if err := bq.table.Create(ctx, &bigquery.TableMetadata{Name: tableName, Description: "BigQuery Notifier Build Data Table", Schema: schema}); err != nil {
			return fmt.Errorf("failed to initialize table %v: ", err)
		}
	} else if len(metadata.Schema) == 0 {
		log.Warningf("No schema found for table, writing new schema for table: %v", tableName)
		update := bigquery.TableMetadataToUpdate{
			Schema: schema,
		}
		if _, err := bq.table.Update(ctx, update, metadata.ETag); err != nil {
			return fmt.Errorf("error: unable to update schema of table: %v", err)
		}
	}

	return nil
}