add serde, and allow UserInputAst to be json serialized/deserialized

This commit is contained in:
Kat Lim Ruiz
2025-03-30 10:36:43 -05:00
parent e488f9e6a2
commit 388fcd763b
3 changed files with 10 additions and 6 deletions

View File

@@ -13,3 +13,5 @@ edition = "2021"
[dependencies]
nom = "7"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

View File

@@ -1,9 +1,10 @@
use std::fmt;
use std::fmt::Write;
use serde::{Serialize, Deserialize};
/// Defines whether a term in a query must be present,
/// should be present or must not be present.
#[derive(Debug, Clone, Hash, Copy, Eq, PartialEq)]
#[derive(Debug, Clone, Hash, Copy, Eq, PartialEq, Serialize, Deserialize)]
pub enum Occur {
/// For a given document to be considered for scoring,
/// at least one of the queries with the Should or the Must

View File

@@ -1,9 +1,10 @@
use std::fmt;
use std::fmt::{Debug, Formatter};
use serde::{Serialize, Deserialize};
use crate::Occur;
#[derive(PartialEq, Clone)]
#[derive(PartialEq, Clone, Serialize, Deserialize)]
pub enum UserInputLeaf {
Literal(UserInputLiteral),
All,
@@ -107,14 +108,14 @@ impl Debug for UserInputLeaf {
}
}
#[derive(Copy, Clone, Eq, PartialEq, Debug)]
#[derive(Copy, Clone, Eq, PartialEq, Debug, Serialize, Deserialize)]
pub enum Delimiter {
SingleQuotes,
DoubleQuotes,
None,
}
#[derive(PartialEq, Clone)]
#[derive(PartialEq, Clone, Serialize, Deserialize)]
pub struct UserInputLiteral {
pub field_name: Option<String>,
pub phrase: String,
@@ -152,7 +153,7 @@ impl fmt::Debug for UserInputLiteral {
}
}
#[derive(PartialEq, Debug, Clone)]
#[derive(PartialEq, Debug, Clone, Serialize, Deserialize)]
pub enum UserInputBound {
Inclusive(String),
Exclusive(String),
@@ -187,7 +188,7 @@ impl UserInputBound {
}
}
#[derive(PartialEq, Clone)]
#[derive(PartialEq, Clone, Serialize, Deserialize)]
pub enum UserInputAst {
Clause(Vec<(Option<Occur>, UserInputAst)>),
Leaf(Box<UserInputLeaf>),