use crate::arrays::field::Field;
use crate::functions::function_set::{AggregateFunctionSet, ScalarFunctionSet, TableFunctionSet};
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
pub enum OnConflict {
Ignore,
Replace,
#[default]
Error,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct CreateTableInfo {
pub name: String,
pub columns: Vec<Field>,
pub on_conflict: OnConflict,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct CreateSchemaInfo {
pub name: String,
pub on_conflict: OnConflict,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct CreateViewInfo {
pub name: String,
pub column_aliases: Option<Vec<String>>,
pub on_conflict: OnConflict,
pub query_string: String,
}
#[derive(Debug)]
pub struct CreateScalarFunctionInfo {
pub name: String,
pub implementation: &'static ScalarFunctionSet,
pub on_conflict: OnConflict,
}
#[derive(Debug)]
pub struct CreateAggregateFunctionInfo {
pub name: String,
pub implementation: &'static AggregateFunctionSet,
pub on_conflict: OnConflict,
}
#[derive(Debug)]
pub struct CreateTableFunctionInfo {
pub name: String,
pub implementation: &'static TableFunctionSet,
pub infer_scan: Option<FileInferScan>,
pub on_conflict: OnConflict,
}
#[derive(Debug, Clone, Copy)]
pub struct FileInferScan {
pub can_handle: fn(path: &str) -> bool,
}