in analytics-hub/snippets/create_listing_golang/main.go [407:442]
func bq_dataset_add_authorization(ctx context.Context, client *bigquery.Client, projectID string, datasetID string, tableID string) error {
ds := client.DatasetInProject(projectID, datasetID)
dsMetadata, err := ds.Metadata(ctx)
if err == nil {
dsMetadataToUpdate := &bigquery.DatasetMetadataToUpdate{}
dsMetadataToUpdate.Access = append(dsMetadataToUpdate.Access, dsMetadata.Access...)
needsUpdate := true
for _, bqAccess := range dsMetadataToUpdate.Access {
if bqAccess.EntityType == bigquery.ViewEntity &&
bqAccess.View.ProjectID == projectID &&
bqAccess.View.DatasetID == datasetID &&
bqAccess.View.TableID == tableID {
needsUpdate = false
}
}
if needsUpdate {
dsMetadataToUpdate.Access = append(dsMetadataToUpdate.Access,
&bigquery.AccessEntry{
EntityType: bigquery.ViewEntity,
View: &bigquery.Table{
ProjectID: projectID,
DatasetID: datasetID,
TableID: tableID,
},
})
_, err := ds.Update(ctx, *dsMetadataToUpdate, dsMetadata.ETag)
if err != nil {
println(err)
return err
}
}
return nil
} else {
return err
}
}