toasty_sql/serializer/
flavor.rs

1use super::Serializer;
2
3use toasty_core::schema::db;
4
5#[derive(Debug)]
6pub(super) enum Flavor {
7    Postgresql,
8    Sqlite,
9    Mysql,
10}
11
12impl<'a> Serializer<'a> {
13    /// Creates a serializer that emits SQLite SQL.
14    pub fn sqlite(schema: &'a db::Schema) -> Self {
15        Serializer {
16            schema,
17            flavor: Flavor::Sqlite,
18        }
19    }
20
21    /// Returns `true` if this serializer targets SQLite.
22    pub fn is_sqlite(&self) -> bool {
23        matches!(self.flavor, Flavor::Sqlite)
24    }
25
26    /// Creates a serializer that emits PostgreSQL SQL.
27    pub fn postgresql(schema: &'a db::Schema) -> Self {
28        Serializer {
29            schema,
30            flavor: Flavor::Postgresql,
31        }
32    }
33
34    /// Creates a serializer that emits MySQL SQL.
35    pub fn mysql(schema: &'a db::Schema) -> Self {
36        Serializer {
37            schema,
38            flavor: Flavor::Mysql,
39        }
40    }
41
42    pub(super) fn is_mysql(&self) -> bool {
43        matches!(self.flavor, Flavor::Mysql)
44    }
45}