kosame_repr 0.2.1

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

pub struct ColumnList<'a> {
    columns: &'a [&'a str],
}

impl<'a> ColumnList<'a> {
    #[inline]
    pub const fn new(columns: &'a [&'a str]) -> Self {
        Self { columns }
    }

    #[inline]
    pub const fn columns(&self) -> &'a [&'a str] {
        self.columns
    }
}

impl kosame_sql::FmtSql for ColumnList<'_> {
    fn fmt_sql<D>(&self, formatter: &mut kosame_sql::Formatter<D>) -> kosame_sql::Result
    where
        D: kosame_sql::Dialect,
    {
        formatter.write_str(" (")?;
        for (index, alias) in self.columns.iter().enumerate() {
            formatter.write_ident(alias)?;
            if index != self.columns.len() - 1 {
                formatter.write_str(", ")?;
            }
        }
        formatter.write_str(")")?;
        Ok(())
    }
}