[#28] Moved db stuff to own module
parent
91985a1710
commit
0877cc590c
|
@ -0,0 +1,12 @@
|
||||||
|
use super::Street;
|
||||||
|
use crate::errors::FejError;
|
||||||
|
use crate::schema::ivago_streets::dsl::*;
|
||||||
|
use diesel::prelude::*;
|
||||||
|
use diesel::PgConnection;
|
||||||
|
|
||||||
|
pub fn search_streets(db_con: &PgConnection, search_term: &str) -> Result<Vec<Street>, FejError> {
|
||||||
|
Ok(ivago_streets
|
||||||
|
.filter(name.like(search_term))
|
||||||
|
.or_filter(city.like(search_term))
|
||||||
|
.load(db_con)?)
|
||||||
|
}
|
|
@ -1,14 +1,12 @@
|
||||||
use crate::errors::FejError;
|
use crate::errors::FejError;
|
||||||
use crate::schema::ivago_streets::dsl::*;
|
|
||||||
use chrono::DateTime;
|
use chrono::DateTime;
|
||||||
use chrono_tz::Tz;
|
use chrono_tz::Tz;
|
||||||
use diesel::prelude::*;
|
|
||||||
use diesel::PgConnection;
|
|
||||||
use reqwest::blocking as reqwest;
|
use reqwest::blocking as reqwest;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::convert::{From, TryFrom};
|
use std::convert::{From, TryFrom};
|
||||||
|
|
||||||
mod basic_date;
|
mod basic_date;
|
||||||
|
pub mod db;
|
||||||
mod pickup_time;
|
mod pickup_time;
|
||||||
mod street;
|
mod street;
|
||||||
|
|
||||||
|
@ -28,25 +26,19 @@ const CAL_URL: &str = "https://www.ivago.be/nl/particulier/garbage/pick-up/picku
|
||||||
/// # Arguments
|
/// # Arguments
|
||||||
///
|
///
|
||||||
/// * `search_term` - Search term to use to look for streets
|
/// * `search_term` - Search term to use to look for streets
|
||||||
// pub fn search_streets(search_term: &str) -> Result<Vec<Street>, FejError> {
|
pub fn search_streets(search_term: &str) -> Result<Vec<Street>, FejError> {
|
||||||
// let client = reqwest::Client::new();
|
let client = reqwest::Client::new();
|
||||||
// let response = client.get(SEARCH_URL).query(&[("q", search_term)]).send()?;
|
let response = client.get(SEARCH_URL).query(&[("q", search_term)]).send()?;
|
||||||
// let data: Vec<HashMap<String, String>> = response.json()?;
|
let data: Vec<HashMap<String, String>> = response.json()?;
|
||||||
|
|
||||||
// // This is pretty cool, filter_map first does get() on all the maps, and
|
// This is pretty cool, filter_map first does get() on all the maps, and
|
||||||
// // then filters out any None values
|
// then filters out any None values
|
||||||
// // Then, we do the same thing for streets
|
// Then, we do the same thing for streets
|
||||||
// Ok(data
|
Ok(data
|
||||||
// .iter()
|
.iter()
|
||||||
// .filter_map(|m| m.get("value"))
|
.filter_map(|m| m.get("value"))
|
||||||
// .filter_map(|v| Street::try_from(v.as_str()).ok())
|
.filter_map(|v| Street::try_from(v.as_str()).ok())
|
||||||
// .collect())
|
.collect())
|
||||||
// }
|
|
||||||
pub fn search_streets(db_con: &PgConnection, search_term: &str) -> Result<Vec<Street>, FejError> {
|
|
||||||
Ok(ivago_streets
|
|
||||||
.filter(name.like(search_term))
|
|
||||||
.or_filter(city.like(search_term))
|
|
||||||
.load(db_con)?)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the pickup times for the various trash types.
|
/// Returns the pickup times for the various trash types.
|
||||||
|
|
|
@ -55,7 +55,7 @@ fn run_db_migrations(rocket: Rocket) -> Result<Rocket, Rocket> {
|
||||||
let conn = FejDbConn::get_one(&rocket).expect("database connection");
|
let conn = FejDbConn::get_one(&rocket).expect("database connection");
|
||||||
match embedded_migrations::run(&*conn) {
|
match embedded_migrations::run(&*conn) {
|
||||||
Ok(()) => Ok(rocket),
|
Ok(()) => Ok(rocket),
|
||||||
Err(e) => Err(rocket),
|
Err(_) => Err(rocket),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
use crate::FejDbConn;
|
use crate::FejDbConn;
|
||||||
use fej::ivago::{get_pickup_times, search_streets, BasicDate, PickupTime, Street};
|
use fej::ivago::db::search_streets;
|
||||||
|
use fej::ivago::{get_pickup_times, BasicDate, PickupTime, Street};
|
||||||
use rocket::http::Status;
|
use rocket::http::Status;
|
||||||
use rocket_contrib::json::Json;
|
use rocket_contrib::json::Json;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue