Skip to main content

sql_fun_server_api/
describe_table.rs

1use std::path::PathBuf;
2
3use crate::{Collection, Nullability, TextSpan, TypeReference};
4
5/// column definition
6#[derive(serde::Serialize, serde::Deserialize, derive_getters::Getters)]
7pub struct ColumnDefinition {
8    /// column name
9    name: String,
10    /// column type
11    column_type: TypeReference,
12    /// nullability
13    nullability: Nullability,
14    /// column contraints
15    constraint: Vec<ColumnConstraint>,
16}
17
18/// constraint for column
19#[derive(serde::Serialize, serde::Deserialize)]
20pub enum ColumnConstraint {
21    // TODO: definition
22}
23
24/// constraint for column
25#[derive(serde::Serialize, serde::Deserialize)]
26pub struct TableConstraint {
27    // TODO: definition
28}
29
30/// argument for [`SqlFunServerApi::describe_table`]
31#[derive(serde::Serialize, serde::Deserialize, derive_getters::Getters)]
32pub struct DescribeTableArgs {
33    schema_name: String,
34    local_name: String,
35}
36
37/// response type for [`SqlFunServerApi::describe_table`]
38#[derive(serde::Serialize, serde::Deserialize, derive_getters::Getters)]
39pub struct DescribeTableResponse {
40    definition_file: PathBuf,
41    definition_span: TextSpan,
42
43    columns: Collection<ColumnDefinition>,
44    constraints: Collection<TableConstraint>,
45}