use crate::_internal::ast::identifiers::ObjectId;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum Volatility {
Volatile,
Stable,
Immutable,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum SecurityMode {
Invoker,
Definer,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
pub enum RoutineKind {
#[default]
Function,
Procedure,
Aggregate,
Window,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct FunctionState {
pub id: ObjectId,
pub routine_kind: RoutineKind,
pub arg_types: Vec<String>,
#[serde(skip)]
pub arg_type_ids: Vec<Option<ObjectId>>,
pub return_type: String,
#[serde(skip)]
pub return_type_id: Option<ObjectId>,
pub volatility: Volatility,
pub language: String,
pub security: SecurityMode,
}
#[derive(Debug, Clone, PartialEq)]
#[allow(clippy::large_enum_variant)] pub enum FunctionOverlay {
Present(FunctionState),
Dropped,
}