Fixed getlangs & language filter

It was a placeholder in v0.2.0 as not implemented
This commit is contained in:
J-onasJones 2024-01-03 12:00:32 +01:00
parent 83e1b85811
commit 5eb6080694

View file

@ -1,4 +1,4 @@
use std::collections::HashMap; use std::collections::{HashMap, HashSet};
use serde_json::{Value, json}; use serde_json::{Value, json};
use warp::Filter; use warp::Filter;
@ -398,8 +398,6 @@ async fn filter_category_handler(params: HashMap<String, String>) -> Result<imp
} }
async fn filter_language_handler(params: HashMap<String, String>) -> Result<impl warp::Reply, warp::Rejection> { async fn filter_language_handler(params: HashMap<String, String>) -> Result<impl warp::Reply, warp::Rejection> {
return Err(warp::reject::custom(NotImplementedError));
return Ok(warp::reply::html("placeholder for compiler to be happy"));
// Access the parameres from the HashMap // Access the parameres from the HashMap
let language = params.get("language").unwrap_or(&"".to_string()).to_string(); let language = params.get("language").unwrap_or(&"".to_string()).to_string();
let limit = params.get("limit").unwrap_or(&"".to_string()).to_string(); let limit = params.get("limit").unwrap_or(&"".to_string()).to_string();
@ -428,7 +426,7 @@ async fn filter_language_handler(params: HashMap<String, String>) -> Result<impl
.iter() .iter()
.filter_map(|item| serde_json::from_value::<EntryProject>(item.clone()).ok()) .filter_map(|item| serde_json::from_value::<EntryProject>(item.clone()).ok())
.filter(|project| project.visible) .filter(|project| project.visible)
//.filter(|project| project.languages.iter().any(|lang| lang.contains_key(language))) .filter(|project| project.languages.contains_key(&language))
.collect() .collect()
} }
_ => Vec::new(), _ => Vec::new(),
@ -441,38 +439,45 @@ async fn filter_language_handler(params: HashMap<String, String>) -> Result<impl
let filtered_data = filtered_data.iter().skip(offset.parse::<usize>().unwrap()).take(limit.parse::<usize>().unwrap()).collect::<Vec<_>>(); let filtered_data = filtered_data.iter().skip(offset.parse::<usize>().unwrap()).take(limit.parse::<usize>().unwrap()).collect::<Vec<_>>();
// return the data // return the data
//Ok(warp::reply::json(&create_json_response(filtered_data, total_results))) Ok(warp::reply::json(&create_json_response(filtered_data, total_results)))
} }
async fn filter_getlangs_handler() -> Result<impl warp::Reply, warp::Rejection> { async fn filter_getlangs_handler() -> Result<impl warp::Reply, warp::Rejection> {
return Err(warp::reject::custom(NotImplementedError));
return Ok(warp::reply::html("placeholder for compiler to be happy"));
// fetch the data // fetch the data
let data = fetch_data().await.unwrap(); let data = fetch_data().await.unwrap();
// filter the data //filter the data
// let filtered_data: Vec<EntryProject> = match data { let filtered_data: Vec<EntryProject> = match data {
// Value::Array(items) => { Value::Array(items) => {
// items items
// .iter() .iter()
// .filter_map(|item| serde_json::from_value::<EntryProject>(item.clone()).ok()) .filter_map(|item| serde_json::from_value::<EntryProject>(item.clone()).ok())
// .filter(|project| project.visible) .filter(|project| project.visible)
// .collect() .collect()
// } }
// _ => Vec::new(), _ => Vec::new(),
// }; };
// filter the data // filter the data
/*let all_language_keys: Vec<&String> = filtered_data let mut languages_set: HashSet<String> = HashSet::new();
.iter()
.flat_map(|project| project.languages.iter().flat_map(|lang_map| lang_map.keys())) for project in filtered_data {
.collect();*/ for language in project.languages.keys() {
languages_set.insert(language.clone());
}
}
// get the total number of results // get the total number of results
//let total_results = all_language_keys.len(); let total_results = languages_set.len();
// json response
let json_response = json!({
"results": languages_set,
"total_results": total_results,
});
// return the data // return the data
//Ok(warp::reply::json(&create_json_response(all_language_keys, total_results))) Ok(warp::reply::json(&json_response))
} }
async fn filter_getstatuses_handler() -> Result<impl warp::Reply, warp::Rejection> { async fn filter_getstatuses_handler() -> Result<impl warp::Reply, warp::Rejection> {