Rust things
This commit is contained in:
parent
fc10381692
commit
3debacab4f
30 changed files with 3257 additions and 647 deletions
|
|
@ -14,8 +14,8 @@ use crate::consts::{DEFAULT_PROPERTIES_LIMIT, MAX_PROPERTIES_LIMIT};
|
|||
use crate::data::RenovationEvent;
|
||||
use crate::licensing::{check_license_bounds, resolve_share_code};
|
||||
use crate::parsing::{
|
||||
cell_for_row_cached, h3_cell_bounds, needs_parent, parse_filters, row_passes_filters,
|
||||
validate_h3_resolution,
|
||||
cell_for_row_cached, h3_cell_bounds, needs_parent, parse_filters_with_poi, row_passes_filters,
|
||||
row_passes_poi_filters, validate_h3_resolution,
|
||||
};
|
||||
use crate::state::{AppState, SharedState};
|
||||
|
||||
|
|
@ -117,6 +117,12 @@ pub fn build_property(
|
|||
features.insert(feat_name.clone(), value);
|
||||
}
|
||||
}
|
||||
for (metric_idx, metric_name) in state.data.poi_metrics.feature_names.iter().enumerate() {
|
||||
let value = state.data.poi_metrics.get_for_property_row(row, metric_idx);
|
||||
if value.is_finite() {
|
||||
features.insert(metric_name.clone(), value);
|
||||
}
|
||||
}
|
||||
|
||||
Property {
|
||||
address: non_empty_string(state.data.address(row)),
|
||||
|
|
@ -199,15 +205,19 @@ pub async fn get_hexagon_properties(
|
|||
|
||||
let h3_str = params.h3;
|
||||
let quant = state.data.quant_ref();
|
||||
let (parsed_filters, parsed_enum_filters) = parse_filters(
|
||||
let poi_quant = state.data.poi_metrics.quant_ref();
|
||||
let (parsed_filters, parsed_enum_filters, parsed_poi_filters) = parse_filters_with_poi(
|
||||
params.filters.as_deref(),
|
||||
&state.feature_name_to_index,
|
||||
&state.data.enum_values,
|
||||
&quant,
|
||||
&state.data.poi_metrics.name_to_index,
|
||||
&poi_quant,
|
||||
)
|
||||
.map_err(|err| (StatusCode::BAD_REQUEST, err).into_response())?;
|
||||
let num_filters = parsed_filters.len() + parsed_enum_filters.len();
|
||||
let num_filters = parsed_filters.len() + parsed_enum_filters.len() + parsed_poi_filters.len();
|
||||
let filters_str = params.filters;
|
||||
let has_poi_filters = !parsed_poi_filters.is_empty();
|
||||
let travel_entries = parse_optional_travel(params.travel.as_deref())
|
||||
.map_err(|err| (StatusCode::BAD_REQUEST, err).into_response())?;
|
||||
|
||||
|
|
@ -242,6 +252,12 @@ pub async fn get_hexagon_properties(
|
|||
feature_data,
|
||||
num_features,
|
||||
)
|
||||
&& (!has_poi_filters
|
||||
|| row_passes_poi_filters(
|
||||
row,
|
||||
&parsed_poi_filters,
|
||||
&state.data.poi_metrics,
|
||||
))
|
||||
{
|
||||
if has_travel {
|
||||
let postcode = state.data.postcode(row);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue