#[allow(unused_imports)]
use crate::Error;
use crate::Result;
#[derive(Clone)]
pub struct DatasetService {
inner: gaxi::http::ReqwestClient,
}
impl std::fmt::Debug for DatasetService {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
f.debug_struct("DatasetService")
.field("inner", &self.inner)
.finish()
}
}
impl DatasetService {
pub async fn new(config: gaxi::options::ClientConfig) -> crate::ClientBuilderResult<Self> {
let tracing_is_enabled = gaxi::options::tracing_enabled(&config);
let inner = gaxi::http::ReqwestClient::new(config, crate::DEFAULT_HOST).await?;
let inner = if tracing_is_enabled {
inner.with_instrumentation(&super::tracing::info::INSTRUMENTATION_CLIENT_INFO)
} else {
inner
};
Ok(Self { inner })
}
}
impl super::stub::DatasetService for DatasetService {
async fn get_dataset(
&self,
req: crate::model::GetDatasetRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Dataset>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_dataset_id = try_match(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}",
var_project_id, var_dataset_id,
);
let path_template = "/bigquery/v2/projects/{project_id}/datasets/{dataset_id}";
let builder = self.inner.builder(Method::GET, path);
let builder = builder.query(&[("datasetView", &req.dataset_view)]);
let builder = builder.query(&[("accessPolicyVersion", &req.access_policy_version)]);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::GET, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.DatasetService/GetDataset")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(None::<gaxi::http::NoBody>, &method);
self.inner.execute(builder, body, options).await
}
async fn insert_dataset(
&self,
req: crate::model::InsertDatasetRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Dataset>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!("/bigquery/v2/projects/{}/datasets", var_project_id,);
let path_template = "/bigquery/v2/projects/{project_id}/datasets";
let builder = self.inner.builder(Method::POST, path);
let builder = builder.query(&[("accessPolicyVersion", &req.access_policy_version)]);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::POST, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.DatasetService/InsertDataset")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(req.dataset, &method);
self.inner.execute(builder, body, options).await
}
async fn patch_dataset(
&self,
req: crate::model::UpdateOrPatchDatasetRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Dataset>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_dataset_id = try_match(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}",
var_project_id, var_dataset_id,
);
let path_template = "/bigquery/v2/projects/{project_id}/datasets/{dataset_id}";
let builder = self.inner.builder(Method::PATCH, path);
let builder = builder.query(&[("updateMode", &req.update_mode)]);
let builder = builder.query(&[("accessPolicyVersion", &req.access_policy_version)]);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::PATCH, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.DatasetService/PatchDataset")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(req.dataset, &method);
self.inner.execute(builder, body, options).await
}
async fn update_dataset(
&self,
req: crate::model::UpdateOrPatchDatasetRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Dataset>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_dataset_id = try_match(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}",
var_project_id, var_dataset_id,
);
let path_template = "/bigquery/v2/projects/{project_id}/datasets/{dataset_id}";
let builder = self.inner.builder(Method::PUT, path);
let builder = builder.query(&[("updateMode", &req.update_mode)]);
let builder = builder.query(&[("accessPolicyVersion", &req.access_policy_version)]);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::PUT, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.DatasetService/UpdateDataset")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(req.dataset, &method);
self.inner.execute(builder, body, options).await
}
async fn delete_dataset(
&self,
req: crate::model::DeleteDatasetRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<()>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_dataset_id = try_match(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}",
var_project_id, var_dataset_id,
);
let path_template = "/bigquery/v2/projects/{project_id}/datasets/{dataset_id}";
let builder = self.inner.builder(Method::DELETE, path);
let builder = builder.query(&[("deleteContents", &req.delete_contents)]);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::DELETE, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.DatasetService/DeleteDataset")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(None::<gaxi::http::NoBody>, &method);
self.inner
.execute(builder, body, options)
.await
.map(|r: crate::Response<wkt::Empty>| {
let (parts, _) = r.into_parts();
crate::Response::from_parts(parts, ())
})
}
async fn list_datasets(
&self,
req: crate::model::ListDatasetsRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::DatasetList>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!("/bigquery/v2/projects/{}/datasets", var_project_id,);
let path_template = "/bigquery/v2/projects/{project_id}/datasets";
let builder = self.inner.builder(Method::GET, path);
let builder = (|| {
let builder = req
.max_results
.as_ref()
.map(|p| serde_json::to_value(p).map_err(Error::ser))
.transpose()?
.into_iter()
.fold(builder, |builder, v| {
use gaxi::query_parameter::QueryParameter;
v.add(builder, "maxResults")
});
let builder = builder.query(&[("pageToken", &req.page_token)]);
let builder = builder.query(&[("all", &req.all)]);
let builder = builder.query(&[("filter", &req.filter)]);
Ok(builder)
})();
Some(builder.map(|b| (b, Method::GET, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.DatasetService/ListDatasets")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(None::<gaxi::http::NoBody>, &method);
self.inner.execute(builder, body, options).await
}
async fn undelete_dataset(
&self,
req: crate::model::UndeleteDatasetRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Dataset>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let mut req = req;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_dataset_id = try_match(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}:undelete",
var_project_id, var_dataset_id,
);
let path_template =
"/bigquery/v2/projects/{project_id}/datasets/{dataset_id}:undelete";
let _ = Some(&mut req).map(|m| std::mem::take(&mut m.project_id));
let _ = Some(&mut req).map(|m| std::mem::take(&mut m.dataset_id));
let builder = self.inner.builder(Method::POST, path);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::POST, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.DatasetService/UndeleteDataset")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(Some(req), &method);
self.inner.execute(builder, body, options).await
}
}
#[derive(Clone)]
pub struct JobService {
inner: gaxi::http::ReqwestClient,
}
impl std::fmt::Debug for JobService {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
f.debug_struct("JobService")
.field("inner", &self.inner)
.finish()
}
}
impl JobService {
pub async fn new(config: gaxi::options::ClientConfig) -> crate::ClientBuilderResult<Self> {
let tracing_is_enabled = gaxi::options::tracing_enabled(&config);
let inner = gaxi::http::ReqwestClient::new(config, crate::DEFAULT_HOST).await?;
let inner = if tracing_is_enabled {
inner.with_instrumentation(&super::tracing::info::INSTRUMENTATION_CLIENT_INFO)
} else {
inner
};
Ok(Self { inner })
}
}
impl super::stub::JobService for JobService {
async fn cancel_job(
&self,
req: crate::model::CancelJobRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::JobCancelResponse>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_job_id = try_match(
Some(&req).map(|m| &m.job_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!(
"/bigquery/v2/projects/{}/jobs/{}/cancel",
var_project_id, var_job_id,
);
let path_template = "/bigquery/v2/projects/{project_id}/jobs/{job_id}/cancel";
let builder = self.inner.builder(Method::POST, path);
let builder = builder.query(&[("location", &req.location)]);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::POST, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.job_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"job_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.JobService/CancelJob")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(None::<gaxi::http::NoBody>, &method);
self.inner.execute(builder, body, options).await
}
async fn get_job(
&self,
req: crate::model::GetJobRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Job>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_job_id = try_match(
Some(&req).map(|m| &m.job_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!(
"/bigquery/v2/projects/{}/jobs/{}",
var_project_id, var_job_id,
);
let path_template = "/bigquery/v2/projects/{project_id}/jobs/{job_id}";
let builder = self.inner.builder(Method::GET, path);
let builder = builder.query(&[("location", &req.location)]);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::GET, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.job_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"job_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.JobService/GetJob")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(None::<gaxi::http::NoBody>, &method);
self.inner.execute(builder, body, options).await
}
async fn insert_job(
&self,
req: crate::model::InsertJobRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Job>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!("/bigquery/v2/projects/{}/jobs", var_project_id,);
let path_template = "/bigquery/v2/projects/{project_id}/jobs";
let builder = self.inner.builder(Method::POST, path);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::POST, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.JobService/InsertJob")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(req.job, &method);
self.inner.execute(builder, body, options).await
}
async fn delete_job(
&self,
req: crate::model::DeleteJobRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<()>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_job_id = try_match(
Some(&req).map(|m| &m.job_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!(
"/bigquery/v2/projects/{}/jobs/{}/delete",
var_project_id, var_job_id,
);
let path_template = "/bigquery/v2/projects/{project_id}/jobs/{job_id}/delete";
let builder = self.inner.builder(Method::DELETE, path);
let builder = builder.query(&[("location", &req.location)]);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::DELETE, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.job_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"job_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.JobService/DeleteJob")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(None::<gaxi::http::NoBody>, &method);
self.inner
.execute(builder, body, options)
.await
.map(|r: crate::Response<wkt::Empty>| {
let (parts, _) = r.into_parts();
crate::Response::from_parts(parts, ())
})
}
async fn list_jobs(
&self,
req: crate::model::ListJobsRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::JobList>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!("/bigquery/v2/projects/{}/jobs", var_project_id,);
let path_template = "/bigquery/v2/projects/{project_id}/jobs";
let builder = self.inner.builder(Method::GET, path);
let builder = (|| {
let builder = builder.query(&[("allUsers", &req.all_users)]);
let builder = req
.max_results
.as_ref()
.map(|p| serde_json::to_value(p).map_err(Error::ser))
.transpose()?
.into_iter()
.fold(builder, |builder, v| {
use gaxi::query_parameter::QueryParameter;
v.add(builder, "maxResults")
});
let builder = builder.query(&[("minCreationTime", &req.min_creation_time)]);
let builder = req
.max_creation_time
.as_ref()
.map(|p| serde_json::to_value(p).map_err(Error::ser))
.transpose()?
.into_iter()
.fold(builder, |builder, v| {
use gaxi::query_parameter::QueryParameter;
v.add(builder, "maxCreationTime")
});
let builder = builder.query(&[("pageToken", &req.page_token)]);
let builder = builder.query(&[("projection", &req.projection)]);
let builder = req
.state_filter
.iter()
.fold(builder, |builder, p| builder.query(&[("stateFilter", p)]));
let builder = builder.query(&[("parentJobId", &req.parent_job_id)]);
Ok(builder)
})();
Some(builder.map(|b| (b, Method::GET, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.JobService/ListJobs")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(None::<gaxi::http::NoBody>, &method);
self.inner.execute(builder, body, options).await
}
async fn get_query_results(
&self,
req: crate::model::GetQueryResultsRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::GetQueryResultsResponse>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_job_id = try_match(
Some(&req).map(|m| &m.job_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!(
"/bigquery/v2/projects/{}/queries/{}",
var_project_id, var_job_id,
);
let path_template = "/bigquery/v2/projects/{project_id}/queries/{job_id}";
let builder = self.inner.builder(Method::GET, path);
let builder = (|| {
let builder = req
.start_index
.as_ref()
.map(|p| serde_json::to_value(p).map_err(Error::ser))
.transpose()?
.into_iter()
.fold(builder, |builder, v| {
use gaxi::query_parameter::QueryParameter;
v.add(builder, "startIndex")
});
let builder = builder.query(&[("pageToken", &req.page_token)]);
let builder = req
.max_results
.as_ref()
.map(|p| serde_json::to_value(p).map_err(Error::ser))
.transpose()?
.into_iter()
.fold(builder, |builder, v| {
use gaxi::query_parameter::QueryParameter;
v.add(builder, "maxResults")
});
let builder = req
.timeout_ms
.as_ref()
.map(|p| serde_json::to_value(p).map_err(Error::ser))
.transpose()?
.into_iter()
.fold(builder, |builder, v| {
use gaxi::query_parameter::QueryParameter;
v.add(builder, "timeoutMs")
});
let builder = builder.query(&[("location", &req.location)]);
let builder = req
.format_options
.as_ref()
.map(|p| serde_json::to_value(p).map_err(Error::ser))
.transpose()?
.into_iter()
.fold(builder, |builder, v| {
use gaxi::query_parameter::QueryParameter;
v.add(builder, "formatOptions")
});
Ok(builder)
})();
Some(builder.map(|b| (b, Method::GET, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.job_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"job_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.JobService/GetQueryResults")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(None::<gaxi::http::NoBody>, &method);
self.inner.execute(builder, body, options).await
}
async fn query(
&self,
req: crate::model::PostQueryRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::QueryResponse>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!("/bigquery/v2/projects/{}/queries", var_project_id,);
let path_template = "/bigquery/v2/projects/{project_id}/queries";
let builder = self.inner.builder(Method::POST, path);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::POST, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.JobService/Query")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(req.query_request, &method);
self.inner.execute(builder, body, options).await
}
}
#[derive(Clone)]
pub struct ModelService {
inner: gaxi::http::ReqwestClient,
}
impl std::fmt::Debug for ModelService {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
f.debug_struct("ModelService")
.field("inner", &self.inner)
.finish()
}
}
impl ModelService {
pub async fn new(config: gaxi::options::ClientConfig) -> crate::ClientBuilderResult<Self> {
let tracing_is_enabled = gaxi::options::tracing_enabled(&config);
let inner = gaxi::http::ReqwestClient::new(config, crate::DEFAULT_HOST).await?;
let inner = if tracing_is_enabled {
inner.with_instrumentation(&super::tracing::info::INSTRUMENTATION_CLIENT_INFO)
} else {
inner
};
Ok(Self { inner })
}
}
impl super::stub::ModelService for ModelService {
async fn get_model(
&self,
req: crate::model::GetModelRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Model>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_dataset_id = try_match(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_model_id = try_match(
Some(&req).map(|m| &m.model_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}/models/{}",
var_project_id, var_dataset_id, var_model_id,
);
let path_template =
"/bigquery/v2/projects/{project_id}/datasets/{dataset_id}/models/{model_id}";
let builder = self.inner.builder(Method::GET, path);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::GET, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.model_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"model_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.ModelService/GetModel")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(None::<gaxi::http::NoBody>, &method);
self.inner.execute(builder, body, options).await
}
async fn list_models(
&self,
req: crate::model::ListModelsRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ListModelsResponse>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_dataset_id = try_match(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}/models",
var_project_id, var_dataset_id,
);
let path_template =
"/bigquery/v2/projects/{project_id}/datasets/{dataset_id}/models";
let builder = self.inner.builder(Method::GET, path);
let builder = (|| {
let builder = req
.max_results
.as_ref()
.map(|p| serde_json::to_value(p).map_err(Error::ser))
.transpose()?
.into_iter()
.fold(builder, |builder, v| {
use gaxi::query_parameter::QueryParameter;
v.add(builder, "maxResults")
});
let builder = builder.query(&[("pageToken", &req.page_token)]);
Ok(builder)
})();
Some(builder.map(|b| (b, Method::GET, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.ModelService/ListModels")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(None::<gaxi::http::NoBody>, &method);
self.inner.execute(builder, body, options).await
}
async fn patch_model(
&self,
req: crate::model::PatchModelRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Model>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_dataset_id = try_match(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_model_id = try_match(
Some(&req).map(|m| &m.model_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}/models/{}",
var_project_id, var_dataset_id, var_model_id,
);
let path_template =
"/bigquery/v2/projects/{project_id}/datasets/{dataset_id}/models/{model_id}";
let builder = self.inner.builder(Method::PATCH, path);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::PATCH, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.model_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"model_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.ModelService/PatchModel")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(req.model, &method);
self.inner.execute(builder, body, options).await
}
async fn delete_model(
&self,
req: crate::model::DeleteModelRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<()>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_dataset_id = try_match(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_model_id = try_match(
Some(&req).map(|m| &m.model_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}/models/{}",
var_project_id, var_dataset_id, var_model_id,
);
let path_template =
"/bigquery/v2/projects/{project_id}/datasets/{dataset_id}/models/{model_id}";
let builder = self.inner.builder(Method::DELETE, path);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::DELETE, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.model_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"model_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.ModelService/DeleteModel")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(None::<gaxi::http::NoBody>, &method);
self.inner
.execute(builder, body, options)
.await
.map(|r: crate::Response<wkt::Empty>| {
let (parts, _) = r.into_parts();
crate::Response::from_parts(parts, ())
})
}
}
#[derive(Clone)]
pub struct ProjectService {
inner: gaxi::http::ReqwestClient,
}
impl std::fmt::Debug for ProjectService {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
f.debug_struct("ProjectService")
.field("inner", &self.inner)
.finish()
}
}
impl ProjectService {
pub async fn new(config: gaxi::options::ClientConfig) -> crate::ClientBuilderResult<Self> {
let tracing_is_enabled = gaxi::options::tracing_enabled(&config);
let inner = gaxi::http::ReqwestClient::new(config, crate::DEFAULT_HOST).await?;
let inner = if tracing_is_enabled {
inner.with_instrumentation(&super::tracing::info::INSTRUMENTATION_CLIENT_INFO)
} else {
inner
};
Ok(Self { inner })
}
}
impl super::stub::ProjectService for ProjectService {
async fn get_service_account(
&self,
req: crate::model::GetServiceAccountRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::GetServiceAccountResponse>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!("/bigquery/v2/projects/{}/serviceAccount", var_project_id,);
let path_template = "/bigquery/v2/projects/{project_id}/serviceAccount";
let builder = self.inner.builder(Method::GET, path);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::GET, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.ProjectService/GetServiceAccount")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(None::<gaxi::http::NoBody>, &method);
self.inner.execute(builder, body, options).await
}
}
#[derive(Clone)]
pub struct RoutineService {
inner: gaxi::http::ReqwestClient,
}
impl std::fmt::Debug for RoutineService {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
f.debug_struct("RoutineService")
.field("inner", &self.inner)
.finish()
}
}
impl RoutineService {
pub async fn new(config: gaxi::options::ClientConfig) -> crate::ClientBuilderResult<Self> {
let tracing_is_enabled = gaxi::options::tracing_enabled(&config);
let inner = gaxi::http::ReqwestClient::new(config, crate::DEFAULT_HOST).await?;
let inner = if tracing_is_enabled {
inner.with_instrumentation(&super::tracing::info::INSTRUMENTATION_CLIENT_INFO)
} else {
inner
};
Ok(Self { inner })
}
}
impl super::stub::RoutineService for RoutineService {
async fn get_routine(
&self,
req: crate::model::GetRoutineRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Routine>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(Some(&req).map(|m| &m.project_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let var_dataset_id = try_match(Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let var_routine_id = try_match(Some(&req).map(|m| &m.routine_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}/routines/{}",
var_project_id,
var_dataset_id,
var_routine_id,
);
let path_template = "/bigquery/v2/projects/{project_id}/datasets/{dataset_id}/routines/{routine_id}";
let builder = self.inner.builder(Method::GET, path);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::GET, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*");
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*");
let builder = builder.maybe_add(
Some(&req).map(|m| &m.routine_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"routine_id",
"*");
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.RoutineService/GetRoutine")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(None::<gaxi::http::NoBody>, &method);
self.inner.execute(builder, body, options).await
}
async fn insert_routine(
&self,
req: crate::model::InsertRoutineRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Routine>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_dataset_id = try_match(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}/routines",
var_project_id, var_dataset_id,
);
let path_template =
"/bigquery/v2/projects/{project_id}/datasets/{dataset_id}/routines";
let builder = self.inner.builder(Method::POST, path);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::POST, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.RoutineService/InsertRoutine")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(req.routine, &method);
self.inner.execute(builder, body, options).await
}
async fn update_routine(
&self,
req: crate::model::UpdateRoutineRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Routine>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(Some(&req).map(|m| &m.project_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let var_dataset_id = try_match(Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let var_routine_id = try_match(Some(&req).map(|m| &m.routine_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}/routines/{}",
var_project_id,
var_dataset_id,
var_routine_id,
);
let path_template = "/bigquery/v2/projects/{project_id}/datasets/{dataset_id}/routines/{routine_id}";
let builder = self.inner.builder(Method::PUT, path);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::PUT, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*");
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*");
let builder = builder.maybe_add(
Some(&req).map(|m| &m.routine_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"routine_id",
"*");
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.RoutineService/UpdateRoutine")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(req.routine, &method);
self.inner.execute(builder, body, options).await
}
async fn delete_routine(
&self,
req: crate::model::DeleteRoutineRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<()>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(Some(&req).map(|m| &m.project_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let var_dataset_id = try_match(Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let var_routine_id = try_match(Some(&req).map(|m| &m.routine_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}/routines/{}",
var_project_id,
var_dataset_id,
var_routine_id,
);
let path_template = "/bigquery/v2/projects/{project_id}/datasets/{dataset_id}/routines/{routine_id}";
let builder = self.inner.builder(Method::DELETE, path);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::DELETE, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*");
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*");
let builder = builder.maybe_add(
Some(&req).map(|m| &m.routine_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"routine_id",
"*");
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.RoutineService/DeleteRoutine")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(None::<gaxi::http::NoBody>, &method);
self.inner
.execute(builder, body, options)
.await
.map(|r: crate::Response<wkt::Empty>| {
let (parts, _) = r.into_parts();
crate::Response::from_parts(parts, ())
})
}
async fn list_routines(
&self,
req: crate::model::ListRoutinesRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ListRoutinesResponse>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_dataset_id = try_match(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}/routines",
var_project_id, var_dataset_id,
);
let path_template =
"/bigquery/v2/projects/{project_id}/datasets/{dataset_id}/routines";
let builder = self.inner.builder(Method::GET, path);
let builder = (|| {
let builder = req
.max_results
.as_ref()
.map(|p| serde_json::to_value(p).map_err(Error::ser))
.transpose()?
.into_iter()
.fold(builder, |builder, v| {
use gaxi::query_parameter::QueryParameter;
v.add(builder, "maxResults")
});
let builder = builder.query(&[("pageToken", &req.page_token)]);
let builder = builder.query(&[("filter", &req.filter)]);
Ok(builder)
})();
Some(builder.map(|b| (b, Method::GET, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.RoutineService/ListRoutines")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(None::<gaxi::http::NoBody>, &method);
self.inner.execute(builder, body, options).await
}
}
#[derive(Clone)]
pub struct RowAccessPolicyService {
inner: gaxi::http::ReqwestClient,
}
impl std::fmt::Debug for RowAccessPolicyService {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
f.debug_struct("RowAccessPolicyService")
.field("inner", &self.inner)
.finish()
}
}
impl RowAccessPolicyService {
pub async fn new(config: gaxi::options::ClientConfig) -> crate::ClientBuilderResult<Self> {
let tracing_is_enabled = gaxi::options::tracing_enabled(&config);
let inner = gaxi::http::ReqwestClient::new(config, crate::DEFAULT_HOST).await?;
let inner = if tracing_is_enabled {
inner.with_instrumentation(&super::tracing::info::INSTRUMENTATION_CLIENT_INFO)
} else {
inner
};
Ok(Self { inner })
}
}
impl super::stub::RowAccessPolicyService for RowAccessPolicyService {
async fn list_row_access_policies(
&self,
req: crate::model::ListRowAccessPoliciesRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::ListRowAccessPoliciesResponse>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(Some(&req).map(|m| &m.project_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let var_dataset_id = try_match(Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let var_table_id = try_match(Some(&req).map(|m| &m.table_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}/tables/{}/rowAccessPolicies",
var_project_id,
var_dataset_id,
var_table_id,
);
let path_template = "/bigquery/v2/projects/{project_id}/datasets/{dataset_id}/tables/{table_id}/rowAccessPolicies";
let builder = self.inner.builder(Method::GET, path);
let builder = builder.query(&[("pageToken", &req.page_token)]);
let builder = builder.query(&[("pageSize", &req.page_size)]);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::GET, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*");
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*");
let builder = builder.maybe_add(
Some(&req).map(|m| &m.table_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"table_id",
"*");
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method(
"google.cloud.bigquery.v2.RowAccessPolicyService/ListRowAccessPolicies",
)
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(None::<gaxi::http::NoBody>, &method);
self.inner.execute(builder, body, options).await
}
async fn get_row_access_policy(
&self,
req: crate::model::GetRowAccessPolicyRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::RowAccessPolicy>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(Some(&req).map(|m| &m.project_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let var_dataset_id = try_match(Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let var_table_id = try_match(Some(&req).map(|m| &m.table_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let var_policy_id = try_match(Some(&req).map(|m| &m.policy_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}/tables/{}/rowAccessPolicies/{}",
var_project_id,
var_dataset_id,
var_table_id,
var_policy_id,
);
let path_template = "/bigquery/v2/projects/{project_id}/datasets/{dataset_id}/tables/{table_id}/rowAccessPolicies/{policy_id}";
let builder = self.inner.builder(Method::GET, path);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::GET, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*");
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*");
let builder = builder.maybe_add(
Some(&req).map(|m| &m.table_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"table_id",
"*");
let builder = builder.maybe_add(
Some(&req).map(|m| &m.policy_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"policy_id",
"*");
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method(
"google.cloud.bigquery.v2.RowAccessPolicyService/GetRowAccessPolicy",
)
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(None::<gaxi::http::NoBody>, &method);
self.inner.execute(builder, body, options).await
}
async fn create_row_access_policy(
&self,
req: crate::model::CreateRowAccessPolicyRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::RowAccessPolicy>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(Some(&req).map(|m| &m.project_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let var_dataset_id = try_match(Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let var_table_id = try_match(Some(&req).map(|m| &m.table_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}/tables/{}/rowAccessPolicies",
var_project_id,
var_dataset_id,
var_table_id,
);
let path_template = "/bigquery/v2/projects/{project_id}/datasets/{dataset_id}/tables/{table_id}/rowAccessPolicies";
let builder = self.inner.builder(Method::POST, path);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::POST, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*");
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*");
let builder = builder.maybe_add(
Some(&req).map(|m| &m.table_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"table_id",
"*");
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method(
"google.cloud.bigquery.v2.RowAccessPolicyService/CreateRowAccessPolicy",
)
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(req.row_access_policy, &method);
self.inner.execute(builder, body, options).await
}
async fn update_row_access_policy(
&self,
req: crate::model::UpdateRowAccessPolicyRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::RowAccessPolicy>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(Some(&req).map(|m| &m.project_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let var_dataset_id = try_match(Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let var_table_id = try_match(Some(&req).map(|m| &m.table_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let var_policy_id = try_match(Some(&req).map(|m| &m.policy_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}/tables/{}/rowAccessPolicies/{}",
var_project_id,
var_dataset_id,
var_table_id,
var_policy_id,
);
let path_template = "/bigquery/v2/projects/{project_id}/datasets/{dataset_id}/tables/{table_id}/rowAccessPolicies/{policy_id}";
let builder = self.inner.builder(Method::PUT, path);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::PUT, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*");
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*");
let builder = builder.maybe_add(
Some(&req).map(|m| &m.table_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"table_id",
"*");
let builder = builder.maybe_add(
Some(&req).map(|m| &m.policy_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"policy_id",
"*");
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method(
"google.cloud.bigquery.v2.RowAccessPolicyService/UpdateRowAccessPolicy",
)
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(req.row_access_policy, &method);
self.inner.execute(builder, body, options).await
}
async fn delete_row_access_policy(
&self,
req: crate::model::DeleteRowAccessPolicyRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<()>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(Some(&req).map(|m| &m.project_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let var_dataset_id = try_match(Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let var_table_id = try_match(Some(&req).map(|m| &m.table_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let var_policy_id = try_match(Some(&req).map(|m| &m.policy_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}/tables/{}/rowAccessPolicies/{}",
var_project_id,
var_dataset_id,
var_table_id,
var_policy_id,
);
let path_template = "/bigquery/v2/projects/{project_id}/datasets/{dataset_id}/tables/{table_id}/rowAccessPolicies/{policy_id}";
let builder = self.inner.builder(Method::DELETE, path);
let builder = req.force.iter().fold(builder, |builder, p| builder.query(&[("force", p)]));
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::DELETE, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*");
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*");
let builder = builder.maybe_add(
Some(&req).map(|m| &m.table_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"table_id",
"*");
let builder = builder.maybe_add(
Some(&req).map(|m| &m.policy_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"policy_id",
"*");
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method(
"google.cloud.bigquery.v2.RowAccessPolicyService/DeleteRowAccessPolicy",
)
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(None::<gaxi::http::NoBody>, &method);
self.inner
.execute(builder, body, options)
.await
.map(|r: crate::Response<wkt::Empty>| {
let (parts, _) = r.into_parts();
crate::Response::from_parts(parts, ())
})
}
async fn batch_delete_row_access_policies(
&self,
req: crate::model::BatchDeleteRowAccessPoliciesRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<()>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let mut req = req;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(Some(&req).map(|m| &m.project_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let var_dataset_id = try_match(Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let var_table_id = try_match(Some(&req).map(|m| &m.table_id).map(|s| s.as_str()), &[Segment::SingleWildcard])?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}/tables/{}/rowAccessPolicies:batchDelete",
var_project_id,
var_dataset_id,
var_table_id,
);
let path_template = "/bigquery/v2/projects/{project_id}/datasets/{dataset_id}/tables/{table_id}/rowAccessPolicies:batchDelete";
let _ = Some(&mut req).map(|m| std::mem::take(&mut m.project_id));
let _ = Some(&mut req).map(|m| std::mem::take(&mut m.dataset_id));
let _ = Some(&mut req).map(|m| std::mem::take(&mut m.table_id));
let builder = self.inner.builder(Method::POST, path);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::POST, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*");
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*");
let builder = builder.maybe_add(
Some(&req).map(|m| &m.table_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"table_id",
"*");
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.RowAccessPolicyService/BatchDeleteRowAccessPolicies")
.set_url_template(_path_template)
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(Some(req), &method);
self.inner
.execute(builder, body, options)
.await
.map(|r: crate::Response<wkt::Empty>| {
let (parts, _) = r.into_parts();
crate::Response::from_parts(parts, ())
})
}
}
#[derive(Clone)]
pub struct TableService {
inner: gaxi::http::ReqwestClient,
}
impl std::fmt::Debug for TableService {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::result::Result<(), std::fmt::Error> {
f.debug_struct("TableService")
.field("inner", &self.inner)
.finish()
}
}
impl TableService {
pub async fn new(config: gaxi::options::ClientConfig) -> crate::ClientBuilderResult<Self> {
let tracing_is_enabled = gaxi::options::tracing_enabled(&config);
let inner = gaxi::http::ReqwestClient::new(config, crate::DEFAULT_HOST).await?;
let inner = if tracing_is_enabled {
inner.with_instrumentation(&super::tracing::info::INSTRUMENTATION_CLIENT_INFO)
} else {
inner
};
Ok(Self { inner })
}
}
impl super::stub::TableService for TableService {
async fn get_table(
&self,
req: crate::model::GetTableRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Table>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_dataset_id = try_match(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_table_id = try_match(
Some(&req).map(|m| &m.table_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}/tables/{}",
var_project_id, var_dataset_id, var_table_id,
);
let path_template =
"/bigquery/v2/projects/{project_id}/datasets/{dataset_id}/tables/{table_id}";
let builder = self.inner.builder(Method::GET, path);
let builder = builder.query(&[("selectedFields", &req.selected_fields)]);
let builder = builder.query(&[("view", &req.view)]);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::GET, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.table_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"table_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.TableService/GetTable")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(None::<gaxi::http::NoBody>, &method);
self.inner.execute(builder, body, options).await
}
async fn insert_table(
&self,
req: crate::model::InsertTableRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Table>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_dataset_id = try_match(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}/tables",
var_project_id, var_dataset_id,
);
let path_template =
"/bigquery/v2/projects/{project_id}/datasets/{dataset_id}/tables";
let builder = self.inner.builder(Method::POST, path);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::POST, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.TableService/InsertTable")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(req.table, &method);
self.inner.execute(builder, body, options).await
}
async fn patch_table(
&self,
req: crate::model::UpdateOrPatchTableRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Table>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_dataset_id = try_match(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_table_id = try_match(
Some(&req).map(|m| &m.table_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}/tables/{}",
var_project_id, var_dataset_id, var_table_id,
);
let path_template =
"/bigquery/v2/projects/{project_id}/datasets/{dataset_id}/tables/{table_id}";
let builder = self.inner.builder(Method::PATCH, path);
let builder = builder.query(&[("autodetectSchema", &req.autodetect_schema)]);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::PATCH, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.table_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"table_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.TableService/PatchTable")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(req.table, &method);
self.inner.execute(builder, body, options).await
}
async fn update_table(
&self,
req: crate::model::UpdateOrPatchTableRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::Table>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_dataset_id = try_match(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_table_id = try_match(
Some(&req).map(|m| &m.table_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}/tables/{}",
var_project_id, var_dataset_id, var_table_id,
);
let path_template =
"/bigquery/v2/projects/{project_id}/datasets/{dataset_id}/tables/{table_id}";
let builder = self.inner.builder(Method::PUT, path);
let builder = builder.query(&[("autodetectSchema", &req.autodetect_schema)]);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::PUT, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.table_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"table_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.TableService/UpdateTable")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(req.table, &method);
self.inner.execute(builder, body, options).await
}
async fn delete_table(
&self,
req: crate::model::DeleteTableRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<()>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_dataset_id = try_match(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_table_id = try_match(
Some(&req).map(|m| &m.table_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}/tables/{}",
var_project_id, var_dataset_id, var_table_id,
);
let path_template =
"/bigquery/v2/projects/{project_id}/datasets/{dataset_id}/tables/{table_id}";
let builder = self.inner.builder(Method::DELETE, path);
let builder = Ok(builder);
Some(builder.map(|b| (b, Method::DELETE, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.table_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"table_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.TableService/DeleteTable")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(None::<gaxi::http::NoBody>, &method);
self.inner
.execute(builder, body, options)
.await
.map(|r: crate::Response<wkt::Empty>| {
let (parts, _) = r.into_parts();
crate::Response::from_parts(parts, ())
})
}
async fn list_tables(
&self,
req: crate::model::ListTablesRequest,
options: crate::RequestOptions,
) -> Result<crate::Response<crate::model::TableList>> {
use gaxi::http::reqwest::{HeaderValue, Method};
use gaxi::path_parameter::PathMismatchBuilder;
use gaxi::path_parameter::try_match;
use gaxi::routing_parameter::Segment;
use google_cloud_gax::error::binding::BindingError;
let (builder, method, _path_template) = None
.or_else(|| {
let var_project_id = try_match(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let var_dataset_id = try_match(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
)?;
let path = format!(
"/bigquery/v2/projects/{}/datasets/{}/tables",
var_project_id, var_dataset_id,
);
let path_template =
"/bigquery/v2/projects/{project_id}/datasets/{dataset_id}/tables";
let builder = self.inner.builder(Method::GET, path);
let builder = (|| {
let builder = req
.max_results
.as_ref()
.map(|p| serde_json::to_value(p).map_err(Error::ser))
.transpose()?
.into_iter()
.fold(builder, |builder, v| {
use gaxi::query_parameter::QueryParameter;
v.add(builder, "maxResults")
});
let builder = builder.query(&[("pageToken", &req.page_token)]);
Ok(builder)
})();
Some(builder.map(|b| (b, Method::GET, path_template)))
})
.ok_or_else(|| {
let mut paths = Vec::new();
{
let builder = PathMismatchBuilder::default();
let builder = builder.maybe_add(
Some(&req).map(|m| &m.project_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"project_id",
"*",
);
let builder = builder.maybe_add(
Some(&req).map(|m| &m.dataset_id).map(|s| s.as_str()),
&[Segment::SingleWildcard],
"dataset_id",
"*",
);
paths.push(builder.build());
}
google_cloud_gax::error::Error::binding(BindingError { paths })
})??;
if let Some(recorder) = gaxi::observability::RequestRecorder::current() {
recorder.on_client_request(
gaxi::observability::ClientRequestAttributes::default()
.set_rpc_method("google.cloud.bigquery.v2.TableService/ListTables")
.set_url_template(_path_template),
);
}
let options = google_cloud_gax::options::internal::set_default_idempotency(
options,
gaxi::http::default_idempotency(&method),
);
let builder = builder.query(&[("$alt", "json;enum-encoding=int")]).header(
"x-goog-api-client",
HeaderValue::from_static(&crate::info::X_GOOG_API_CLIENT_HEADER),
);
let body = gaxi::http::handle_empty(None::<gaxi::http::NoBody>, &method);
self.inner.execute(builder, body, options).await
}
}