func bq_dataset_add_authorization()

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
	}
}