A tool to compile SQL to Elasticsearch queries
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ast.rs 998B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #[derive(Debug, PartialEq)]
  2. pub struct Select {
  3. pub fields: Vec<Field>,
  4. pub source: KIdentifier,
  5. pub where_clause: Option<Where>,
  6. }
  7. #[derive(Debug, PartialEq)]
  8. pub enum Field {
  9. Named(String),
  10. Star,
  11. }
  12. #[derive(Debug, PartialEq)]
  13. pub enum Where {
  14. And(Vec<Where>),
  15. Equals(KValue, KValue),
  16. }
  17. #[derive(Debug, PartialEq)]
  18. pub enum KValue {
  19. Identifier(KIdentifier),
  20. Number(KNumber),
  21. String(KString),
  22. }
  23. #[derive(Debug, PartialEq)]
  24. pub struct KIdentifier {
  25. pub name: String,
  26. }
  27. #[derive(Debug, PartialEq)]
  28. pub struct KNumber {
  29. pub value: f32,
  30. }
  31. #[derive(Debug, PartialEq)]
  32. pub struct KString {
  33. pub value: String,
  34. }
  35. impl KIdentifier {
  36. pub fn new(name: &str) -> Self {
  37. Self {
  38. name: name.to_string(),
  39. }
  40. }
  41. }
  42. impl KNumber {
  43. pub fn new(value: f32) -> Self {
  44. Self { value }
  45. }
  46. }
  47. impl KString {
  48. pub fn new(value: &str) -> Self {
  49. Self {
  50. value: value.to_string(),
  51. }
  52. }
  53. }