Skip to main content

qraft_core/
dialect.rs

1/// Supplies the target SQL dialect for query compilation.
2pub trait HasDialect {
3    /// Dialect emitted for this marker type.
4    const DIALECT: Dialect;
5}
6
7/// Emits SQL using PostgreSQL syntax.
8pub struct Postgres;
9impl HasDialect for Postgres {
10    const DIALECT: Dialect = Dialect::Postgres;
11}
12
13/// Emits SQL using MariaDB/MySQL syntax.
14pub struct MySql;
15impl HasDialect for MySql {
16    const DIALECT: Dialect = Dialect::MariaDb;
17}
18
19/// Emits SQL using SQLite syntax.
20pub struct Sqlite;
21impl HasDialect for Sqlite {
22    const DIALECT: Dialect = Dialect::Sqlite;
23}
24
25/// The SQL dialect variants `qraft-core` knows how to emit.
26#[derive(Debug, Clone, Copy)]
27pub enum Dialect {
28    Postgres,
29    MariaDb,
30    Sqlite,
31}