use quack_rs::aggregate::{AggregateFunctionBuilder, AggregateOverloadBuilder};
use quack_rs::prelude::{LogicalType, ScalarFunctionBuilder, ScalarOverloadBuilder};
pub trait BuilderWithParams: Sized {
fn builder_param_logical(self, logical_type: LogicalType) -> Self;
fn with_params(self, params: Vec<LogicalType>) -> Self {
let mut builder = self;
for param in params {
builder = builder.builder_param_logical(param);
}
builder
}
}
impl BuilderWithParams for ScalarFunctionBuilder {
fn builder_param_logical(self, logical_type: LogicalType) -> Self {
self.param_logical(logical_type)
}
}
impl BuilderWithParams for ScalarOverloadBuilder {
fn builder_param_logical(self, logical_type: LogicalType) -> Self {
self.param_logical(logical_type)
}
}
impl BuilderWithParams for AggregateFunctionBuilder {
fn builder_param_logical(self, logical_type: LogicalType) -> Self {
self.param_logical(logical_type)
}
}
impl BuilderWithParams for AggregateOverloadBuilder {
fn builder_param_logical(self, logical_type: LogicalType) -> Self {
self.param_logical(logical_type)
}
}