neon_arch
commited on
Commit
·
3aeb3b3
1
Parent(s):
9ee516e
✨ feat: add setter functions to SearchResults struct
Browse files
src/search_results_handler/aggregation_models.rs
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
|
| 4 |
use serde::{Deserialize, Serialize};
|
| 5 |
|
| 6 |
-
use crate::config_parser::parser_models::Style;
|
| 7 |
|
| 8 |
/// A named struct to store, serialize and deserializes the individual search result from all the
|
| 9 |
/// scraped and aggregated search results from the upstream search engines.
|
|
@@ -16,7 +16,7 @@ use crate::config_parser::parser_models::Style;
|
|
| 16 |
/// * `url` - The url to be displayed below the search result title in html.
|
| 17 |
/// * `description` - The description of the search result.
|
| 18 |
/// * `engine` - The names of the upstream engines from which this results were provided.
|
| 19 |
-
#[derive(
|
| 20 |
#[serde(rename_all = "camelCase")]
|
| 21 |
pub struct SearchResult {
|
| 22 |
pub title: String,
|
|
@@ -116,6 +116,25 @@ impl RawSearchResult {
|
|
| 116 |
}
|
| 117 |
}
|
| 118 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 119 |
/// A named struct to store, serialize, deserialize the all the search results scraped and
|
| 120 |
/// aggregated from the upstream search engines.
|
| 121 |
///
|
|
@@ -130,6 +149,8 @@ pub struct SearchResults {
|
|
| 130 |
pub results: Vec<SearchResult>,
|
| 131 |
pub page_query: String,
|
| 132 |
pub style: Style,
|
|
|
|
|
|
|
| 133 |
}
|
| 134 |
|
| 135 |
impl SearchResults {
|
|
@@ -141,15 +162,29 @@ impl SearchResults {
|
|
| 141 |
/// and stores it into a vector of `SearchResult` structs.
|
| 142 |
/// * `page_query` - Takes an argument of current page`s search query `q` provided in
|
| 143 |
/// the search url.
|
| 144 |
-
pub fn new(
|
|
|
|
|
|
|
|
|
|
|
|
|
| 145 |
SearchResults {
|
| 146 |
results,
|
| 147 |
page_query,
|
| 148 |
style: Style::new("".to_string(), "".to_string()),
|
|
|
|
|
|
|
| 149 |
}
|
| 150 |
}
|
| 151 |
|
| 152 |
pub fn add_style(&mut self, style: Style) {
|
| 153 |
self.style = style;
|
| 154 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 155 |
}
|
|
|
|
| 3 |
|
| 4 |
use serde::{Deserialize, Serialize};
|
| 5 |
|
| 6 |
+
use crate::{config_parser::parser_models::Style, engines::engine_models::EngineError};
|
| 7 |
|
| 8 |
/// A named struct to store, serialize and deserializes the individual search result from all the
|
| 9 |
/// scraped and aggregated search results from the upstream search engines.
|
|
|
|
| 16 |
/// * `url` - The url to be displayed below the search result title in html.
|
| 17 |
/// * `description` - The description of the search result.
|
| 18 |
/// * `engine` - The names of the upstream engines from which this results were provided.
|
| 19 |
+
#[derive(Serialize, Deserialize)]
|
| 20 |
#[serde(rename_all = "camelCase")]
|
| 21 |
pub struct SearchResult {
|
| 22 |
pub title: String,
|
|
|
|
| 116 |
}
|
| 117 |
}
|
| 118 |
|
| 119 |
+
#[derive(Serialize, Deserialize)]
|
| 120 |
+
pub struct EngineErrorInfo {
|
| 121 |
+
pub error: String,
|
| 122 |
+
pub engine: String,
|
| 123 |
+
}
|
| 124 |
+
|
| 125 |
+
impl EngineErrorInfo {
|
| 126 |
+
pub fn new(error: &EngineError, engine: String) -> Self {
|
| 127 |
+
Self {
|
| 128 |
+
error: match error {
|
| 129 |
+
EngineError::RequestError => String::from("RequestError"),
|
| 130 |
+
EngineError::EmptyResultSet => String::from("EmptyResultSet"),
|
| 131 |
+
EngineError::UnexpectedError => String::from("UnexpectedError"),
|
| 132 |
+
},
|
| 133 |
+
engine,
|
| 134 |
+
}
|
| 135 |
+
}
|
| 136 |
+
}
|
| 137 |
+
|
| 138 |
/// A named struct to store, serialize, deserialize the all the search results scraped and
|
| 139 |
/// aggregated from the upstream search engines.
|
| 140 |
///
|
|
|
|
| 149 |
pub results: Vec<SearchResult>,
|
| 150 |
pub page_query: String,
|
| 151 |
pub style: Style,
|
| 152 |
+
pub engine_errors_info: Vec<EngineErrorInfo>,
|
| 153 |
+
pub empty_result_set: bool,
|
| 154 |
}
|
| 155 |
|
| 156 |
impl SearchResults {
|
|
|
|
| 162 |
/// and stores it into a vector of `SearchResult` structs.
|
| 163 |
/// * `page_query` - Takes an argument of current page`s search query `q` provided in
|
| 164 |
/// the search url.
|
| 165 |
+
pub fn new(
|
| 166 |
+
results: Vec<SearchResult>,
|
| 167 |
+
page_query: String,
|
| 168 |
+
engine_errors_info: Vec<EngineErrorInfo>,
|
| 169 |
+
) -> Self {
|
| 170 |
SearchResults {
|
| 171 |
results,
|
| 172 |
page_query,
|
| 173 |
style: Style::new("".to_string(), "".to_string()),
|
| 174 |
+
engine_errors_info,
|
| 175 |
+
empty_result_set: false,
|
| 176 |
}
|
| 177 |
}
|
| 178 |
|
| 179 |
pub fn add_style(&mut self, style: Style) {
|
| 180 |
self.style = style;
|
| 181 |
}
|
| 182 |
+
|
| 183 |
+
pub fn is_empty_result_set(&self) -> bool {
|
| 184 |
+
self.results.is_empty()
|
| 185 |
+
}
|
| 186 |
+
|
| 187 |
+
pub fn set_empty_result_set(&mut self) {
|
| 188 |
+
self.empty_result_set = true;
|
| 189 |
+
}
|
| 190 |
}
|