use std::path::PathBuf;
use crate::TextSpan;
#[derive(serde::Serialize, serde::Deserialize)]
pub enum StringPred {
Exact(String),
StartsWith(String),
EndsWith(String),
}
#[derive(serde::Serialize, serde::Deserialize)]
pub enum NameQuery {
LocalName(StringPred),
SchemaName(StringPred),
}
#[derive(serde::Serialize, serde::Deserialize)]
pub enum ObjectKind {
All,
Table,
View,
Type,
Function,
MaterializedView,
Sequence,
Trigger,
Index,
}
#[derive(serde::Serialize, serde::Deserialize)]
pub enum ObjectQuery {
Kind(ObjectKind),
Name(NameQuery),
Or(Vec<ObjectQuery>),
And(Vec<ObjectQuery>),
Not(Box<ObjectQuery>),
}
#[derive(serde::Serialize, serde::Deserialize)]
pub enum ObjectSummaryField {
DefinitionFile,
DefinitionSpan,
}
#[derive(serde::Serialize, serde::Deserialize, derive_getters::Getters)]
pub struct ListObjectArgs {
predicate: ObjectQuery,
extra_fields: Vec<ObjectSummaryField>,
}
#[derive(serde::Serialize, serde::Deserialize, derive_getters::Getters)]
pub struct ObjectSummary {
schema_name: String,
local_name: String,
kind: ObjectKind,
definition_file: Option<PathBuf>,
definition_span: Option<TextSpan>,
}