#[derive(Debug, PartialEq)] pub struct Select { pub fields: Vec, pub source: KIdentifier, pub where_clause: Option, } #[derive(Debug, PartialEq)] pub enum Field { Named(String), Star, } #[derive(Debug, PartialEq)] pub enum Where { And(Vec), Equals(KValue, KValue), } #[derive(Debug, PartialEq)] pub enum KValue { Identifier(KIdentifier), Number(KNumber), String(KString), } #[derive(Debug, PartialEq)] pub struct KIdentifier { pub name: String, } #[derive(Debug, PartialEq)] pub struct KNumber { pub value: f32, } #[derive(Debug, PartialEq)] pub struct KString { pub value: String, } impl KIdentifier { pub fn new(name: &str) -> Self { Self { name: name.to_string(), } } } impl KNumber { pub fn new(value: f32) -> Self { Self { value } } } impl KString { pub fn new(value: &str) -> Self { Self { value: value.to_string(), } } }