grafbase_sql_ast/ast/function/
coalesce.rs1use super::Function;
2use crate::ast::{Expression, FunctionType};
3
4#[derive(Debug, Clone, PartialEq)]
5pub struct Coalesce<'a> {
7 pub(crate) exprs: Vec<Expression<'a>>,
8}
9
10pub fn coalesce<'a, T, V>(exprs: V) -> Function<'a>
12where
13 T: Into<Expression<'a>>,
14 V: Into<Vec<T>>,
15{
16 let fun = Coalesce {
17 exprs: exprs.into().into_iter().map(|e| e.into()).collect(),
18 };
19
20 fun.into()
21}
22
23impl<'a> From<Coalesce<'a>> for Function<'a> {
24 fn from(value: Coalesce<'a>) -> Self {
25 Self {
26 typ_: FunctionType::Coalesce(value),
27 alias: None,
28 }
29 }
30}