DatabaseDialect

Trait DatabaseDialect 

Source
pub trait DatabaseDialect {
    // Required methods
    fn backend_name(&self) -> &str;
    fn get_encode_placeholder_fn(&self) -> Option<fn(usize, &mut String)>;
    fn write_count_sql(&self, sql: &mut String);
    fn write_page_sql<'c, 'q, DB>(
        &self,
        sql: &mut String,
        page_size: i64,
        page_no: i64,
        arg: &mut DB::Arguments<'q>,
    ) -> 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 get_encode_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_page_sql<'c, 'q, DB>( &self, sql: &mut String, page_size: i64, page_no: i64, arg: &mut DB::Arguments<'q>, ) -> Result<(), Error>
where DB: Database, i64: Encode<'q, DB> + Type<DB>,

Generates pagination SQL clause

§Arguments
  • sql - Original SQL statement to modify
  • page_size - Items per page
  • page_no - Page number (auto-corrected to >=1)
  • arg - SQL arguments container
§Note

Automatically handles invalid page numbers

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§