Removing memory allocations
This commit is contained in:
@@ -24,8 +24,8 @@ impl Query {
|
|||||||
&self.query
|
&self.query
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn resolution(&self) -> Option<Vec<u32>> {
|
pub fn resolution(&self) -> &Option<Vec<u32>> {
|
||||||
self.resolution.clone()
|
&self.resolution
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn volume(&self) -> Option<f64> {
|
pub fn volume(&self) -> Option<f64> {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ fn get((core, state): (Path<String>, Data<RwLock<SharedState>>)) -> HandlerResul
|
|||||||
let core = core.to_string();
|
let core = core.to_string();
|
||||||
let context = state.read().unwrap();
|
let context = state.read().unwrap();
|
||||||
|
|
||||||
match context.db().core(core) {
|
match context.db().core(&core) {
|
||||||
Ok(core) => ok_200(&Core::from(core)),
|
Ok(core) => ok_200(&Core::from(core)),
|
||||||
Err(_) => error_404(),
|
Err(_) => error_404(),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ fn post((parameters, state): (Json<Filters>, Data<RwLock<SharedState>>)) -> Hand
|
|||||||
match context.filter(
|
match context.filter(
|
||||||
filter,
|
filter,
|
||||||
core,
|
core,
|
||||||
space.clone(),
|
&space,
|
||||||
parameters.volume(),
|
parameters.volume(),
|
||||||
¶meters.view_port,
|
¶meters.view_port,
|
||||||
parameters.resolution(),
|
parameters.resolution(),
|
||||||
@@ -69,7 +69,7 @@ fn post((parameters, state): (Json<Filters>, Data<RwLock<SharedState>>)) -> Hand
|
|||||||
ok_200(
|
ok_200(
|
||||||
&results
|
&results
|
||||||
.drain()
|
.drain()
|
||||||
.map(|x| Core::from(db.core(x).unwrap()))
|
.map(|x| Core::from(db.core(&x).unwrap()))
|
||||||
.collect::<Vec<_>>(),
|
.collect::<Vec<_>>(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ impl Filters {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn space(&self, db: &mercator_db::DataBase) -> Result<Option<String>, HandlerResult> {
|
pub fn space(&self, db: &mercator_db::DataBase) -> Result<&Option<String>, HandlerResult> {
|
||||||
if let Some(space_id) = &self.space {
|
if let Some(space_id) = &self.space {
|
||||||
if !db.space_keys().contains(&space_id.to_string()) {
|
if !db.space_keys().contains(&space_id.to_string()) {
|
||||||
return Err(error_422(format!(
|
return Err(error_422(format!(
|
||||||
@@ -73,19 +73,17 @@ impl Filters {
|
|||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(self.space.clone())
|
Ok(&self.space)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn resolution(&self) -> Option<Vec<u32>> {
|
pub fn resolution(&self) -> &Option<Vec<u32>> {
|
||||||
self.resolution.clone()
|
&self.resolution
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn volume(&self) -> Option<f64> {
|
pub fn volume(&self) -> Option<f64> {
|
||||||
match &self.view_port {
|
match &self.view_port {
|
||||||
None => None,
|
None => None,
|
||||||
Some((low, high)) => {
|
Some((low, high)) => Some(Shape::BoundingBox(low.into(), high.into()).volume()),
|
||||||
Some(Shape::BoundingBox(low.clone().into(), high.clone().into()).volume())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ fn get((path, state): (Path<String>, Data<RwLock<SharedState>>)) -> HandlerResul
|
|||||||
let name = path.to_string();
|
let name = path.to_string();
|
||||||
let context = state.read().unwrap();
|
let context = state.read().unwrap();
|
||||||
|
|
||||||
match context.db().space(name) {
|
match context.db().space(&name) {
|
||||||
Ok(space) => {
|
Ok(space) => {
|
||||||
let space: model::Space = space.into();
|
let space: model::Space = space.into();
|
||||||
ok_200(&space)
|
ok_200(&space)
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ fn post((parameters, state): (Json<Filters>, Data<RwLock<SharedState>>)) -> Hand
|
|||||||
match context.filter(
|
match context.filter(
|
||||||
filter,
|
filter,
|
||||||
core,
|
core,
|
||||||
space.clone(),
|
&space,
|
||||||
parameters.volume(),
|
parameters.volume(),
|
||||||
¶meters.view_port,
|
¶meters.view_port,
|
||||||
parameters.resolution(),
|
parameters.resolution(),
|
||||||
@@ -70,7 +70,7 @@ fn post((parameters, state): (Json<Filters>, Data<RwLock<SharedState>>)) -> Hand
|
|||||||
ok_200(
|
ok_200(
|
||||||
&results
|
&results
|
||||||
.drain()
|
.drain()
|
||||||
.map(|id| match db.space(id) {
|
.map(|id| match db.space(&id) {
|
||||||
Err(_) => None,
|
Err(_) => None,
|
||||||
Ok(x) => Some(model::Space::from(x)),
|
Ok(x) => Some(model::Space::from(x)),
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -33,10 +33,10 @@ fn get((path, state): (Path<(String, String)>, Data<RwLock<SharedState>>)) -> Ha
|
|||||||
// Enforce highest resolution index.
|
// Enforce highest resolution index.
|
||||||
threshold_volume: None,
|
threshold_volume: None,
|
||||||
view_port: &None,
|
view_port: &None,
|
||||||
resolution: Some(vec![0]),
|
resolution: &Some(vec![0]),
|
||||||
};
|
};
|
||||||
|
|
||||||
match db.core(core) {
|
match db.core(&core) {
|
||||||
Ok(core) => match core.get_by_id(¶meters, &id) {
|
Ok(core) => match core.get_by_id(¶meters, &id) {
|
||||||
Ok(objects) => {
|
Ok(objects) => {
|
||||||
let results = to_spatial_objects(db, objects);
|
let results = to_spatial_objects(db, objects);
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ fn post(
|
|||||||
let context = state.read().unwrap();
|
let context = state.read().unwrap();
|
||||||
let db = context.db();
|
let db = context.db();
|
||||||
|
|
||||||
match db.core(core_id.clone()) {
|
match db.core(&core_id) {
|
||||||
Err(_) => error_404(),
|
Err(_) => error_404(),
|
||||||
Ok(core) => match parameters.space(db) {
|
Ok(core) => match parameters.space(db) {
|
||||||
Err(e) => e,
|
Err(e) => e,
|
||||||
@@ -33,7 +33,7 @@ fn post(
|
|||||||
None => {
|
None => {
|
||||||
let mut results = HashSet::new();
|
let mut results = HashSet::new();
|
||||||
for property in core.keys().iter() {
|
for property in core.keys().iter() {
|
||||||
results.insert(property.id().clone());
|
results.insert(property.id());
|
||||||
}
|
}
|
||||||
|
|
||||||
if parameters.ids_only() {
|
if parameters.ids_only() {
|
||||||
@@ -73,7 +73,7 @@ fn post(
|
|||||||
if parameters.ids_only() {
|
if parameters.ids_only() {
|
||||||
let mut uniques = HashSet::new();
|
let mut uniques = HashSet::new();
|
||||||
for o in objects.iter() {
|
for o in objects.iter() {
|
||||||
uniques.insert(o.value.id().clone());
|
uniques.insert(o.value.id());
|
||||||
}
|
}
|
||||||
|
|
||||||
ok_200(&uniques.drain().collect::<Vec<_>>())
|
ok_200(&uniques.drain().collect::<Vec<_>>())
|
||||||
|
|||||||
@@ -36,10 +36,10 @@ impl SharedState {
|
|||||||
&self,
|
&self,
|
||||||
filter: &str,
|
filter: &str,
|
||||||
core: &str,
|
core: &str,
|
||||||
output_space: Option<String>,
|
output_space: &Option<String>,
|
||||||
volume: Option<f64>,
|
volume: Option<f64>,
|
||||||
view_port: &Option<(Vec<f64>, Vec<f64>)>,
|
view_port: &Option<(Vec<f64>, Vec<f64>)>,
|
||||||
resolution: Option<Vec<u32>>,
|
resolution: &Option<Vec<u32>>,
|
||||||
) -> mercator_db::ResultSet {
|
) -> mercator_db::ResultSet {
|
||||||
let parser = self.filter_parser();
|
let parser = self.filter_parser();
|
||||||
let parse;
|
let parse;
|
||||||
@@ -98,7 +98,7 @@ impl SharedState {
|
|||||||
core: &str,
|
core: &str,
|
||||||
volume: Option<f64>,
|
volume: Option<f64>,
|
||||||
view_port: &Option<(Vec<f64>, Vec<f64>)>,
|
view_port: &Option<(Vec<f64>, Vec<f64>)>,
|
||||||
resolution: Option<Vec<u32>>,
|
resolution: &Option<Vec<u32>>,
|
||||||
) -> mercator_db::ResultSet {
|
) -> mercator_db::ResultSet {
|
||||||
let parser = self.query_parser();
|
let parser = self.query_parser();
|
||||||
let parse;
|
let parse;
|
||||||
|
|||||||
Reference in New Issue
Block a user