use crate::database::client::mysql::collation::Collation;
create_enum! {
#[expect(non_camel_case_types, reason = "mysql format")]
#[derive(Copy, Clone, Debug)]
pub(crate) enum Charset<u8> {
armscii8 = (1),
ascii = (2),
big5 = (3),
binary = (4),
cp1250 = (5),
cp1251 = (6),
cp1256 = (7),
cp1257 = (8),
cp850 = (9),
cp852 = (10),
cp866 = (11),
cp932 = (12),
dec8 = (13),
eucjpms = (14),
euckr = (15),
gb18030 = (16),
gb2312 = (17),
gbk = (18),
geostd8 = (19),
greek = (20),
hebrew = (21),
hp8 = (22),
keybcs2 = (23),
koi8r = (24),
koi8u = (25),
latin1 = (26),
latin2 = (27),
latin5 = (28),
latin7 = (29),
macce = (30),
macroman = (31),
sjis = (32),
swe7 = (33),
tis620 = (34),
ucs2 = (35),
ujis = (36),
utf16 = (37),
utf16le = (38),
utf32 = (39),
utf8 = (40),
utf8mb4 = (41),
}
}
impl Charset {
pub(crate) const fn default_collation(&self) -> Collation {
match self {
Self::armscii8 => Collation::armscii8_general_ci,
Self::ascii => Collation::ascii_general_ci,
Self::big5 => Collation::big5_chinese_ci,
Self::binary => Collation::binary,
Self::cp1250 => Collation::cp1250_general_ci,
Self::cp1251 => Collation::cp1251_general_ci,
Self::cp1256 => Collation::cp1256_general_ci,
Self::cp1257 => Collation::cp1257_general_ci,
Self::cp850 => Collation::cp850_general_ci,
Self::cp852 => Collation::cp852_general_ci,
Self::cp866 => Collation::cp866_general_ci,
Self::cp932 => Collation::cp932_japanese_ci,
Self::dec8 => Collation::dec8_swedish_ci,
Self::eucjpms => Collation::eucjpms_japanese_ci,
Self::euckr => Collation::euckr_korean_ci,
Self::gb18030 => Collation::gb18030_chinese_ci,
Self::gb2312 => Collation::gb2312_chinese_ci,
Self::gbk => Collation::gbk_chinese_ci,
Self::geostd8 => Collation::geostd8_general_ci,
Self::greek => Collation::greek_general_ci,
Self::hebrew => Collation::hebrew_general_ci,
Self::hp8 => Collation::hp8_english_ci,
Self::keybcs2 => Collation::keybcs2_general_ci,
Self::koi8r => Collation::koi8r_general_ci,
Self::koi8u => Collation::koi8u_general_ci,
Self::latin1 => Collation::latin1_swedish_ci,
Self::latin2 => Collation::latin2_general_ci,
Self::latin5 => Collation::latin5_turkish_ci,
Self::latin7 => Collation::latin7_general_ci,
Self::macce => Collation::macce_general_ci,
Self::macroman => Collation::macroman_general_ci,
Self::sjis => Collation::sjis_japanese_ci,
Self::swe7 => Collation::swe7_swedish_ci,
Self::tis620 => Collation::tis620_thai_ci,
Self::ucs2 => Collation::ucs2_general_ci,
Self::ujis => Collation::ujis_japanese_ci,
Self::utf16 => Collation::utf16_general_ci,
Self::utf16le => Collation::utf16le_general_ci,
Self::utf32 => Collation::utf32_general_ci,
Self::utf8 => Collation::utf8_unicode_ci,
Self::utf8mb4 => Collation::utf8mb4_unicode_ci,
}
}
}