kosame_repr 0.3.0

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

use super::Expr;

pub struct Cast<'a> {
    value: &'a Expr<'a>,
    data_type: &'a str,
}

impl<'a> Cast<'a> {
    #[inline]
    #[must_use]
    pub const fn new(value: &'a Expr, data_type: &'a str) -> Self {
        Self { value, data_type }
    }
}

impl kosame_sql::FmtSql for Cast<'_> {
    #[inline]
    fn fmt_sql<D: kosame_sql::Dialect>(
        &self,
        formatter: &mut kosame_sql::Formatter<D>,
    ) -> kosame_sql::Result {
        formatter.write_str("cast(")?;
        self.value.fmt_sql(formatter)?;
        formatter.write_str(" as ")?;
        formatter.write_str(self.data_type)?;
        formatter.write_str(")")?;
        Ok(())
    }
}