use reqwest::{Client, RequestBuilder};
use time::OffsetDateTime;
use crate::http::row_access_policy::RowAccessPolicyReference;
#[derive(Clone, PartialEq, serde::Deserialize, serde::Serialize, Debug, Default)]
#[serde(rename_all = "camelCase")]
pub struct ListRowAccessPoliciesRequest {
pub page_size: Option<i64>,
}
#[derive(Clone, PartialEq, serde::Deserialize, serde::Serialize, Debug, Default)]
#[serde(rename_all = "camelCase")]
pub struct ListRowAccessPoliciesResponse {
pub row_access_policies: Option<Vec<RowAccessPolicyOverview>>,
pub next_page_token: Option<String>,
}
#[derive(Clone, PartialEq, Eq, serde::Deserialize, serde::Serialize, Debug, Default)]
#[serde(rename_all = "camelCase")]
pub struct RowAccessPolicyOverview {
pub row_access_policy_reference: RowAccessPolicyReference,
pub filter_predicate: String,
#[serde(default, with = "time::serde::rfc3339::option")]
pub creation_time: Option<OffsetDateTime>,
#[serde(default, with = "time::serde::rfc3339::option")]
pub last_modified_time: Option<OffsetDateTime>,
}
pub fn build(
base_url: &str,
client: &Client,
project_id: &str,
dataset_id: &str,
table_id: &str,
data: &ListRowAccessPoliciesRequest,
page_token: Option<String>,
) -> RequestBuilder {
let url = format!(
"{}/projects/{}/datasets/{}/tables/{}/rowAccessPolicies",
base_url, project_id, dataset_id, table_id
);
let builder = client.get(url).query(data);
if let Some(page_token) = page_token {
builder.query(&[("pageToken", page_token.as_str())])
} else {
builder
}
}