sea_schema/mysql/def/
storage_engine.rs1#[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}