generate/resources/_bigquery.py (80 lines of code) (raw):
# 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.
from cdktf_cdktf_provider_google.bigquery_dataset import (
BigqueryDataset,
BigqueryDatasetAccess,
)
from cdktf_cdktf_provider_google.bigquery_table import (
BigqueryTable,
BigqueryTableTableConstraintsForeignKeys,
BigqueryTableExternalDataConfigurationBigtableOptionsColumnFamily,
BigqueryTableExternalDataConfigurationBigtableOptionsColumnFamilyColumn,
)
from cdktf_cdktf_provider_google.bigquery_routine import (
BigqueryRoutine,
BigqueryRoutineArguments,
)
def create_bq_dataset(self, dataset):
"create dataset"
dataset_name = dataset["dataset_id"]
dataset["project"] = self.tf_ref("project", dataset["project"])
for access in dataset.get("access", []):
if access.get("dataset_id"):
access["dataset_id"] = self.tf_ref("bq_dataset", access["dataset_id"])
if access.get("project_id"):
access["project_id"] = self.tf_ref("bq_project", access["project_id"])
if access.get("routine_id"):
access["routine_id"] = self.tf_ref("bq_routine", access["routine_id"])
self.tf_param_list(dataset, "access", BigqueryDatasetAccess)
self.created["bq_dataset"][dataset_name] = BigqueryDataset(
self, f"bqd_{dataset_name}", **dataset
)
def create_bq_table(self, bqt):
"create bqt"
bqt_name = bqt["table_id"]
bqt["dataset_id"] = self.tf_ref("dataset_id", bqt["dataset_id"])
bqt["project"] = self.tf_ref("project", bqt["project"])
if bqt.get("table_constraints", {}):
self.tf_param_list(
bqt["table_constraints"],
"foreign_keys",
BigqueryTableTableConstraintsForeignKeys,
)
bigtable_option = bqt.get("external_data_configuration", {}).get(
"bigtable_options", {}
)
for btcf in bigtable_option.get("column_family", []):
self.tf_param_list(
btcf,
"column",
BigqueryTableExternalDataConfigurationBigtableOptionsColumnFamilyColumn,
)
self.tf_param_list(
bigtable_option,
"column_family",
BigqueryTableExternalDataConfigurationBigtableOptionsColumnFamily,
)
self.created["bq_table"][bqt_name] = BigqueryTable(self, f"bqt_{bqt_name}", **bqt)
def create_bq_routine(self, bqr):
"create bqr"
bqr_name = bqr["routine_id"]
bqr["dataset_id"] = self.tf_ref("dataset_id", bqr["dataset_id"])
bqr["project"] = self.tf_ref("project", bqr["project"])
self.tf_param_list(
bqr,
"arguments",
BigqueryRoutineArguments,
)
self.created["bq_routine"][bqr_name] = BigqueryRoutine(
self, f"bqr_{bqr_name}", **bqr
)
def generate_bigquery_dataset(self, my_resource, resource):
"create bigquery dataset"
for vm in self.eztf_config.get(my_resource, []):
create_bq_dataset(self, vm)
def generate_bigquery_table(self, my_resource, resource):
"create bigquery table"
for vm in self.eztf_config.get(my_resource, []):
create_bq_table(self, vm)
def generate_bigquery_routine(self, my_resource, resource):
"create bigquery routine"
for vm in self.eztf_config.get(my_resource, []):
create_bq_routine(self, vm)