mool 0.2.0

A source-first Rust database toolkit for typed SQL queries, migrations, and model metadata
Documentation
//! PostgreSQL typed-query dialect renderer.

use crate::placeholders::Dialect;

use super::super::expr::ColumnRef;
use super::{DialectFeature, DialectRenderer, common};
use crate::QueryError;

pub(super) struct PostgresSpec;

impl DialectRenderer for PostgresSpec {
    fn dialect(&self) -> Dialect {
        Dialect::Postgres
    }

    fn placeholder(&self, position: usize) -> String {
        format!("${position}")
    }

    fn validate_feature(&self, _feature: DialectFeature) -> Result<(), QueryError> {
        Ok(())
    }

    fn render_upsert(
        &self,
        conflict: &[ColumnRef],
        update_columns: &[&str],
    ) -> Result<String, QueryError> {
        common::render_on_conflict(conflict, update_columns)
    }
}