/** * Copyright 2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ locals { prefix = var.prefix == null || var.prefix == "" ? "" : "${var.prefix}_" _factory_listings = { for f in try(fileset(var.factories_config.listings, "*.yaml"), []) : trimsuffix(f, ".yaml") => yamldecode( file("${var.factories_config.listings}/${f}") ) } factory_listings = merge(local._factory_listings, var.listings) } resource "google_bigquery_analytics_hub_data_exchange" "data_exchange" { project = var.project_id location = var.region data_exchange_id = "${local.prefix}${var.name}" display_name = "${local.prefix}${var.name}" description = var.description primary_contact = var.primary_contact documentation = var.documentation icon = var.icon } resource "google_bigquery_analytics_hub_listing" "listing" { for_each = local.factory_listings project = var.project_id location = var.region data_exchange_id = google_bigquery_analytics_hub_data_exchange.data_exchange.data_exchange_id listing_id = each.key display_name = each.key description = try(each.value.description, null) primary_contact = try(each.value.primary_contact, null) documentation = try(each.value.documentation, null) icon = try(each.value.icon, null) request_access = try(each.value.request_access, null) categories = try(each.value.categories, null) bigquery_dataset { dataset = each.value.bigquery_dataset } dynamic "restricted_export_config" { for_each = each.value.restricted_export_config != null ? [""] : [] content { enabled = try(each.value.restricted_export_config.enabled, null) restrict_query_result = try(each.value.restricted_export_config.restrict_query_result, null) } } }