Skip to main content

surql_parser/upstream/sql/
filter.rs

1use crate::upstream::fmt::QuoteStr;
2use crate::upstream::sql::language::Language;
3use surrealdb_types::{SqlFormat, ToSql, write_sql};
4#[derive(Clone, Debug, PartialEq, Eq)]
5#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
6pub enum Filter {
7	Ascii,
8	EdgeNgram(u16, u16),
9	Lowercase,
10	Ngram(u16, u16),
11	Snowball(Language),
12	Uppercase,
13	Mapper(String),
14}
15impl ToSql for Filter {
16	fn fmt_sql(&self, f: &mut String, fmt: SqlFormat) {
17		match self {
18			Self::Ascii => f.push_str("ASCII"),
19			Self::EdgeNgram(min, max) => write_sql!(f, fmt, "EDGENGRAM({min},{max})"),
20			Self::Lowercase => f.push_str("LOWERCASE"),
21			Self::Ngram(min, max) => write_sql!(f, fmt, "NGRAM({min},{max})"),
22			Self::Snowball(lang) => write_sql!(f, fmt, "SNOWBALL({lang})"),
23			Self::Uppercase => f.push_str("UPPERCASE"),
24			Self::Mapper(path) => write_sql!(f, fmt, "MAPPER({})", QuoteStr(path)),
25		}
26	}
27}