models 0.1.3

A migration management library for applications using PostgresSQL, MySQL or SQLite.
use self::Dialect::*;
use dialect::*;
use models_parser::dialect;
#[derive(Clone, Copy, Debug)]
pub(crate) enum Dialect {
    SQLite,
    PostgreSQL,
    MySQL,
    MsSQL,
    Any,
}

impl Dialect {
    pub(crate) fn requires_move(&self) -> bool {
        matches!(self, Dialect::SQLite | Dialect::Any)
    }

    pub(crate) fn _has_default_constr_name(&self) -> bool {
        matches!(self, Dialect::PostgreSQL)
    }

    pub(crate) fn supports_cascade(&self) -> bool {
        !matches!(self, SQLite)
    }
}

impl dialect::Dialect for Dialect {
    fn is_delimited_identifier_start(&self, ch: char) -> bool {
        match self {
            SQLite => SQLiteDialect {}.is_delimited_identifier_start(ch),
            PostgreSQL => PostgreSqlDialect {}.is_delimited_identifier_start(ch),
            MySQL => MySqlDialect {}.is_delimited_identifier_start(ch),
            MsSQL => MsSqlDialect {}.is_delimited_identifier_start(ch),
            Any => GenericDialect {}.is_delimited_identifier_start(ch),
        }
    }
    fn is_identifier_start(&self, ch: char) -> bool {
        match self {
            SQLite => SQLiteDialect {}.is_identifier_start(ch),
            PostgreSQL => PostgreSqlDialect {}.is_identifier_start(ch),
            MySQL => MySqlDialect {}.is_identifier_start(ch),
            MsSQL => MsSqlDialect {}.is_identifier_start(ch),
            Any => GenericDialect {}.is_identifier_start(ch),
        }
    }

    fn is_identifier_part(&self, ch: char) -> bool {
        match self {
            SQLite => SQLiteDialect {}.is_identifier_part(ch),
            PostgreSQL => PostgreSqlDialect {}.is_identifier_part(ch),
            MySQL => MySqlDialect {}.is_identifier_part(ch),
            MsSQL => MsSqlDialect {}.is_identifier_part(ch),
            Any => GenericDialect {}.is_identifier_part(ch),
        }
    }
}