pub mod join;
pub mod nulls;
pub mod sort;
pub mod unique;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum JoinType {
Inner,
Left,
Right,
Full,
Semi,
Anti,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum JoinKeys {
On(Vec<String>),
LeftRight {
left_on: Vec<String>,
right_on: Vec<String>,
},
}
impl From<Vec<String>> for JoinKeys {
fn from(cols: Vec<String>) -> Self {
JoinKeys::On(cols)
}
}
impl From<(Vec<String>, Vec<String>)> for JoinKeys {
fn from((left_on, right_on): (Vec<String>, Vec<String>)) -> Self {
JoinKeys::LeftRight { left_on, right_on }
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct SortOptions {
pub by: Vec<String>,
pub descending: Vec<bool>,
pub nulls_last: bool,
pub stable: bool,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum FillNullStrategy {
Forward,
Backward,
Min,
Max,
Mean,
Zero,
One,
}
#[derive(Debug, Clone, PartialEq)]
pub enum FillNull {
Value(crate::expr::Scalar),
Strategy(FillNullStrategy),
}
impl From<crate::expr::Scalar> for FillNull {
fn from(value: crate::expr::Scalar) -> Self {
FillNull::Value(value)
}
}
impl From<FillNullStrategy> for FillNull {
fn from(strategy: FillNullStrategy) -> Self {
FillNull::Strategy(strategy)
}
}
impl From<i64> for FillNull {
fn from(value: i64) -> Self {
FillNull::Value(value.into())
}
}
impl From<f64> for FillNull {
fn from(value: f64) -> Self {
FillNull::Value(value.into())
}
}
impl From<bool> for FillNull {
fn from(value: bool) -> Self {
FillNull::Value(value.into())
}
}
impl From<String> for FillNull {
fn from(value: String) -> Self {
FillNull::Value(value.into())
}
}
impl From<&str> for FillNull {
fn from(value: &str) -> Self {
FillNull::Value(value.into())
}
}