in analytics-hub/snippets/create_listing_golang/main.go [176:216]
func create_or_get_exchange(ctx context.Context, client *analyticshub.Client, projectID, location, exchangeID string, isDCR bool) (*analyticshubpb.DataExchange, error) {
req := &analyticshubpb.GetDataExchangeRequest{
Name: fmt.Sprintf("projects/%s/locations/%s/dataExchanges/%s", projectID, location, exchangeID),
}
resp, err := client.GetDataExchange(ctx, req)
if err != nil {
println(err.Error())
// Default: create regular Data Exchange / DefaultExchangeConfig
sharingEnvironmentConfig := &analyticshubpb.SharingEnvironmentConfig{
Environment: &analyticshubpb.SharingEnvironmentConfig_DefaultExchangeConfig_{},
}
exTitleTag := "Data Exchange"
// if DataCleanRoom: create a Data Clean Room Data Exchange / DcrExchangeConfig
if isDCR {
sharingEnvironmentConfig = &analyticshubpb.SharingEnvironmentConfig{
Environment: &analyticshubpb.SharingEnvironmentConfig_DcrExchangeConfig_{},
}
exTitleTag = "Data Clean Room"
}
req := &analyticshubpb.CreateDataExchangeRequest{
Parent: fmt.Sprintf("projects/%s/locations/%s", projectID, location),
DataExchangeId: exchangeID,
DataExchange: &analyticshubpb.DataExchange{
DisplayName: fmt.Sprintf("Example %s - created using golang API", exTitleTag),
Description: fmt.Sprintf("Example %s - created using golang API", exTitleTag),
PrimaryContact: "",
Documentation: "https://link.to.optional.documentation/",
SharingEnvironmentConfig: sharingEnvironmentConfig,
},
}
resp, err := client.CreateDataExchange(ctx, req)
if err != nil {
println(err.Error())
return nil, err
} else {
return resp, nil
}
} else {
return resp, nil
}
}