os_query_builder_rs/full_text/intervals/
interval.rs1use serde::{
2 Serialize,
3 Serializer,
4 ser::SerializeMap
5};
6use crate::full_text::intervals::interval_rule::IntervalRule;
7
8#[derive(Debug, Default, Clone)]
9pub struct Intervals {
10 field: Option<String>,
11 value: Option<IntervalRule>
12}
13
14impl Serialize for Intervals {
15 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
16 where
17 S: Serializer,
18 {
19 let mut state = serializer.serialize_map(Some(1))?;
20 state.serialize_entry(&self.field.as_deref().unwrap_or_default(), &self.value)?;
21 state.end()
22 }
23}
24
25
26impl Intervals {
27
28 pub fn new() -> Self {
29 Self::default()
30 }
31
32 pub fn field<T: Into<String> + Serialize>(self, field: T) -> Self {
33 Self {
34 field: Some(field.into()),
35 ..self
36 }
37 }
38
39 pub fn intervals<T: Into<IntervalRule> + Serialize>(self, interval: T) -> Self {
40 Self {
41 value: Some(interval.into()),
42 ..self
43 }
44 }
45}