Skip to main content

DatabaseDialect

Trait DatabaseDialect 

Source
pub trait DatabaseDialect: Send + Sync {
    // Required methods
    fn backend_name(&self) -> &str;
    fn placeholder_fn(&self) -> Option<fn(usize, &mut String)>;
    fn write_count_sql(&self, sql: &mut String);
    fn write_pagination_sql<'q, DB>(
        &self,
        sql: &mut String,
        pagination_size: i64,
        pagination_no: i64,
        arg: &mut DB::Arguments,
    ) -> Result<(), Error>
       where DB: Database,
             i64: Encode<'q, DB> + Type<DB>;
}
Expand description

Abstracts SQL dialect differences across database systems

Provides a unified interface for handling database-specific SQL syntax variations, particularly for parameter binding, count queries, and pagination.

Required Methods§

Source

fn backend_name(&self) -> &str

Returns the name of the database backend in use (e.g. PostgreSQL, MySQL, SQLite, etc.)

Source

fn placeholder_fn(&self) -> Option<fn(usize, &mut String)>

Gets placeholder generation function for parameter binding

Database-specific placeholder formats:

  • PostgreSQL: $1, $2…
  • MySQL/SQLite: ?
§Returns

Option<fn(usize, &mut String)> placeholder generation function

Source

fn write_count_sql(&self, sql: &mut String)

Wraps SQL in count query

§Arguments
  • sql - Original SQL to modify
Source

fn write_pagination_sql<'q, DB>( &self, sql: &mut String, pagination_size: i64, pagination_no: i64, arg: &mut DB::Arguments, ) -> Result<(), Error>
where DB: Database, i64: Encode<'q, DB> + Type<DB>,

Generates pagination SQL clause

§Arguments
  • sql - Original SQL statement to modify
  • pagination_size - Items per pagination
  • pagination_no - Pagination number (auto-corrected to >=1)
  • arg - SQL arguments container
§Note

Automatically handles invalid pagination numbers

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§