func()

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
}