kosame_repr 0.3.0

Macro-based Rust ORM focused on developer ergonomics
Documentation
use std::fmt::Write;

use crate::Ident;

pub struct ColumnRef<'a> {
    correlation: Option<Ident<'a>>,
    column: Ident<'a>,
}

impl<'a> ColumnRef<'a> {
    #[inline]
    #[must_use]
    pub const fn new(correlation: Option<&'a str>, column: &'a str) -> Self {
        Self {
            correlation: Ident::from_option(correlation),
            column: Ident::new(column),
        }
    }
}

impl kosame_sql::FmtSql for ColumnRef<'_> {
    #[inline]
    fn fmt_sql<D: kosame_sql::Dialect>(
        &self,
        formatter: &mut kosame_sql::Formatter<D>,
    ) -> kosame_sql::Result {
        if let Some(correlation) = &self.correlation {
            correlation.fmt_sql(formatter)?;
            formatter.write_str(".")?;
        }
        self.column.fmt_sql(formatter)?;
        Ok(())
    }
}