sea_schema/mysql/def/
storage_engine.rs

1#[cfg(feature = "with-serde")]
2use serde::{Deserialize, Serialize};
3
4use crate as sea_schema;
5
6#[derive(Clone, Debug, PartialEq, sea_query::Iden, sea_schema_derive::Name)]
7#[cfg_attr(feature = "with-serde", derive(Serialize, Deserialize))]
8#[catch = "string_to_unknown"]
9pub enum StorageEngine {
10    #[iden = "ARCHIVE"]
11    Archive,
12    #[iden = "BLACKHOLE"]
13    Blackhole,
14    #[iden = "MRG_MYISAM"]
15    MrgMyIsam,
16    #[iden = "FEDERATED"]
17    Federated,
18    #[iden = "MyISAM"]
19    MyIsam,
20    #[iden = "PERFORMANCE_SCHEMA"]
21    PerformanceSchema,
22    #[iden = "InnoDB"]
23    InnoDb,
24    #[iden = "MEMORY"]
25    Memory,
26    #[iden = "CSV"]
27    Csv,
28    #[method = "unknown_to_string"]
29    Unknown(String),
30}
31
32impl StorageEngine {
33    pub fn unknown_to_string(&self) -> &String {
34        match self {
35            Self::Unknown(custom) => custom,
36            _ => panic!("not Unknown"),
37        }
38    }
39
40    pub fn string_to_unknown(string: &str) -> Option<Self> {
41        Some(Self::Unknown(string.to_string()))
42    }
43}
44
45#[cfg(test)]
46mod tests {
47    use super::*;
48    use crate::Name;
49
50    #[test]
51    fn test_0() {
52        assert_eq!(
53            StorageEngine::from_str("ARCHIVE").unwrap(),
54            StorageEngine::Archive
55        );
56        assert_eq!(
57            StorageEngine::from_str("InnoDB").unwrap(),
58            StorageEngine::InnoDb
59        );
60        assert_eq!(
61            StorageEngine::from_str("MyISAM").unwrap(),
62            StorageEngine::MyIsam
63        );
64    }
65
66    #[test]
67    fn test_1() {
68        assert_eq!(
69            StorageEngine::from_str("hello").unwrap(),
70            StorageEngine::Unknown("hello".to_owned())
71        );
72    }
73}