#![allow(unused_imports)]
use super::builders::*;
use super::client::SchemaServiceClient;
use unitycatalog_common::models::agent_skills::v0alpha1::*;
use unitycatalog_common::models::agents::v0alpha1::*;
use unitycatalog_common::models::functions::v1::*;
use unitycatalog_common::models::schemas::v1::*;
use unitycatalog_common::models::tables::v1::*;
use unitycatalog_common::models::volumes::v1::*;
#[derive(Clone)]
pub struct SchemaClient {
pub(crate) catalog_name: String,
pub(crate) schema_name: String,
pub(crate) client: SchemaServiceClient,
}
impl SchemaClient {
pub fn new(
catalog_name: impl Into<String>,
schema_name: impl Into<String>,
client: SchemaServiceClient,
) -> Self {
Self {
catalog_name: catalog_name.into(),
schema_name: schema_name.into(),
client,
}
}
pub fn from_full_name(full_name: impl Into<String>, client: SchemaServiceClient) -> Self {
let full_name = full_name.into();
let mut parts = full_name.splitn(2usize, '.');
let catalog_name = parts.next().unwrap_or_default();
let schema_name = parts.next().unwrap_or_default();
Self::new(catalog_name, schema_name, client)
}
pub fn catalog_name(&self) -> &str {
&self.catalog_name
}
pub fn name(&self) -> &str {
&self.schema_name
}
pub fn full_name(&self) -> String {
format!("{}.{}", self.catalog_name, self.schema_name)
}
pub fn get(&self) -> GetSchemaBuilder {
GetSchemaBuilder::new(
self.client.clone(),
format!("{}.{}", self.catalog_name, self.schema_name),
)
}
pub fn update(&self) -> UpdateSchemaBuilder {
UpdateSchemaBuilder::new(
self.client.clone(),
format!("{}.{}", self.catalog_name, self.schema_name),
)
}
pub fn delete(&self) -> DeleteSchemaBuilder {
DeleteSchemaBuilder::new(
self.client.clone(),
format!("{}.{}", self.catalog_name, self.schema_name),
)
}
pub fn agent(&self, agent_name: impl Into<String>) -> crate::codegen::agents::AgentClient {
crate::codegen::agents::AgentClient::new(
&self.catalog_name,
&self.schema_name,
agent_name,
crate::codegen::agents::AgentServiceClient::new(
self.client.client.clone(),
self.client.base_url.clone(),
),
)
}
pub fn create_agent(
&self,
name: impl Into<String>,
invocation_protocol: InvocationProtocol,
endpoint: impl Into<String>,
) -> crate::codegen::agents::CreateAgentBuilder {
crate::codegen::agents::CreateAgentBuilder::new(
crate::codegen::agents::AgentServiceClient::new(
self.client.client.clone(),
self.client.base_url.clone(),
),
&self.catalog_name,
&self.schema_name,
name,
invocation_protocol,
endpoint,
)
}
pub fn list_agents(&self) -> crate::codegen::agents::ListAgentsBuilder {
crate::codegen::agents::ListAgentsBuilder::new(
crate::codegen::agents::AgentServiceClient::new(
self.client.client.clone(),
self.client.base_url.clone(),
),
&self.catalog_name,
&self.schema_name,
)
}
pub fn agent_skill(
&self,
agent_skill_name: impl Into<String>,
) -> crate::codegen::agent_skills::AgentSkillClient {
crate::codegen::agent_skills::AgentSkillClient::new(
&self.catalog_name,
&self.schema_name,
agent_skill_name,
crate::codegen::agent_skills::AgentSkillServiceClient::new(
self.client.client.clone(),
self.client.base_url.clone(),
),
)
}
pub fn create_agent_skill(
&self,
name: impl Into<String>,
agent_skill_type: AgentSkillType,
) -> crate::codegen::agent_skills::CreateAgentSkillBuilder {
crate::codegen::agent_skills::CreateAgentSkillBuilder::new(
crate::codegen::agent_skills::AgentSkillServiceClient::new(
self.client.client.clone(),
self.client.base_url.clone(),
),
&self.catalog_name,
&self.schema_name,
name,
agent_skill_type,
)
}
pub fn list_agent_skills(&self) -> crate::codegen::agent_skills::ListAgentSkillsBuilder {
crate::codegen::agent_skills::ListAgentSkillsBuilder::new(
crate::codegen::agent_skills::AgentSkillServiceClient::new(
self.client.client.clone(),
self.client.base_url.clone(),
),
&self.catalog_name,
&self.schema_name,
)
}
pub fn function(
&self,
function_name: impl Into<String>,
) -> crate::codegen::functions::FunctionClient {
crate::codegen::functions::FunctionClient::new(
&self.catalog_name,
&self.schema_name,
function_name,
crate::codegen::functions::FunctionServiceClient::new(
self.client.client.clone(),
self.client.base_url.clone(),
),
)
}
pub fn create_function(
&self,
name: impl Into<String>,
data_type: impl Into<String>,
full_data_type: impl Into<String>,
parameter_style: ParameterStyle,
is_deterministic: bool,
sql_data_access: SqlDataAccess,
is_null_call: bool,
security_type: SecurityType,
routine_body: RoutineBody,
) -> crate::codegen::functions::CreateFunctionBuilder {
crate::codegen::functions::CreateFunctionBuilder::new(
crate::codegen::functions::FunctionServiceClient::new(
self.client.client.clone(),
self.client.base_url.clone(),
),
name,
&self.catalog_name,
&self.schema_name,
data_type,
full_data_type,
parameter_style,
is_deterministic,
sql_data_access,
is_null_call,
security_type,
routine_body,
)
}
pub fn list_functions(&self) -> crate::codegen::functions::ListFunctionsBuilder {
crate::codegen::functions::ListFunctionsBuilder::new(
crate::codegen::functions::FunctionServiceClient::new(
self.client.client.clone(),
self.client.base_url.clone(),
),
&self.catalog_name,
&self.schema_name,
)
}
pub fn table(&self, table_name: impl Into<String>) -> crate::codegen::tables::TableClient {
crate::codegen::tables::TableClient::new(
&self.catalog_name,
&self.schema_name,
table_name,
crate::codegen::tables::TableServiceClient::new(
self.client.client.clone(),
self.client.base_url.clone(),
),
)
}
pub fn create_table(
&self,
name: impl Into<String>,
table_type: TableType,
data_source_format: DataSourceFormat,
) -> crate::codegen::tables::CreateTableBuilder {
crate::codegen::tables::CreateTableBuilder::new(
crate::codegen::tables::TableServiceClient::new(
self.client.client.clone(),
self.client.base_url.clone(),
),
name,
&self.schema_name,
&self.catalog_name,
table_type,
data_source_format,
)
}
pub fn list_tables(&self) -> crate::codegen::tables::ListTablesBuilder {
crate::codegen::tables::ListTablesBuilder::new(
crate::codegen::tables::TableServiceClient::new(
self.client.client.clone(),
self.client.base_url.clone(),
),
&self.catalog_name,
&self.schema_name,
)
}
pub fn volume(&self, volume_name: impl Into<String>) -> crate::codegen::volumes::VolumeClient {
crate::codegen::volumes::VolumeClient::new(
&self.catalog_name,
&self.schema_name,
volume_name,
crate::codegen::volumes::VolumeServiceClient::new(
self.client.client.clone(),
self.client.base_url.clone(),
),
)
}
pub fn create_volume(
&self,
name: impl Into<String>,
volume_type: VolumeType,
) -> crate::codegen::volumes::CreateVolumeBuilder {
crate::codegen::volumes::CreateVolumeBuilder::new(
crate::codegen::volumes::VolumeServiceClient::new(
self.client.client.clone(),
self.client.base_url.clone(),
),
&self.catalog_name,
&self.schema_name,
name,
volume_type,
)
}
pub fn list_volumes(&self) -> crate::codegen::volumes::ListVolumesBuilder {
crate::codegen::volumes::ListVolumesBuilder::new(
crate::codegen::volumes::VolumeServiceClient::new(
self.client.client.clone(),
self.client.base_url.clone(),
),
&self.catalog_name,
&self.schema_name,
)
}
}