in tools/mconnect/commands/views/views.go [86:114]
func (vc *bqViewCreator) createView(ctx context.Context, metadata viewMetadata) error {
client, err := bq.NewClient(ctx, vc.projectID, option.WithUserAgent(messages.ViewsUserAgent))
if err != nil {
return fmt.Errorf("bigquery.NewClient: %v", err)
}
defer client.Close()
bqMetaData := &bq.TableMetadata{Name: metadata.name, Description: metadata.description, ViewQuery: metadata.query}
if force {
oldMetadata, err := client.Dataset(vc.datasetID).Table(metadata.name).Metadata(ctx)
if err != nil && !gapiutil.IsErrorWithCode(err, http.StatusNotFound) {
return err
}
if oldMetadata != nil {
err := client.Dataset(vc.datasetID).Table(metadata.name).Delete(ctx)
if err != nil {
return err
}
fmt.Println(messages.ViewDeleted{Name: oldMetadata.Name})
}
}
if err := client.Dataset(vc.datasetID).Table(metadata.name).Create(ctx, bqMetaData); err != nil {
return err
}
fmt.Println(messages.ViewCreated{Name: metadata.name})
return nil
}