use std::collections::HashMap;
use kyu_types::{LogicalType, TypedValue};
#[derive(Clone, Debug)]
pub struct ProcParam {
pub name: String,
pub type_desc: String,
}
#[derive(Clone, Debug)]
pub struct ProcColumn {
pub name: String,
pub data_type: LogicalType,
}
#[derive(Clone, Debug)]
pub struct ProcedureSignature {
pub name: String,
pub params: Vec<ProcParam>,
pub columns: Vec<ProcColumn>,
}
pub type ProcRow = Vec<TypedValue>;
pub trait Extension: Send + Sync {
fn name(&self) -> &str;
fn procedures(&self) -> Vec<ProcedureSignature>;
fn needs_graph(&self) -> bool {
false
}
fn execute(
&self,
procedure: &str,
args: &[String],
adjacency: &HashMap<i64, Vec<(i64, f64)>>,
) -> Result<Vec<ProcRow>, String>;
}